From 3adb789f9f11aa486f2323b400ffecaba21da9ca Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 16:18:19 +0000 Subject: [PATCH 01/14] Initial plan From bfb88ea27ca58a63666ca65128747a8ffc376d19 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 16:28:05 +0000 Subject: [PATCH 02/14] Add source files from fabric-1.21.4 branch Co-authored-by: Darker935 <70950705+Darker935@users.noreply.github.com> --- .gitattributes | 6 + .github/ISSUE_TEMPLATE/LAUNCH_ISSUE.yaml | 46 +++ .github/ISSUE_TEMPLATE/bug_report.md | 24 +- .gitignore | 3 +- README.md | 59 +++- build.gradle | 165 ++++++++++ changelog.md | 15 + gradle.properties | 17 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 185 +++++++++++ gradlew.bat | 89 +++++ log4j-dev.xml | 7 + settings.gradle | 12 + .../notalpha/dashloader/CacheFactoryImpl.java | 76 +++++ .../dev/notalpha/dashloader/CacheImpl.java | 221 +++++++++++++ .../dev/notalpha/dashloader/DashLoader.java | 54 ++++ .../notalpha/dashloader/DashObjectClass.java | 78 +++++ .../notalpha/dashloader/api/CachingData.java | 82 +++++ .../dashloader/api/DashEntrypoint.java | 15 + .../notalpha/dashloader/api/DashModule.java | 68 ++++ .../notalpha/dashloader/api/DashObject.java | 38 +++ .../notalpha/dashloader/api/cache/Cache.java | 52 +++ .../dashloader/api/cache/CacheFactory.java | 55 ++++ .../dashloader/api/cache/CacheStatus.java | 19 ++ .../dashloader/api/collection/IntIntList.java | 26 ++ .../api/collection/IntObjectList.java | 26 ++ .../api/collection/ObjectIntList.java | 26 ++ .../api/collection/ObjectObjectList.java | 22 ++ .../api/registry/RegistryAddException.java | 17 + .../api/registry/RegistryReader.java | 18 ++ .../dashloader/api/registry/RegistryUtil.java | 43 +++ .../api/registry/RegistryWriter.java | 19 ++ .../dashloader/client/DashLoaderClient.java | 127 ++++++++ .../dev/notalpha/dashloader/client/Dazy.java | 21 ++ .../dashloader/client/ModMenuCompat.java | 13 + .../dashloader/client/atlas/AtlasModule.java | 83 +++++ .../client/blockstate/DashBlockState.java | 86 +++++ .../client/font/DashBitmapFont.java | 38 +++ .../client/font/DashBitmapFontGlyph.java | 44 +++ .../dashloader/client/font/DashBlankFont.java | 12 + .../client/font/DashFontFilterPair.java | 37 +++ .../dashloader/client/font/DashSpaceFont.java | 37 +++ .../client/font/DashTrueTypeFont.java | 145 +++++++++ .../client/font/DashUnihexFont.java | 51 +++ .../dashloader/client/font/FontModule.java | 115 +++++++ .../client/identifier/DashIdentifier.java | 44 +++ .../identifier/DashModelIdentifier.java | 49 +++ .../identifier/DashSpriteIdentifier.java | 26 ++ .../client/model/DashBasicBakedModel.java | 153 +++++++++ .../client/model/DashMultipartBakedModel.java | 146 +++++++++ .../client/model/DashWeightedBakedModel.java | 82 +++++ .../dashloader/client/model/ModelModule.java | 305 ++++++++++++++++++ .../model/components/BakedQuadCollection.java | 13 + .../model/components/DashBakedQuad.java | 88 +++++ .../components/DashBakedQuadCollection.java | 67 ++++ .../client/model/components/DashMesh.java | 83 +++++ .../components/DashModelBakeSettings.java | 66 ++++ .../components/DashModelTransformation.java | 133 ++++++++ .../components/DashWeightedModelEntry.java | 43 +++ .../fallback/MultiUnbakedBakedModel.java | 29 ++ .../fallback/UnbakedBakedGroupableModel.java | 33 ++ .../model/fallback/UnbakedBakedModel.java | 25 ++ .../model/predicates/BooleanSelector.java | 25 ++ .../model/predicates/DashAndPredicate.java | 61 ++++ .../model/predicates/DashOrPredicate.java | 61 ++++ .../model/predicates/DashSimplePredicate.java | 45 +++ .../model/predicates/DashStaticPredicate.java | 36 +++ .../dashloader/client/shader/DashDefines.java | 35 ++ .../client/shader/DashPostEffectPipeline.java | 44 +++ .../shader/DashShaderProgramDefinition.java | 54 ++++ .../DashShaderProgramDefinitionUniform.java | 42 +++ .../client/shader/DashShaderProgramKey.java | 37 +++ .../client/shader/DashShaderSourceKey.java | 27 ++ .../client/shader/ShaderModule.java | 98 ++++++ .../client/splash/SplashModule.java | 56 ++++ .../client/sprite/content/DashImage.java | 55 ++++ .../client/sprite/content/DashSprite.java | 54 ++++ .../sprite/content/DashSpriteAnimation.java | 67 ++++ .../content/DashSpriteAnimationFrame.java | 44 +++ .../sprite/content/DashSpriteContents.java | 100 ++++++ .../sprite/content/SpriteContentModule.java | 70 ++++ .../sprite/stitch/DashStitchResult.java | 84 +++++ .../client/sprite/stitch/DashTextureSlot.java | 18 ++ .../sprite/stitch/DashTextureStitcher.java | 155 +++++++++ .../sprite/stitch/SpriteStitcherModule.java | 91 ++++++ .../notalpha/dashloader/client/ui/Color.java | 45 +++ .../dashloader/client/ui/ConfigScreen.java | 78 +++++ .../dashloader/client/ui/DrawerUtil.java | 154 +++++++++ .../dashloader/client/ui/toast/DashToast.java | 255 +++++++++++++++ .../client/ui/toast/DashToastState.java | 113 +++++++ .../client/ui/toast/DashToastStatus.java | 7 + .../client/ui/widget/ConfigListWidget.java | 298 +++++++++++++++++ .../notalpha/dashloader/config/Config.java | 17 + .../dashloader/config/ConfigHandler.java | 112 +++++++ .../notalpha/dashloader/config/Option.java | 21 ++ .../dev/notalpha/dashloader/io/IOHelper.java | 151 +++++++++ .../dashloader/io/MappingSerializer.java | 120 +++++++ .../dashloader/io/RegistrySerializer.java | 218 +++++++++++++ .../notalpha/dashloader/io/Serializer.java | 94 ++++++ .../dashloader/io/data/CacheInfo.java | 28 ++ .../dashloader/io/data/ChunkInfo.java | 21 ++ .../io/data/fragment/CacheFragment.java | 24 ++ .../io/data/fragment/ChunkFragment.java | 15 + .../io/data/fragment/FragmentSlice.java | 21 ++ .../io/data/fragment/StageFragment.java | 24 ++ .../io/def/DataUnsafeByteBuffer.java | 14 + .../dashloader/io/def/NativeImageData.java | 13 + .../dashloader/io/def/NativeImageDataDef.java | 93 ++++++ .../dashloader/io/fragment/Fragment.java | 27 ++ .../dashloader/io/fragment/Piece.java | 50 +++ .../dashloader/io/fragment/SimplePiece.java | 22 ++ .../dashloader/io/fragment/SizePiece.java | 17 + .../notalpha/dashloader/misc/HahaManager.java | 84 +++++ .../dashloader/misc/ObjectDumper.java | 115 +++++++ .../dashloader/misc/ProfilerUtil.java | 24 ++ .../dashloader/misc/TranslationHelper.java | 47 +++ .../dashloader/misc/UnsafeHelper.java | 38 +++ .../notalpha/dashloader/misc/UnsafeImage.java | 27 ++ .../dashloader/mixin/MixinPlugin.java | 46 +++ .../AndMultipartModelSelectorAccessor.java | 12 + .../accessor/BasicBakedModelAccessor.java | 25 ++ .../mixin/accessor/BitmapFontAccessor.java | 22 ++ .../accessor/BitmapFontGlyphAccessor.java | 39 +++ .../mixin/accessor/FilterMapAccessor.java | 13 + .../FontManagerProviderIndexAccessor.java | 18 ++ .../mixin/accessor/GlUniformAccessor.java | 30 ++ .../mixin/accessor/IdentifierAccessor.java | 13 + .../mixin/accessor/ModelLoaderAccessor.java | 25 ++ .../accessor/MultipartBakedModelAccessor.java | 24 ++ .../MultipartModelComponentAccessor.java | 12 + .../mixin/accessor/NativeImageAccessor.java | 20 ++ .../OrMultipartModelSelectorAccessor.java | 12 + .../mixin/accessor/ShaderProgramAccessor.java | 61 ++++ .../SimpleMultipartModelSelectorAccessor.java | 14 + .../accessor/SpriteAnimationAccessor.java | 25 ++ .../SpriteAnimationFrameAccessor.java | 20 ++ .../accessor/SpriteContentsAccessor.java | 46 +++ .../mixin/accessor/TrueTypeFontAccessor.java | 35 ++ .../mixin/accessor/UnihexFontAccessor.java | 18 ++ .../accessor/WeightedBakedModelAccessor.java | 13 + .../accessor/ZipResourcePackAccessor.java | 11 + .../ZipWrapperResourcePackAccessor.java | 13 + .../dashloader/mixin/main/BootstrapMixin.java | 26 ++ .../dashloader/mixin/main/KeyboardMixin.java | 47 +++ .../dashloader/mixin/main/MainMixin.java | 26 ++ .../mixin/main/MinecraftClientMixin.java | 34 ++ .../ReloadableResourceManagerImplMixin.java | 57 ++++ .../mixin/main/SplashScreenMixin.java | 105 ++++++ .../mixin/option/WallBlockMixin.java | 166 ++++++++++ .../SplashTextResourceSupplierMixin.java | 36 +++ .../option/cache/SpriteAtlasTextureMixin.java | 94 ++++++ .../cache/font/FontManagerOverride.java | 43 +++ .../cache/font/TrueTypeFontLoaderMixin.java | 36 +++ .../model/BakedModelManagerOverride.java | 61 ++++ .../cache/model/BlockStatesLoaderMixin.java | 29 ++ .../model/MultipartUnbakedModelMixin.java | 24 ++ .../MultipartUnbakedModelSerializedMixin.java | 32 ++ .../cache/shader/ShaderLoaderMixin.java | 68 ++++ .../sprite/content/SpriteOpenerMixin.java | 53 +++ .../stitch/StitchSpriteLoaderMixin.java | 54 ++++ .../misc/AffineTransformationMixin.java | 30 ++ .../mixin/option/misc/MipmapHelperMixin.java | 29 ++ .../option/misc/ModelIdentifierMixin.java | 39 +++ .../dashloader/registry/FactoryBinding.java | 95 ++++++ .../dashloader/registry/MissingHandler.java | 16 + .../registry/RegistryReaderImpl.java | 44 +++ .../registry/RegistryWriterImpl.java | 180 +++++++++++ .../registry/TrackingRegistryWriterImpl.java | 35 ++ .../dashloader/registry/data/ChunkData.java | 50 +++ .../registry/data/ChunkFactory.java | 67 ++++ .../dashloader/registry/data/StageData.java | 30 ++ .../thread/IndexedArrayMapTask.java | 48 +++ .../dashloader/thread/ThreadHandler.java | 78 +++++ src/main/resources/dashloader.accesswidener | 52 +++ src/main/resources/dashloader.mixins.json | 58 ++++ src/main/resources/dashloader/lang/en_us.json | 41 +++ .../resources/dashloader/lang/lol_us.json | 35 ++ src/main/resources/dashloader/lang/sv_se.json | 11 + .../resources/dashloader/textures/icon.png | Bin 0 -> 18600 bytes src/main/resources/fabric.mod.json | 47 +++ 181 files changed, 10047 insertions(+), 24 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/LAUNCH_ISSUE.yaml create mode 100644 build.gradle create mode 100644 changelog.md create mode 100644 gradle.properties create mode 100755 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 log4j-dev.xml create mode 100644 settings.gradle create mode 100644 src/main/java/dev/notalpha/dashloader/CacheFactoryImpl.java create mode 100644 src/main/java/dev/notalpha/dashloader/CacheImpl.java create mode 100644 src/main/java/dev/notalpha/dashloader/DashLoader.java create mode 100644 src/main/java/dev/notalpha/dashloader/DashObjectClass.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/CachingData.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/DashEntrypoint.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/DashModule.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/DashObject.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/cache/Cache.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/cache/CacheFactory.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/cache/CacheStatus.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/collection/IntIntList.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/collection/IntObjectList.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/collection/ObjectIntList.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/collection/ObjectObjectList.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/registry/RegistryAddException.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/registry/RegistryReader.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/registry/RegistryUtil.java create mode 100644 src/main/java/dev/notalpha/dashloader/api/registry/RegistryWriter.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/Dazy.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/font/FontModule.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/identifier/DashIdentifier.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashMesh.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/model/predicates/DashStaticPredicate.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/splash/SplashModule.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/Color.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastStatus.java create mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java create mode 100644 src/main/java/dev/notalpha/dashloader/config/Config.java create mode 100644 src/main/java/dev/notalpha/dashloader/config/ConfigHandler.java create mode 100644 src/main/java/dev/notalpha/dashloader/config/Option.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/IOHelper.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/MappingSerializer.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/RegistrySerializer.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/Serializer.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/data/CacheInfo.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/data/ChunkInfo.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/data/fragment/CacheFragment.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/data/fragment/ChunkFragment.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/data/fragment/FragmentSlice.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/data/fragment/StageFragment.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/def/DataUnsafeByteBuffer.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/def/NativeImageData.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/def/NativeImageDataDef.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/fragment/Fragment.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/fragment/Piece.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/fragment/SimplePiece.java create mode 100644 src/main/java/dev/notalpha/dashloader/io/fragment/SizePiece.java create mode 100644 src/main/java/dev/notalpha/dashloader/misc/HahaManager.java create mode 100644 src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java create mode 100644 src/main/java/dev/notalpha/dashloader/misc/ProfilerUtil.java create mode 100644 src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java create mode 100644 src/main/java/dev/notalpha/dashloader/misc/UnsafeHelper.java create mode 100644 src/main/java/dev/notalpha/dashloader/misc/UnsafeImage.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/MixinPlugin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/IdentifierAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/main/MainMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/misc/MipmapHelperMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java create mode 100644 src/main/java/dev/notalpha/dashloader/registry/FactoryBinding.java create mode 100644 src/main/java/dev/notalpha/dashloader/registry/MissingHandler.java create mode 100644 src/main/java/dev/notalpha/dashloader/registry/RegistryReaderImpl.java create mode 100644 src/main/java/dev/notalpha/dashloader/registry/RegistryWriterImpl.java create mode 100644 src/main/java/dev/notalpha/dashloader/registry/TrackingRegistryWriterImpl.java create mode 100644 src/main/java/dev/notalpha/dashloader/registry/data/ChunkData.java create mode 100644 src/main/java/dev/notalpha/dashloader/registry/data/ChunkFactory.java create mode 100644 src/main/java/dev/notalpha/dashloader/registry/data/StageData.java create mode 100644 src/main/java/dev/notalpha/dashloader/thread/IndexedArrayMapTask.java create mode 100644 src/main/java/dev/notalpha/dashloader/thread/ThreadHandler.java create mode 100644 src/main/resources/dashloader.accesswidener create mode 100644 src/main/resources/dashloader.mixins.json create mode 100644 src/main/resources/dashloader/lang/en_us.json create mode 100644 src/main/resources/dashloader/lang/lol_us.json create mode 100644 src/main/resources/dashloader/lang/sv_se.json create mode 100644 src/main/resources/dashloader/textures/icon.png create mode 100644 src/main/resources/fabric.mod.json diff --git a/.gitattributes b/.gitattributes index e69de29b..00a51aff 100644 --- a/.gitattributes +++ b/.gitattributes @@ -0,0 +1,6 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# These are explicitly windows files and should use crlf +*.bat text eol=crlf + diff --git a/.github/ISSUE_TEMPLATE/LAUNCH_ISSUE.yaml b/.github/ISSUE_TEMPLATE/LAUNCH_ISSUE.yaml new file mode 100644 index 00000000..27dc5383 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/LAUNCH_ISSUE.yaml @@ -0,0 +1,46 @@ +name: Launching Issue +description: Create an issue about your game failing to load/cache +title: "[LAUNCH]: " +labels: ["type: bug", "status: idle"] +body: + - type: markdown + attributes: + value: | + Thank you for reporting an issue about DashLoader, we care a lot about our mod and enjoy fixing every bug. + - type: input + id: version + attributes: + label: Version + description: What version of DashLoader are you running? + placeholder: 5.0.0-alpha.3 + validations: + required: true + - type: input + id: mc-version + attributes: + label: Minecraft Version + description: What Minecraft version are you using? + placeholder: 1.19.3 + validations: + required: true + - type: markdown + attributes: + value: | + Please provide **THE ENTIRE LOG** as the crashlogs don't contain much information about DashLoader. + Use a website like https://mclo.gs/ to upload logs. + Preferably we want a log for when you create the cache (The popup at the top left is present) and another log for when DashLoader loads the cache. + - type: input + id: logs + attributes: + label: Entire Logs + description: Link to the logs. + placeholder: https://mclo.gs/5K0ChKa + validations: + required: true + - type: textarea + id: extra + attributes: + label: Additional Notes + description: Anything else you want to add? + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 50d0ca35..3dc2d914 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,8 +1,8 @@ --- name: Bug report -about: Create a report for a DashLoader issue -title: "[ISSUE]: " -labels: bug +about: Create a report to help us improve +title: '' +labels: '' assignees: '' --- @@ -12,10 +12,10 @@ A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: -1. Add '...' mods -2. Launch the game -3. Join '....' world -4. Press '....' stuff +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error **Expected behavior** A clear and concise description of what you expected to happen. @@ -23,13 +23,9 @@ A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. -**Info (please complete the following information):** - - DashLoader: [e.g. 3.0-pr1] - - Minecraft: [e.g. 1.17.1, 1.18] - - Mods [e.g. Fabric API, Better End] - -**Full crash log (if relevant)** -https://pastebin.com/ ... +**Context (please complete the following information):** + - DashLoader Version [e.g. 3.0-rc14] + - Minecraft Version [e.g. 1.18.1] **Additional context** Add any other context about the problem here. diff --git a/.gitignore b/.gitignore index c733d8ff..78ca1597 100644 --- a/.gitignore +++ b/.gitignore @@ -31,4 +31,5 @@ bin/ # Ignore Gradle build output directory build -/run/ +run/ +upload.sh diff --git a/README.md b/README.md index 31e1a03d..7d9b46b2 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,50 @@ -# DashLoader-Definition -Launch Minecraft at the speed of light. - -All of the source code is present in version dependant branches. - -For the core framework go to https://github.com/QuantumFusionMC/DashLoader-Core - -![image](https://user-images.githubusercontent.com/24830855/150510945-16b1f45e-3296-41f5-a7cc-4f91c9b4debe.png) -DashLoader's performance is highly aided by the [YourKit Java Profiler](https://www.curseforge.com/linkout?remoteUrl=https%253a%252f%252fwww.yourkit.com%252fjava%252fprofiler%252f) which helps us greatly with keeping standards high and load times low. +# DashLoader Github +Welcome to the codebase where DashLoader lives! Please report any issues you find with DashLoader here. +
+

+ + Description +
+ This mod accelerates the Minecraft Asset Loading system by caching all of its content, This leads to a much faster + game load. + It does this by caching all of its content on first launch and on next launch loading back that exact cache. + The cache loading is hyper fast and scalable which utilises your entire system. +


+ Important notes: + +

• The first time your launch DashLoader it will be significantly slower. + Because it needs to create a cache which contains all the assets minecraft normally loads. + This will also happen every time you change a mod/resourcepack if that configuration does not have an existing + cache. + +

• DashLoader has been known to be incompatible with a lot of mods. + DashLoader 3.0 has massively improved compatibility by not forcing mod developers to add explicit support to make + their assets cachable. + This means that DashLoader will load assets normally for mod assets that cannot be cached. + While this improves mod compatibility it hurts speed as the minecraft loading system is quite slow. + +

• If you use DashLoader for Developing mods or creating resource packs you can press + f3 + t to recreate the cache to load your new assets in. + If you want to just show off the speed of DashLoader you can press shift + f3 + t +


+ + Community +
+ Discord + + Sponsors +
+ YourKit + Makes amazing profilers for both Java and .NET. + We use their Java Profiler to understand where to optimize further and make DashLoader faster. +
+ JetBrains + Creates excellent IDEs for all programmers and have provided us with access to their enterprise products for use to + develop DashLoader and Hyphen. + + Donate +
+ I have a Ko-Fi page if you would like to Support me.
+ Please only support me if you like what I do, and you are not in a bad financial situation to do so. +

+
diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..f45ae457 --- /dev/null +++ b/build.gradle @@ -0,0 +1,165 @@ +plugins { + // Publishing + id 'com.matthewprenger.cursegradle' version '1.4.0' + id "com.modrinth.minotaur" version "2.+" + + id 'fabric-loom' version '1.9-SNAPSHOT' + id 'maven-publish' +} + +sourceCompatibility = JavaVersion.VERSION_21 +targetCompatibility = JavaVersion.VERSION_21 + +archivesBaseName = project.archives_base_name +version = project.mod_version +group = project.maven_group + +repositories { + mavenCentral() + mavenLocal() + maven { + url 'https://jitpack.io' + } + maven { + url "https://notalpha.dev/maven/releases" + } + maven { + name = "Terraformers" + url = "https://maven.terraformersmc.com/" + } + maven { + name = "Nucleoid" + url = "https://maven.nucleoid.xyz/" + } +} + +loom { + accessWidenerPath = file("src/main/resources/dashloader.accesswidener") + log4jConfigs.from(file("log4j-dev.xml")) +} + +dependencies { + // To change the versions see the gradle.properties file + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + + modImplementation "com.terraformersmc:modmenu:${project.modmenu_version}" + + implementation "dev.notalpha:Hyphen:0.4.0-rc.5" + include "dev.notalpha:Hyphen:0.4.0-rc.5" + + implementation "dev.notalpha:Taski:2.1.0" + include "dev.notalpha:Taski:2.1.0" + + implementation 'com.github.luben:zstd-jni:1.5.7-1' + include 'com.github.luben:zstd-jni:1.5.7-1' + + modCompileOnly fabricApi.module("fabric-renderer-indigo", project.fabric_version) + + // For Modmenu + modRuntimeOnly fabricApi.module("fabric-api-base", project.fabric_version) + modRuntimeOnly fabricApi.module("fabric-key-binding-api-v1", project.fabric_version) + modRuntimeOnly fabricApi.module("fabric-lifecycle-events-v1", project.fabric_version) + modRuntimeOnly fabricApi.module("fabric-resource-loader-v0", project.fabric_version) + modRuntimeOnly fabricApi.module("fabric-screen-api-v1", project.fabric_version) +} + +test { + useJUnitPlatform() + testLogging { + events "passed", "skipped", "failed" + } +} + +processResources { + inputs.property "version", project.version + + filesMatching("fabric.mod.json") { + expand "version": project.version + } +} + +tasks.withType(JavaCompile).configureEach { + // ensure that the encoding is set to UTF-8, no matter what the system default is + // this fixes some edge cases with special characters not displaying correctly + // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html + // If Javadoc is generated, this must be specified in that task too. + it.options.encoding = "UTF-8" + + // Minecraft 1.17 (21w19a) upwards uses Java 16. + it.options.release = 21 +} + +java { + //include sources in maven publish + withSourcesJar() +} + +jar { + from("LICENSE") { + rename { "${it}_${project.archivesBaseName}" } + } +} + +// Publishing +modrinth { + token = project.hasProperty("modrinthApiKey") ? project.modrinthApiKey : "" + projectId = 'ZfQ3kTvR' + changelog = file("changelog.md").getText() + versionNumber = project.version + versionName = "$project.version".split("\\+")[0] + " for $project.minecraft_version" + uploadFile = remapJar + versionType = "beta" + gameVersions = ['1.21.4'] + loaders = ['fabric', 'quilt'] +} + +curseforge { + apiKey = project.hasProperty("curseForgeApiKey") ? project.curseForgeApiKey : "" + project { + id = '472772' + changelogType = "markdown" + changelog = file("changelog.md") + releaseType = 'beta' + + addGameVersion "1.21.4" + addGameVersion "Fabric" + addGameVersion "Quilt" + addGameVersion "Java 21" + + mainArtifact(remapJar) { + displayName = "$project.version".split("\\+")[0] + " for $project.minecraft_version" + } + } + options { + forgeGradleIntegration = false + } +} + +tasks.register("publishMod") { + dependsOn 'modrinth' + dependsOn 'curseforge' +} + +tasks.register("getVersion") { + print("$project.version") +} + +publishing { + repositories { + maven { + name = "notalpha" + url = "https://notalpha.dev/maven/releases" + credentials(PasswordCredentials) + authentication { + basic(BasicAuthentication) + } + } + } + publications { + maven(MavenPublication) { + from components.java + } + } +} diff --git a/changelog.md b/changelog.md new file mode 100644 index 00000000..71aff189 --- /dev/null +++ b/changelog.md @@ -0,0 +1,15 @@ +# Fixes + +- Cache reading logic +- Vulkan mod compatibility +- Transparent textures rendering as opaque with sodium with feature `CacheSpriteContents` +- Possible memory leak in atlas caching module +- Ignore sprites with duplicate IDs + +# Features + +- Tweaked config screen + +# Internal + +- Removed `Sonatype Snapshots` maven diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..38cf8b9d --- /dev/null +++ b/gradle.properties @@ -0,0 +1,17 @@ +# Hello this is Froge. I like QuantumFusion and anyone who uses DashLoader. :heart: from !alpha, Froge and the QuantumFusion team. +# Current Minecraft Properties +org.gradle.jvmargs=-Xmx2560m + +minecraft_version=1.21.4 +yarn_mappings=1.21.4+build.8 +loader_version=0.16.14 +loom_version=1.11-SNAPSHOT + +fabric_version=0.119.3+1.21.4 +# Dependencies +modmenu_version=13.0.3 + +# Mod Properties +mod_version=5.1.0-beta.8+1.21.4 +maven_group=dev.notalpha +archives_base_name=dashloader diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100755 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..e48eca57 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 00000000..744e882e --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or 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 UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$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 "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# 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" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..107acd32 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@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%" == "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%"=="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! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/log4j-dev.xml b/log4j-dev.xml new file mode 100644 index 00000000..f198f04f --- /dev/null +++ b/log4j-dev.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..8a88f8db --- /dev/null +++ b/settings.gradle @@ -0,0 +1,12 @@ +pluginManagement { + repositories { + mavenCentral() + gradlePluginPortal() + maven { + name "Fabric" + url "https://maven.fabricmc.net" + } + } +} + +rootProject.name = 'dashloader' diff --git a/src/main/java/dev/notalpha/dashloader/CacheFactoryImpl.java b/src/main/java/dev/notalpha/dashloader/CacheFactoryImpl.java new file mode 100644 index 00000000..2b0cd37e --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/CacheFactoryImpl.java @@ -0,0 +1,76 @@ +package dev.notalpha.dashloader; + +import dev.notalpha.dashloader.api.DashModule; +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheFactory; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.registry.MissingHandler; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.function.BiFunction; + +public class CacheFactoryImpl implements CacheFactory { + private static final Logger LOGGER = LogManager.getLogger("CacheFactory"); + private final List> dashObjects; + private final List> modules; + private final List> missingHandlers; + private boolean failed = false; + + public CacheFactoryImpl() { + this.dashObjects = new ArrayList<>(); + this.modules = new ArrayList<>(); + this.missingHandlers = new ArrayList<>(); + } + + @Override + public void addDashObject(Class> dashClass) { + final Class[] interfaces = dashClass.getInterfaces(); + if (interfaces.length == 0) { + LOGGER.error("No DashObject interface found. Class: {}", dashClass.getSimpleName()); + this.failed = true; + return; + } + this.dashObjects.add(new DashObjectClass<>(dashClass)); + } + + @Override + public void addModule(DashModule module) { + this.modules.add(module); + } + + @Override + public void addMissingHandler(Class rClass, BiFunction> func) { + this.missingHandlers.add(new MissingHandler<>(rClass, func)); + } + + @Override + public Cache build(Path cacheDir) { + if (this.failed) { + throw new RuntimeException("Failed to initialize the API"); + } + + // Set dashobject ids + this.dashObjects.sort(Comparator.comparing(o -> o.getDashClass().getName())); + this.modules.sort(Comparator.comparing(o -> o.getDataClass().getName())); + + int id = 0; + Class lastClass = null; + for (DashObjectClass dashObject : this.dashObjects) { + if (dashObject.getDashClass() == lastClass) { + DashLoader.LOG.warn("Duplicate DashObject found: {}", dashObject.getDashClass()); + continue; + } + lastClass = dashObject.getDashClass(); + dashObject.dashObjectId = id; + id += 1; + } + + return new CacheImpl(cacheDir.resolve(DashLoader.MOD_HASH + "/"), modules, dashObjects, this.missingHandlers); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/CacheImpl.java b/src/main/java/dev/notalpha/dashloader/CacheImpl.java new file mode 100644 index 00000000..96e0acf9 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/CacheImpl.java @@ -0,0 +1,221 @@ +package dev.notalpha.dashloader; + +import dev.notalpha.dashloader.api.DashModule; +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.io.MappingSerializer; +import dev.notalpha.dashloader.io.RegistrySerializer; +import dev.notalpha.dashloader.io.data.CacheInfo; +import dev.notalpha.dashloader.misc.ProfilerUtil; +import dev.notalpha.dashloader.registry.MissingHandler; +import dev.notalpha.dashloader.registry.RegistryReaderImpl; +import dev.notalpha.dashloader.registry.RegistryWriterImpl; +import dev.notalpha.dashloader.registry.data.StageData; +import dev.notalpha.taski.builtin.StepTask; +import org.apache.commons.io.FileUtils; +import org.jetbrains.annotations.Nullable; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; +import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.attribute.FileTime; +import java.util.List; +import java.util.function.Consumer; +import java.util.stream.Stream; + +public final class CacheImpl implements Cache { + private static final String METADATA_FILE_NAME = "metadata.bin"; + private final Path cacheDir; + // DashLoader metadata + private final List> cacheHandlers; + private final List> dashObjects; + private final List> missingHandlers; + // Serializers + private final RegistrySerializer registrySerializer; + private final MappingSerializer mappingsSerializer; + private CacheStatus status; + private String hash; + + CacheImpl(Path cacheDir, List> cacheHandlers, List> dashObjects, List> missingHandlers) { + this.cacheDir = cacheDir; + this.cacheHandlers = cacheHandlers; + this.dashObjects = dashObjects; + this.missingHandlers = missingHandlers; + this.registrySerializer = new RegistrySerializer(dashObjects); + this.mappingsSerializer = new MappingSerializer(cacheHandlers); + } + + public void load(String name) { + this.hash = name; + + if (this.exists()) { + this.setStatus(CacheStatus.LOAD); + this.loadCache(); + } else { + this.setStatus(CacheStatus.SAVE); + } + } + + public boolean save(@Nullable Consumer taskConsumer) { + if (status != CacheStatus.SAVE) { + throw new RuntimeException("Status is not SAVE"); + } + DashLoader.LOG.info("Starting DashLoader Caching"); + try { + + Path ourDir = getDir(); + + // Max caches + int maxCaches = ConfigHandler.INSTANCE.config.maxCaches; + if (maxCaches != -1) { + DashLoader.LOG.info("Checking for cache count."); + try { + FileTime oldestTime = null; + Path oldestPath = null; + int cacheCount = 1; + try (Stream stream = Files.list(cacheDir)) { + for (Path path : stream.toList()) { + if (!Files.isDirectory(path)) { + continue; + } + + if (path.equals(ourDir)) { + continue; + } + cacheCount += 1; + + try { + BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class); + FileTime lastAccessTime = attrs.lastAccessTime(); + if (oldestTime == null || lastAccessTime.compareTo(oldestTime) < 0) { + oldestTime = lastAccessTime; + oldestPath = path; + } + } catch (IOException e) { + DashLoader.LOG.warn("Could not find access time for cache.", e); + } + } + } + + if (oldestPath != null && cacheCount > maxCaches) { + DashLoader.LOG.info("Removing {} as we are currently above the maximum caches.", oldestPath); + if (!FileUtils.deleteQuietly(oldestPath.toFile())) { + DashLoader.LOG.error("Could not remove cache {}", oldestPath); + } + } + } catch (NoSuchFileException ignored) { + } catch (IOException io) { + DashLoader.LOG.error("Could not enforce maximum cache ", io); + } + } + + long start = System.currentTimeMillis(); + + StepTask main = new StepTask("save", 2); + if (taskConsumer != null) { + taskConsumer.accept(main); + } + + RegistryWriterImpl factory = RegistryWriterImpl.create(missingHandlers, dashObjects); + + // Mappings + mappingsSerializer.save(ourDir, factory, cacheHandlers, main); + main.next(); + + // serialization + main.run(new StepTask("serialize", 2), (task) -> { + try { + CacheInfo info = this.registrySerializer.serialize(ourDir, factory, task::setSubTask); + task.next(); + DashLoader.METADATA_SERIALIZER.save(ourDir.resolve(METADATA_FILE_NAME), new StepTask("hi"), info); + } catch (IOException e) { + throw new RuntimeException(e); + } + task.next(); + }); + + DashLoader.LOG.info("Saved cache in {}", ProfilerUtil.getTimeStringFromStart(start)); + return true; + } catch (Throwable thr) { + DashLoader.LOG.error("Failed caching", thr); + this.setStatus(CacheStatus.SAVE); + this.remove(); + return false; + } + } + + private void loadCache() { + if (status != CacheStatus.LOAD) { + throw new RuntimeException("Status is not LOAD"); + } + + long start = System.currentTimeMillis(); + try { + StepTask task = new StepTask("Loading DashCache", 3); + Path cacheDir = getDir(); + + // Get metadata + Path metadataPath = cacheDir.resolve(METADATA_FILE_NAME); + CacheInfo info = DashLoader.METADATA_SERIALIZER.load(metadataPath); + + // File reading + StageData[] stageData = registrySerializer.deserialize(cacheDir, info, dashObjects); + RegistryReaderImpl reader = new RegistryReaderImpl(info, stageData); + + // Exporting assets + task.run(() -> reader.export(task::setSubTask)); + + // Loading mappings + if (!mappingsSerializer.load(cacheDir, reader, cacheHandlers)) { + this.setStatus(CacheStatus.SAVE); + this.remove(); + return; + } + + DashLoader.LOG.info("Loaded cache in {}", ProfilerUtil.getTimeStringFromStart(start)); + } catch (Exception e) { + DashLoader.LOG.error("Summoned CrashLoader in {}", ProfilerUtil.getTimeStringFromStart(start), e); + this.setStatus(CacheStatus.SAVE); + this.remove(); + } + } + + public boolean exists() { + return Files.exists(this.getDir()); + } + + public void remove() { + try { + FileUtils.deleteDirectory(this.getDir().toFile()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void reset() { + this.setStatus(CacheStatus.IDLE); + } + + public Path getDir() { + if (hash == null) { + throw new RuntimeException("Cache hash has not been set."); + } + return cacheDir.resolve(hash + "/"); + } + + public CacheStatus getStatus() { + return status; + } + + private void setStatus(CacheStatus status) { + if (this.status != status) { + this.status = status; + DashLoader.LOG.info("\u001B[46m\u001B[30m DashLoader Status change {}\n\u001B[0m", status); + this.cacheHandlers.forEach(handler -> handler.reset(this)); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/DashLoader.java b/src/main/java/dev/notalpha/dashloader/DashLoader.java new file mode 100644 index 00000000..84802bc5 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/DashLoader.java @@ -0,0 +1,54 @@ +package dev.notalpha.dashloader; + +import dev.notalpha.dashloader.io.Serializer; +import dev.notalpha.dashloader.io.data.CacheInfo; +import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.ModContainer; +import net.fabricmc.loader.api.metadata.ModMetadata; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.ArrayList; +import java.util.Comparator; + +public final class DashLoader { + public static final Logger LOG = LogManager.getLogger("DashLoader"); + public static final Serializer METADATA_SERIALIZER = new Serializer<>(CacheInfo.class); + public static final String MOD_HASH; + private static final String VERSION = FabricLoader.getInstance() + .getModContainer("dashloader") + .orElseThrow(() -> new IllegalStateException("DashLoader not found... apparently! WTF?")) + .getMetadata() + .getVersion() + .getFriendlyString(); + + static { + ArrayList versions = new ArrayList<>(); + for (ModContainer mod : FabricLoader.getInstance().getAllMods()) { + ModMetadata metadata = mod.getMetadata(); + versions.add(metadata); + } + + versions.sort(Comparator.comparing(ModMetadata::getId)); + + StringBuilder stringBuilder = new StringBuilder(); + for (int i = 0; i < versions.size(); i++) { + ModMetadata metadata = versions.get(i); + stringBuilder.append(i).append("$").append(metadata.getId()).append('&').append(metadata.getVersion().getFriendlyString()); + } + + MOD_HASH = DigestUtils.md5Hex(stringBuilder.toString()).toUpperCase(); + } + + private DashLoader() { + LOG.info("Initializing DashLoader {}.", VERSION); + if (FabricLoader.getInstance().isDevelopmentEnvironment()) { + LOG.warn("DashLoader launched in dev."); + } + } + + @SuppressWarnings("EmptyMethod") + public static void bootstrap() { + } +} diff --git a/src/main/java/dev/notalpha/dashloader/DashObjectClass.java b/src/main/java/dev/notalpha/dashloader/DashObjectClass.java new file mode 100644 index 00000000..74b4c3a4 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/DashObjectClass.java @@ -0,0 +1,78 @@ +package dev.notalpha.dashloader; + +import dev.notalpha.dashloader.api.DashObject; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; + +/** + * A DashObject which is an object with adds Dash support to a target object.
+ * This class is very lazy as reflection is really slow + * + * @param Raw + * @param Dashable + */ +public final class DashObjectClass> { + private final Class dashClass; + int dashObjectId; + @Nullable + private Class targetClass; + + public DashObjectClass(Class dashClass) { + //noinspection unchecked + this.dashClass = (Class) dashClass; + } + + public Class getDashClass() { + return this.dashClass; + } + + // lazy + @NotNull + public Class getTargetClass() { + if (this.targetClass == null) { + Type[] genericInterfaces = this.dashClass.getGenericInterfaces(); + if (genericInterfaces.length == 0) { + throw new RuntimeException(this.dashClass + " does not implement DashObject."); + } + + boolean foundDashObject = false; + Class[] interfaces = this.dashClass.getInterfaces(); + for (int i = 0; i < interfaces.length; i++) { + if (interfaces[i] == DashObject.class) { + foundDashObject = true; + var genericInterface = genericInterfaces[i]; + if (genericInterface instanceof ParameterizedType targetClass) { + if (targetClass.getActualTypeArguments()[0] instanceof Class targetClass2) { + this.targetClass = (Class) targetClass2; + } else { + throw new RuntimeException(this.dashClass + " has a non resolvable DashObject parameter"); + } + } else { + throw new RuntimeException(this.dashClass + " implements raw DashObject"); + } + } + } + + if (!foundDashObject) { + throw new RuntimeException(this.dashClass + " must implement DashObject"); + } + } + return this.targetClass; + } + + public int getDashObjectId() { + return dashObjectId; + } + + @Override + public String toString() { + return "DashObjectClass{" + + "dashClass=" + dashClass + + ", targetClass=" + targetClass + + ", dashObjectId=" + dashObjectId + + '}'; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/api/CachingData.java b/src/main/java/dev/notalpha/dashloader/api/CachingData.java new file mode 100644 index 00000000..db89eb13 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/CachingData.java @@ -0,0 +1,82 @@ +package dev.notalpha.dashloader.api; + +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Consumer; +import java.util.function.Supplier; + +public class CachingData { + @Nullable + private final CacheStatus onlyOn; + @Nullable + private D data; + private Cache cacheManager; + @Nullable + private CacheStatus dataStatus; + + public CachingData(@Nullable CacheStatus onlyOn) { + this.data = null; + this.onlyOn = onlyOn; + } + + public CachingData() { + this(null); + } + + public void visit(CacheStatus status, Consumer consumer) { + if (this.active(status)) { + consumer.accept(this.data); + } + } + + /** + * Gets the value or returns null if its status does not match the current state. + **/ + public @Nullable D get(CacheStatus status) { + if (this.active(status)) { + return this.data; + } + return null; + } + + public void reset(Cache cacheManager, @NotNull D data) { + reset(cacheManager, () -> data); + } + + public void reset(Cache cacheManager, Supplier<@NotNull D> data) { + this.cacheManager = cacheManager; + set(cacheManager.getStatus(), data); + } + + public void set(CacheStatus status, @NotNull D data) { + set(status, () -> data); + } + + /** + * Sets the optional data to the intended status + **/ + public void set(CacheStatus status, Supplier<@NotNull D> data) { + if (onlyOn != null && onlyOn != status) { + this.data = null; + this.dataStatus = null; + return; + } + + if (cacheManager == null) { + throw new RuntimeException("cacheManager is null. This OptionData has never been reset in its handler."); + } + + CacheStatus currentStatus = cacheManager.getStatus(); + if (status == currentStatus) { + this.dataStatus = status; + this.data = data.get(); + } + } + + public boolean active(CacheStatus status) { + return status == this.dataStatus && status == cacheManager.getStatus() && this.data != null && (onlyOn == null || onlyOn == status); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/api/DashEntrypoint.java b/src/main/java/dev/notalpha/dashloader/api/DashEntrypoint.java new file mode 100644 index 00000000..00a2f712 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/DashEntrypoint.java @@ -0,0 +1,15 @@ +package dev.notalpha.dashloader.api; + +import dev.notalpha.dashloader.api.cache.CacheFactory; + +/** + * The DashEntrypoint allows operations on the DashLoader Minecraft cache, like adding support to external DashObjects, Modules or MissingHandlers. + */ +public interface DashEntrypoint { + /** + * Runs on DashLoader initialization. This is quite early compared to the cache. + * + * @param factory Factory to register your DashObjects/Modules to. + */ + void onDashLoaderInit(CacheFactory factory); +} diff --git a/src/main/java/dev/notalpha/dashloader/api/DashModule.java b/src/main/java/dev/notalpha/dashloader/api/DashModule.java new file mode 100644 index 00000000..62cbe660 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/DashModule.java @@ -0,0 +1,68 @@ +package dev.notalpha.dashloader.api; + +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.taski.builtin.StepTask; + +/** + * A DashModule is a manager of data in a Cache. + * It's responsible for providing and consuming objects from/to the registry and saving the resulting id's and/or other data into the data class. + *

+ * These may conditionally be disabled by {@link DashModule#isActive()}. + * + * @param The Data class which will be saved + */ +public interface DashModule { + /** + * This runs when the module gets reset by dashloader. + * This is used to reset CachingData instances to their correct state. + * + * @param cache The cache object which is resetting. + */ + void reset(Cache cache); + + /** + * Runs when DashLoader is creating a save. + * This should fill the RegistryFactory with objects that it wants available on next load. + * + * @param writer RegistryWriter to provide objects to. + * @param task Task to track progress of the saving. + * @return The DataObject which will be saved for next load. + */ + D save(RegistryWriter writer, StepTask task); + + /** + * Runs when DashLoader is loading back a save. + * This should read back the objects from the RegistryReading with the ids commonly saved in the DataObject. + * + * @param data DataObject which got saved in {@link DashModule#save(RegistryWriter, StepTask)} + * @param reader RegistryReader which contains objects which got cached. + * @param task Task to track progress of the loading. + */ + void load(D data, RegistryReader reader, StepTask task); + + /** + * Gets the DataClass which the module uses to save data for the cache load. + */ + Class getDataClass(); + + /** + * Returns if the module is currently active. + *

+ * When saving, if the module is active it will run the save method and then save the data object to the cache. + *

+ * When loading back the cache. If the cache did not have the module in the same state as now, it will force a recache. + */ + default boolean isActive() { + return true; + } + + /** + * The weight of the module in the progress task. + * The bigger the value the more space the module will use in the progress. + */ + default float taskWeight() { + return 100; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/api/DashObject.java b/src/main/java/dev/notalpha/dashloader/api/DashObject.java new file mode 100644 index 00000000..bc835637 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/DashObject.java @@ -0,0 +1,38 @@ +package dev.notalpha.dashloader.api; + +import dev.notalpha.dashloader.api.registry.RegistryReader; + +/** + * A DashObject is responsible for making normal objects serializable + * by mapping them to a more serializable format and deduplicating inner objects through the registry. + * + * @param The target object which it's adding support to. + */ +@SuppressWarnings("unused") +public interface DashObject { + /** + * Runs before export on the main thread. + * + * @see DashObject#export(RegistryReader) + */ + @SuppressWarnings("unused") + default void preExport(RegistryReader reader) { + } + + /** + * The export method converts the DashObject into the original counterpart which was provided on save. + *

+ * Note: This runs in parallel meaning that it does not run on the Main thread. If you need to load things on the main thread use {@link DashObject#postExport(RegistryReader)} + */ + @SuppressWarnings("unused") + O export(RegistryReader reader); + + /** + * Runs after export on the main thread. + * + * @see DashObject#export(RegistryReader) + */ + @SuppressWarnings("unused") + default void postExport(RegistryReader reader) { + } +} diff --git a/src/main/java/dev/notalpha/dashloader/api/cache/Cache.java b/src/main/java/dev/notalpha/dashloader/api/cache/Cache.java new file mode 100644 index 00000000..71253f50 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/cache/Cache.java @@ -0,0 +1,52 @@ +package dev.notalpha.dashloader.api.cache; + +import dev.notalpha.taski.builtin.StepTask; +import org.jetbrains.annotations.Nullable; + +import java.nio.file.Path; +import java.util.function.Consumer; + +/** + * The Cache is responsible for managing, saving and loading caches from its assigned directory. + * + * @see CacheFactory + */ +public interface Cache { + /** + * Attempt to load the DashLoader cache with the current name if it exists, + * else it will set the cache into SAVE status and reset managers to be ready for caching. + * + * @param name The cache name which will be used. + */ + void load(String name); + + /** + * Create and save a cache from the modules which are currently enabled. + * + * @param taskConsumer An optional task function which allows you to track the progress. + * @return If the cache creation was successful + */ + boolean save(@Nullable Consumer taskConsumer); + + /** + * Resets the cache into an IDLE state where it resets the cache storages to save memory. + */ + void reset(); + + /** + * Remove the existing cache if it exists. + */ + void remove(); + + /** + * Gets the current status or state of the Cache. + */ + CacheStatus getStatus(); + + /** + * Gets the current directory of the cache. + * + * @return Path to the cache directory which contains the data. + */ + Path getDir(); +} diff --git a/src/main/java/dev/notalpha/dashloader/api/cache/CacheFactory.java b/src/main/java/dev/notalpha/dashloader/api/cache/CacheFactory.java new file mode 100644 index 00000000..e8a7b23a --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/cache/CacheFactory.java @@ -0,0 +1,55 @@ +package dev.notalpha.dashloader.api.cache; + +import dev.notalpha.dashloader.CacheFactoryImpl; +import dev.notalpha.dashloader.api.DashModule; +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryWriter; + +import java.nio.file.Path; +import java.util.function.BiFunction; + +/** + * The CacheFactory is used to construct a {@link Cache} + */ +public interface CacheFactory { + /** + * Creates a new Factory + * + * @return CacheFactory + */ + static CacheFactory create() { + return new CacheFactoryImpl(); + } + + /** + * Adds a DashObject to the Cache, this will allow the Cache to cache the DashObject's target. + * + * @param dashClass The class + */ + void addDashObject(Class> dashClass); + + /** + * Adds a module to the Cache. Please note only enabled Modules will actually be cached. + */ + void addModule(DashModule module); + + /** + * Adds a missing handler to the Cache, a missing handler is used when an Object does not have a DashObject directly bound to it. + * The registry will go through every missing handler until it finds one which does not return {@code null}. + * + * @param rClass The class which the object needs to implement. + * If you want to go through any object you can insert {@code Object.class} because every java object inherits this. + * @param func The consumer function for an object which fits the {@code rClass}. + * If this function returns a non-null value, it will use that DashObject for serialization of that object. + * @param The super class of the objects being missed. + */ + void addMissingHandler(Class rClass, BiFunction> func); + + /** + * Builds the cache object. + * + * @param path The directory which contains the caches. + * @return A DashLoader cache object. + */ + Cache build(Path path); +} diff --git a/src/main/java/dev/notalpha/dashloader/api/cache/CacheStatus.java b/src/main/java/dev/notalpha/dashloader/api/cache/CacheStatus.java new file mode 100644 index 00000000..02c7b5d6 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/cache/CacheStatus.java @@ -0,0 +1,19 @@ +package dev.notalpha.dashloader.api.cache; + +/** + * Status/State values for a given Cache. + */ +public enum CacheStatus { + /** + * The cache is in an IDLE state where there are no temporary resources in memory. + */ + IDLE, + /** + * The Cache is loading back an existing cache from a file. + */ + LOAD, + /** + * The Cache is trying to create/save a cache. + */ + SAVE, +} diff --git a/src/main/java/dev/notalpha/dashloader/api/collection/IntIntList.java b/src/main/java/dev/notalpha/dashloader/api/collection/IntIntList.java new file mode 100644 index 00000000..6a82ada4 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/collection/IntIntList.java @@ -0,0 +1,26 @@ +package dev.notalpha.dashloader.api.collection; + +import java.util.ArrayList; +import java.util.List; + +public record IntIntList(List list) { + public IntIntList() { + this(new ArrayList<>()); + } + + public void put(int key, int value) { + this.list.add(new IntInt(key, value)); + } + + public void forEach(IntIntConsumer c) { + this.list.forEach(v -> c.accept(v.key, v.value)); + } + + @FunctionalInterface + public interface IntIntConsumer { + void accept(int key, int value); + } + + public record IntInt(int key, int value) { + } +} diff --git a/src/main/java/dev/notalpha/dashloader/api/collection/IntObjectList.java b/src/main/java/dev/notalpha/dashloader/api/collection/IntObjectList.java new file mode 100644 index 00000000..46f7104c --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/collection/IntObjectList.java @@ -0,0 +1,26 @@ +package dev.notalpha.dashloader.api.collection; + +import java.util.ArrayList; +import java.util.List; + +public record IntObjectList(List> list) { + public IntObjectList() { + this(new ArrayList<>()); + } + + public void put(int key, V value) { + this.list.add(new IntObjectEntry<>(key, value)); + } + + public void forEach(IntObjectConsumer c) { + this.list.forEach(v -> c.accept(v.key, v.value)); + } + + @FunctionalInterface + public interface IntObjectConsumer { + void accept(int key, V value); + } + + public record IntObjectEntry(int key, V value) { + } +} diff --git a/src/main/java/dev/notalpha/dashloader/api/collection/ObjectIntList.java b/src/main/java/dev/notalpha/dashloader/api/collection/ObjectIntList.java new file mode 100644 index 00000000..e26aaeca --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/collection/ObjectIntList.java @@ -0,0 +1,26 @@ +package dev.notalpha.dashloader.api.collection; + +import java.util.ArrayList; +import java.util.List; + +public record ObjectIntList(List> list) { + public ObjectIntList() { + this(new ArrayList<>()); + } + + public void put(K key, int value) { + this.list.add(new ObjectIntEntry<>(key, value)); + } + + public void forEach(ObjectIntConsumer c) { + this.list.forEach(v -> c.accept(v.key, v.value)); + } + + @FunctionalInterface + public interface ObjectIntConsumer { + void accept(K key, int value); + } + + public record ObjectIntEntry(K key, int value) { + } +} diff --git a/src/main/java/dev/notalpha/dashloader/api/collection/ObjectObjectList.java b/src/main/java/dev/notalpha/dashloader/api/collection/ObjectObjectList.java new file mode 100644 index 00000000..10698eca --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/collection/ObjectObjectList.java @@ -0,0 +1,22 @@ +package dev.notalpha.dashloader.api.collection; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.BiConsumer; + +public record ObjectObjectList(List> list) { + public ObjectObjectList() { + this(new ArrayList<>()); + } + + public void put(K key, V value) { + this.list.add(new ObjectObjectEntry<>(key, value)); + } + + public void forEach(BiConsumer c) { + this.list.forEach(v -> c.accept(v.key, v.value)); + } + + public record ObjectObjectEntry(K key, V value) { + } +} diff --git a/src/main/java/dev/notalpha/dashloader/api/registry/RegistryAddException.java b/src/main/java/dev/notalpha/dashloader/api/registry/RegistryAddException.java new file mode 100644 index 00000000..30fc972f --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/registry/RegistryAddException.java @@ -0,0 +1,17 @@ +package dev.notalpha.dashloader.api.registry; + +public class RegistryAddException extends RuntimeException { + public final Class targetClass; + public final Object object; + + public RegistryAddException(Class targetClass, Object object) { + super(); + this.targetClass = targetClass; + this.object = object; + } + + @Override + public String getMessage() { + return "Could not find a ChunkWriter for " + targetClass + ": " + object; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/api/registry/RegistryReader.java b/src/main/java/dev/notalpha/dashloader/api/registry/RegistryReader.java new file mode 100644 index 00000000..d114f330 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/registry/RegistryReader.java @@ -0,0 +1,18 @@ +package dev.notalpha.dashloader.api.registry; + +/** + * The RegistryReader is used to read objects from the cache's registry. + * + * @see RegistryWriter + */ +public interface RegistryReader { + /** + * Gets an object from the Cache. + * + * @param pointer The registry pointer to the object. + * @param Target object class. + * @return The object that got cached. + * @see RegistryWriter#add(Object) + */ + R get(final int pointer); +} diff --git a/src/main/java/dev/notalpha/dashloader/api/registry/RegistryUtil.java b/src/main/java/dev/notalpha/dashloader/api/registry/RegistryUtil.java new file mode 100644 index 00000000..6f4aa41f --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/registry/RegistryUtil.java @@ -0,0 +1,43 @@ +package dev.notalpha.dashloader.api.registry; + +/** + * Contains utilities for handling RegistryIds + */ +public final class RegistryUtil { + /** + * Creates a new registry id. + * + * @param objectPos The chunk object position. + * @param chunkPos The index to the chunk the object is in. + * @return Registry ID + */ + public static int createId(int objectPos, byte chunkPos) { + if (chunkPos > 0b111111) { + throw new IllegalStateException("Chunk pos is too big. " + chunkPos + " > " + 0x3f); + } + if (objectPos > 0x3ffffff) { + throw new IllegalStateException("Object pos is too big. " + objectPos + " > " + 0x3ffffff); + } + return objectPos << 6 | (chunkPos & 0x3f); + } + + /** + * Gets the chunk id portion of the Registry ID + * + * @param id Registry ID + * @return Chunk index. + */ + public static byte getChunkId(int id) { + return (byte) (id & 0x3f); + } + + /** + * Gets the object id portion of the Registry ID + * + * @param id Registry ID + * @return The index of the object in the chunk. + */ + public static int getObjectId(int id) { + return id >>> 6; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/api/registry/RegistryWriter.java b/src/main/java/dev/notalpha/dashloader/api/registry/RegistryWriter.java new file mode 100644 index 00000000..8b93f32e --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/api/registry/RegistryWriter.java @@ -0,0 +1,19 @@ +package dev.notalpha.dashloader.api.registry; + +/** + * A RegistryWriter is provided to DashObjects and Modules on save minecraft objects to the cache by converting them into DashObjects. + * On cache load, a RegistryReader is provided so you can read back the objects from the cache. + * + * @see RegistryReader + */ +public interface RegistryWriter { + /** + * Adds an object to the Cache, the object needs to have a DashObject backing it else it will fail. + * + * @param object The Object to add to the cache. + * @param The target class being cached. + * @return A registry id which points to the object. + * @see RegistryReader#get(int) + */ + int add(R object); +} diff --git a/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java b/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java new file mode 100644 index 00000000..56da5589 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java @@ -0,0 +1,127 @@ +package dev.notalpha.dashloader.client; + +import dev.notalpha.dashloader.api.DashEntrypoint; +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheFactory; +import dev.notalpha.dashloader.client.atlas.AtlasModule; +import dev.notalpha.dashloader.client.blockstate.DashBlockState; +import dev.notalpha.dashloader.client.font.*; +import dev.notalpha.dashloader.client.identifier.DashIdentifier; +import dev.notalpha.dashloader.client.identifier.DashModelIdentifier; +import dev.notalpha.dashloader.client.identifier.DashSpriteIdentifier; +import dev.notalpha.dashloader.client.model.DashBasicBakedModel; +import dev.notalpha.dashloader.client.model.DashMultipartBakedModel; +import dev.notalpha.dashloader.client.model.DashWeightedBakedModel; +import dev.notalpha.dashloader.client.model.ModelModule; +import dev.notalpha.dashloader.client.model.components.DashBakedQuad; +import dev.notalpha.dashloader.client.model.components.DashBakedQuadCollection; +import dev.notalpha.dashloader.client.model.components.DashModelBakeSettings; +import dev.notalpha.dashloader.client.model.predicates.*; +import dev.notalpha.dashloader.client.shader.*; +import dev.notalpha.dashloader.client.splash.SplashModule; +import dev.notalpha.dashloader.client.sprite.content.DashImage; +import dev.notalpha.dashloader.client.sprite.content.DashSprite; +import dev.notalpha.dashloader.client.sprite.content.DashSpriteContents; +import dev.notalpha.dashloader.client.sprite.content.SpriteContentModule; +import dev.notalpha.dashloader.client.sprite.stitch.SpriteStitcherModule; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.render.model.json.AndMultipartModelSelector; +import net.minecraft.client.render.model.json.MultipartModelSelector; +import net.minecraft.client.render.model.json.OrMultipartModelSelector; +import net.minecraft.client.render.model.json.SimpleMultipartModelSelector; +import net.minecraft.client.texture.Sprite; +import net.minecraft.client.util.ModelIdentifier; +import net.minecraft.util.Identifier; + +import java.nio.file.Path; +import java.util.List; + +public class DashLoaderClient implements DashEntrypoint { + public static final Cache CACHE; + public static boolean NEEDS_RELOAD = false; + + static { + CacheFactory cacheManagerFactory = CacheFactory.create(); + List entryPoints = FabricLoader.getInstance().getEntrypoints("dashloader", DashEntrypoint.class); + for (DashEntrypoint entryPoint : entryPoints) { + entryPoint.onDashLoaderInit(cacheManagerFactory); + } + + CACHE = cacheManagerFactory.build(Path.of("./dashloader-cache/client/")); + } + + @Override + public void onDashLoaderInit(CacheFactory factory) { + factory.addModule(new AtlasModule()); + factory.addModule(new FontModule()); + factory.addModule(new ModelModule()); + factory.addModule(new ShaderModule()); + factory.addModule(new SplashModule()); + factory.addModule(new SpriteStitcherModule()); + factory.addModule(new SpriteContentModule()); + + factory.addMissingHandler(Identifier.class, (identifier, registryWriter) -> new DashIdentifier(identifier)); + factory.addMissingHandler(ModelIdentifier.class, (moduleIdentifier, registryWriter) -> new DashModelIdentifier(moduleIdentifier)); + + factory.addMissingHandler( + Sprite.class, + DashSprite::new + ); + factory.addMissingHandler( + MultipartModelSelector.class, + (selector, writer) -> { + if (selector == MultipartModelSelector.TRUE) { + return new DashStaticPredicate(true); + } else if (selector == MultipartModelSelector.FALSE) { + return new DashStaticPredicate(false); + } else if (selector instanceof AndMultipartModelSelector s) { + return new DashAndPredicate(s, writer); + } else if (selector instanceof OrMultipartModelSelector s) { + return new DashOrPredicate(s, writer); + } else if (selector instanceof SimpleMultipartModelSelector s) { + return new DashSimplePredicate(s); + } else if (selector instanceof BooleanSelector s) { + return new DashStaticPredicate(s.selector); + } else { + throw new RuntimeException("someone is having fun with lambda selectors again"); + } + } + ); + + //noinspection unchecked + for (Class> aClass : new Class[]{ + DashIdentifier.class, + DashModelIdentifier.class, + DashBasicBakedModel.class, + DashModelBakeSettings.class, + DashMultipartBakedModel.class, + DashWeightedBakedModel.class, + DashBakedQuad.class, + DashBakedQuadCollection.class, + DashSpriteIdentifier.class, + DashAndPredicate.class, + DashOrPredicate.class, + DashSimplePredicate.class, + DashStaticPredicate.class, + DashImage.class, + DashSprite.class, + DashSpriteContents.class, + DashBitmapFont.class, + DashBlankFont.class, + DashSpaceFont.class, + DashTrueTypeFont.class, + DashUnihexFont.class, + DashFontFilterPair.class, + DashBlockState.class, +// DashPostEffectPipeline.class, + DashShaderProgramDefinition.class, + DashShaderProgramDefinitionUniform.class, + DashDefines.class, + DashShaderProgramKey.class, + DashShaderSourceKey.class + }) { + factory.addDashObject(aClass); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/Dazy.java b/src/main/java/dev/notalpha/dashloader/client/Dazy.java new file mode 100644 index 00000000..a3b71b75 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/Dazy.java @@ -0,0 +1,21 @@ +package dev.notalpha.dashloader.client; + +import net.minecraft.client.model.SpriteGetter; +import org.jetbrains.annotations.Nullable; + +// its lazy, but dash! Used for resolution of sprites. +public abstract class Dazy { + @Nullable + private transient V loaded; + + protected abstract V resolve(SpriteGetter spriteLoader); + + public V get(SpriteGetter spriteLoader) { + if (loaded != null) { + return loaded; + } + + loaded = resolve(spriteLoader); + return loaded; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java b/src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java new file mode 100644 index 00000000..b4f65fd6 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java @@ -0,0 +1,13 @@ +package dev.notalpha.dashloader.client; + +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; +import dev.notalpha.dashloader.client.ui.ConfigScreen; +import net.minecraft.client.gui.screen.Screen; + +public class ModMenuCompat implements ModMenuApi { + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return ConfigScreen::new; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java b/src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java new file mode 100644 index 00000000..42b796a6 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java @@ -0,0 +1,83 @@ +package dev.notalpha.dashloader.client.atlas; + +import dev.notalpha.dashloader.api.CachingData; +import dev.notalpha.dashloader.api.DashModule; +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.client.DashLoaderClient; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.config.Option; +import dev.notalpha.taski.builtin.StepTask; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.texture.NativeImage; +import org.apache.commons.codec.digest.DigestUtils; + +import java.io.FileInputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.concurrent.FutureTask; + +public class AtlasModule implements DashModule { + public static final CachingData>>> ATLASES = new CachingData<>(); + + @Override + public void reset(Cache cache) { + ATLASES.reset(cache, new HashMap<>()); + } + + @Override + public Data save(RegistryWriter writer, StepTask task) { + var cachedAtlases = ATLASES.get(CacheStatus.SAVE); + // Not saving the atlases in the main cache, check `SpriteAtlasTextureMixin` + + if (cachedAtlases == null) { + return null; + } + + return new Data(cachedAtlases.keySet().toArray(new String[0])); + } + + @Override + public void load(Data data, RegistryReader reader, StepTask t) { + var path = getAtlasFolder(); + + HashMap>> out = new HashMap<>(); + + var maxMipLevel = MinecraftClient.getInstance().options.getMipmapLevels().getValue(); + for (String atlasId : data.atlasIds) { + var tasks = new ArrayList>(); + + for (int i = 0; i <= maxMipLevel; i++) { // don't load more atlases than needed + Path imgPath = path.resolve(DigestUtils.md5Hex(atlasId + i).toUpperCase()); + if (!Files.exists(imgPath)) break; + + tasks.add(new FutureTask<>(() -> NativeImage.read(new FileInputStream(imgPath.toFile())))); + Thread.startVirtualThread(tasks.getLast()); + } + out.put(atlasId, tasks); + } + + ATLASES.set(CacheStatus.LOAD, out); + } + + @Override + public boolean isActive() { + return ConfigHandler.optionActive(Option.CACHE_ATLASES); + } + + public static Path getAtlasFolder() { + return DashLoaderClient.CACHE.getDir().resolve("atlases"); + } + + @Override + public Class getDataClass() { + return Data.class; + } + + public record Data(String[] atlasIds) { + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java b/src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java new file mode 100644 index 00000000..c534ea30 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java @@ -0,0 +1,86 @@ +package dev.notalpha.dashloader.client.blockstate; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.mixin.accessor.ModelLoaderAccessor; +import net.minecraft.block.BlockState; +import net.minecraft.registry.Registries; +import net.minecraft.util.Identifier; + +public final class DashBlockState implements DashObject { + public static final Identifier ITEM_FRAME = Identifier.of("dashloader", "itemframewhy"); + public final int owner; + public final int pos; + + public DashBlockState(int owner, int pos) { + this.owner = owner; + this.pos = pos; + } + + public DashBlockState(BlockState blockState, RegistryWriter writer) { + var block = blockState.getBlock(); + int pos = -1; + + Identifier owner = null; + { + var states = ModelLoaderAccessor.getTheItemFrameThing().getStates(); + for (int i = 0; i < states.size(); i++) { + BlockState state = states.get(i); + if (state.equals(blockState)) { + pos = i; + owner = ITEM_FRAME; + break; + } + } + } + + if (pos == -1) { + var states = block.getStateManager().getStates(); + for (int i = 0; i < states.size(); i++) { + BlockState state = states.get(i); + if (state.equals(blockState)) { + pos = i; + owner = Registries.BLOCK.getId(block); + break; + } + } + } + + if (owner == null) { + throw new RuntimeException("Could not find a blockstate for " + blockState); + } + + this.owner = writer.add(owner); + this.pos = pos; + } + + @Override + public BlockState export(final RegistryReader reader) { + final Identifier id = reader.get(this.owner); + // if its item frame get its state from the model loader as mojank is mojank + if (id.equals(ITEM_FRAME)) { + return ModelLoaderAccessor.getTheItemFrameThing().getStates().get(this.pos); + } else { + return Registries.BLOCK.get(id).getStateManager().getStates().get(this.pos); + } + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashBlockState that = (DashBlockState) o; + + if (owner != that.owner) return false; + return pos == that.pos; + } + + @Override + public int hashCode() { + int result = owner; + result = 31 * result + pos; + return result; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java new file mode 100644 index 00000000..2f097b3c --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java @@ -0,0 +1,38 @@ +package dev.notalpha.dashloader.client.font; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.collection.IntObjectList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.mixin.accessor.BitmapFontAccessor; +import net.minecraft.client.font.BitmapFont; +import net.minecraft.client.font.GlyphContainer; + +import java.util.ArrayList; + +public final class DashBitmapFont implements DashObject { + public final int image; + public final IntObjectList glyphs; + + public DashBitmapFont(int image, + IntObjectList glyphs) { + this.image = image; + this.glyphs = glyphs; + } + + public DashBitmapFont(BitmapFont bitmapFont, RegistryWriter writer) { + BitmapFontAccessor font = ((BitmapFontAccessor) bitmapFont); + this.image = writer.add(font.getImage()); + this.glyphs = new IntObjectList<>(new ArrayList<>()); + font.getGlyphs().forEachGlyph((integer, bitmapFontGlyph) -> this.glyphs.put(integer, new DashBitmapFontGlyph(bitmapFontGlyph, writer))); + } + + public BitmapFont export(RegistryReader reader) { + GlyphContainer out = new GlyphContainer<>( + BitmapFont.BitmapFontGlyph[]::new, + BitmapFont.BitmapFontGlyph[][]::new + ); + this.glyphs.forEach((key, value) -> out.put(key, value.export(reader))); + return BitmapFontAccessor.init(reader.get(this.image), out); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java new file mode 100644 index 00000000..3aa4ee29 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java @@ -0,0 +1,44 @@ +package dev.notalpha.dashloader.client.font; + +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.mixin.accessor.BitmapFontGlyphAccessor; +import net.minecraft.client.font.BitmapFont; + +public final class DashBitmapFontGlyph { + public final float scaleFactor; + public final int image; + public final int x; + public final int y; + public final int width; + public final int height; + public final int advance; + public final int ascent; + + public DashBitmapFontGlyph(float scaleFactor, int image, int x, int y, int width, int height, int advance, int ascent) { + this.scaleFactor = scaleFactor; + this.image = image; + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.advance = advance; + this.ascent = ascent; + } + + public DashBitmapFontGlyph(BitmapFont.BitmapFontGlyph bitmapFontGlyph, RegistryWriter writer) { + BitmapFontGlyphAccessor font = ((BitmapFontGlyphAccessor) (Object) bitmapFontGlyph); + this.scaleFactor = font.getScaleFactor(); + this.image = writer.add(font.getImage()); + this.x = font.getX(); + this.y = font.getY(); + this.width = font.getWidth(); + this.height = font.getHeight(); + this.advance = font.getAdvance(); + this.ascent = font.getAscent(); + } + + public BitmapFont.BitmapFontGlyph export(RegistryReader handler) { + return BitmapFontGlyphAccessor.init(this.scaleFactor, handler.get(this.image), this.x, this.y, this.width, this.height, this.advance, this.ascent); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java new file mode 100644 index 00000000..24414c1d --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java @@ -0,0 +1,12 @@ +package dev.notalpha.dashloader.client.font; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import net.minecraft.client.font.BlankFont; + +public final class DashBlankFont implements DashObject { + @Override + public BlankFont export(RegistryReader exportHandler) { + return new BlankFont(); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java b/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java new file mode 100644 index 00000000..a97a09df --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java @@ -0,0 +1,37 @@ +package dev.notalpha.dashloader.client.font; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.collection.IntIntList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.mixin.accessor.FilterMapAccessor; +import net.minecraft.client.font.Font; +import net.minecraft.client.font.FontFilterType; + +import java.util.HashMap; +import java.util.Map; + +public class DashFontFilterPair implements DashObject { + public final int provider; + public final IntIntList filter; + + public DashFontFilterPair(int provider, IntIntList filter) { + this.provider = provider; + this.filter = filter; + } + + public DashFontFilterPair(Font.FontFilterPair fontFilterPair, RegistryWriter writer) { + this.provider = writer.add(fontFilterPair.provider()); + + filter = new IntIntList(); + ((FilterMapAccessor) fontFilterPair.filter()).getActiveFilters().forEach( + (key, value) -> filter.put(key.ordinal(), value ? 1 : 0)); + } + + @Override + public Font.FontFilterPair export(RegistryReader reader) { + Map activeFilters = new HashMap<>(); + filter.forEach((key, value) -> activeFilters.put(FontFilterType.values()[key], value == 1)); + return new Font.FontFilterPair(reader.get(provider), new FontFilterType.FilterMap(activeFilters)); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java new file mode 100644 index 00000000..6f243cd0 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java @@ -0,0 +1,37 @@ +package dev.notalpha.dashloader.client.font; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import it.unimi.dsi.fastutil.ints.Int2FloatArrayMap; +import it.unimi.dsi.fastutil.ints.IntSet; +import net.minecraft.client.font.Glyph; +import net.minecraft.client.font.SpaceFont; + +public final class DashSpaceFont implements DashObject { + public final int[] ints; + public final float[] floats; + + public DashSpaceFont(int[] ints, float[] floats) { + this.ints = ints; + this.floats = floats; + } + + public DashSpaceFont(SpaceFont font) { + IntSet glyphs = font.getProvidedGlyphs(); + this.ints = new int[glyphs.size()]; + this.floats = new float[glyphs.size()]; + int i = 0; + for (Integer providedGlyph : glyphs) { + Glyph glyph = font.getGlyph(providedGlyph); + assert glyph != null; + this.ints[i] = providedGlyph; + this.floats[i] = glyph.getAdvance(); + i++; + } + } + + @Override + public SpaceFont export(RegistryReader exportHandler) { + return new SpaceFont(new Int2FloatArrayMap(ints, floats)); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java new file mode 100644 index 00000000..44ac5dd4 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java @@ -0,0 +1,145 @@ +package dev.notalpha.dashloader.client.font; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.io.IOHelper; +import dev.notalpha.dashloader.misc.UnsafeHelper; +import dev.notalpha.dashloader.mixin.accessor.TrueTypeFontAccessor; +import it.unimi.dsi.fastutil.ints.IntArraySet; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.FreeTypeUtil; +import net.minecraft.client.font.GlyphContainer; +import net.minecraft.client.font.TrueTypeFont; +import net.minecraft.resource.Resource; +import net.minecraft.util.Identifier; +import org.lwjgl.PointerBuffer; +import org.lwjgl.system.MemoryStack; +import org.lwjgl.system.MemoryUtil; +import org.lwjgl.util.freetype.FT_Face; +import org.lwjgl.util.freetype.FT_Vector; +import org.lwjgl.util.freetype.FreeType; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.IntBuffer; +import java.util.Optional; + +public final class DashTrueTypeFont implements DashObject { + public final byte[] fontData; + public final float oversample; + public final int[] excludedCharacters; + public final int size; + public final float shiftX; + public final float shiftY; + private transient TrueTypeFont _font; + + public DashTrueTypeFont(byte[] fontData, float oversample, int[] excludedCharacters, int size, float shiftX, float shiftY) { + this.fontData = fontData; + this.oversample = oversample; + this.excludedCharacters = excludedCharacters; + this.size = size; + this.shiftX = shiftX; + this.shiftY = shiftY; + } + + public DashTrueTypeFont(TrueTypeFont font) { + TrueTypeFontAccessor fontAccess = (TrueTypeFontAccessor) font; + FT_Face ft_face = fontAccess.getFace(); + FontPrams prams = FontModule.FONT_TO_DATA.get(CacheStatus.SAVE).get(ft_face); + final Identifier ttFont = prams.id(); + byte[] data = null; + try { + Optional resource = MinecraftClient.getInstance().getResourceManager().getResource(ttFont.withPrefixedPath("font/")); + if (resource.isPresent()) { + var stream = resource.get().getInputStream(); + data = IOHelper.streamToArray(stream); + stream.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + + try (MemoryStack memoryStack = MemoryStack.stackPush()) { + FT_Vector vec = FT_Vector.malloc(memoryStack); + FreeType.FT_Get_Transform(ft_face, null, vec); + this.shiftX = vec.x() / 64F; + this.shiftY = vec.y() / 64F; + } + + this.fontData = data; + this.oversample = fontAccess.getOversample(); + this.excludedCharacters = prams.skip().codePoints().toArray(); + this.size = Math.round(prams.size() * this.oversample); + } + + @Override + public TrueTypeFont export(RegistryReader handler) { + this._font = UnsafeHelper.allocateInstance(TrueTypeFont.class); + + TrueTypeFontAccessor trueTypeFontAccess = (TrueTypeFontAccessor) this._font; + trueTypeFontAccess.setOversample(this.oversample); + return this._font; + } + + @Override + public void postExport(RegistryReader reader) { + ByteBuffer fontBuffer = MemoryUtil.memAlloc(this.fontData.length); + fontBuffer.put(this.fontData); + fontBuffer.flip(); + + FT_Face ft_face = null; + + var trueTypeFontAccess = (TrueTypeFontAccessor) this._font; + var set = new IntArraySet(excludedCharacters); + + var container = new GlyphContainer<>(TrueTypeFont.LazyGlyph[]::new, TrueTypeFont.LazyGlyph[][]::new); + + try { + synchronized (FreeTypeUtil.LOCK) { + try (MemoryStack memoryStack = MemoryStack.stackPush()) { + PointerBuffer pointerBuffer = memoryStack.mallocPointer(1); + FreeTypeUtil.checkFatalError(FreeType.FT_New_Memory_Face(FreeTypeUtil.initialize(), fontBuffer, 0L, pointerBuffer), "Initializing font face"); + ft_face = FT_Face.create(pointerBuffer.get()); + + FreeType.FT_Set_Pixel_Sizes(ft_face, this.size, this.size); + + FT_Vector vec = FreeTypeUtil.set(FT_Vector.malloc(memoryStack), this.shiftX, this.shiftY); + FreeType.FT_Set_Transform(ft_face, null, vec); + + IntBuffer intBuffer = memoryStack.mallocInt(1); + int j = (int) FreeType.FT_Get_First_Char(ft_face, intBuffer); + + while (true) { + int k = intBuffer.get(0); + if (k == 0) { + break; + } + + if (!set.contains(j)) { + container.put(j, new TrueTypeFont.LazyGlyph(k)); + } + + j = (int) FreeType.FT_Get_Next_Char(ft_face, j, intBuffer); + } + } + } + + trueTypeFontAccess.setContainer(container); + trueTypeFontAccess.setFace(ft_face); + trueTypeFontAccess.setBuffer(fontBuffer); + } catch (Throwable e) { + synchronized (FreeTypeUtil.LOCK) { + if (ft_face != null) { + FreeType.FT_Done_Face(ft_face); + } + } + MemoryUtil.memFree(fontBuffer); + + throw e; + } + } + + public record FontPrams(Identifier id, float size, String skip) { + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java new file mode 100644 index 00000000..df328e90 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java @@ -0,0 +1,51 @@ +package dev.notalpha.dashloader.client.font; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.collection.IntObjectList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.mixin.accessor.UnihexFontAccessor; +import net.minecraft.client.font.GlyphContainer; +import net.minecraft.client.font.UnihexFont; + +public final class DashUnihexFont implements DashObject { + public final IntObjectList glyphs; + + public DashUnihexFont(IntObjectList glyphs) { + this.glyphs = glyphs; + } + + public DashUnihexFont(UnihexFont rawFont, RegistryWriter writer) { + this.glyphs = new IntObjectList<>(); + var font = ((UnihexFontAccessor) rawFont); + var fontImages = font.getGlyphs(); + fontImages.forEachGlyph(this.glyphs::put); + } + + public UnihexFont export(RegistryReader handler) { + GlyphContainer container = new GlyphContainer<>( + UnihexFont.UnicodeTextureGlyph[]::new, + UnihexFont.UnicodeTextureGlyph[][]::new + ); + this.glyphs.forEach(container::put); + return UnihexFontAccessor.create(container); + } + + public static class DashUnicodeTextureGlyph { + public final UnihexFont.BitmapGlyph contents; + public final int left; + public final int right; + + public DashUnicodeTextureGlyph(UnihexFont.BitmapGlyph contents, int left, int right) { + this.contents = contents; + this.left = left; + this.right = right; + } + + public DashUnicodeTextureGlyph(UnihexFont.UnicodeTextureGlyph glyph) { + this.contents = glyph.contents(); + this.left = glyph.left(); + this.right = glyph.right(); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java b/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java new file mode 100644 index 00000000..0166d507 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java @@ -0,0 +1,115 @@ +package dev.notalpha.dashloader.client.font; + +import dev.notalpha.dashloader.api.CachingData; +import dev.notalpha.dashloader.api.DashModule; +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.api.collection.IntObjectList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.config.Option; +import dev.notalpha.taski.builtin.StepTask; +import net.minecraft.client.font.Font; +import net.minecraft.util.Identifier; +import org.lwjgl.util.freetype.FT_Face; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class FontModule implements DashModule { + public static final CachingData DATA = new CachingData<>(); + public static final CachingData> FONT_TO_DATA = new CachingData<>(); + + @Override + public void reset(Cache cache) { + DATA.reset(cache, new ProviderIndex(new HashMap<>(), new ArrayList<>())); + FONT_TO_DATA.reset(cache, new HashMap<>()); + } + + @Override + public Data save(RegistryWriter factory, StepTask task) { + ProviderIndex providerIndex = DATA.get(CacheStatus.SAVE); + assert providerIndex != null; + + int taskSize = 0; + for (List value : providerIndex.providers.values()) { + taskSize += value.size(); + } + taskSize += providerIndex.allProviders.size(); + task.reset(taskSize); + + var providers = new IntObjectList>(); + providerIndex.providers.forEach((identifier, fontFilterPairs) -> { + var values = new ArrayList(); + for (Font.FontFilterPair fontFilterPair : fontFilterPairs) { + values.add(factory.add(fontFilterPair)); + task.next(); + } + providers.put(factory.add(identifier), values); + }); + + var allProviders = new ArrayList(); + for (Font allProvider : providerIndex.allProviders) { + allProviders.add(factory.add(allProvider)); + task.next(); + } + + return new Data(new DashProviderIndex(providers, allProviders)); + } + + @Override + public void load(Data data, RegistryReader reader, StepTask task) { + ProviderIndex index = new ProviderIndex(new HashMap<>(), new ArrayList<>()); + data.fontMap.providers.forEach((key, value) -> { + var fonts = new ArrayList(); + for (Integer i : value) { + fonts.add(reader.get(i)); + } + index.providers.put(reader.get(key), fonts); + }); + + data.fontMap.allProviders.forEach((value) -> index.allProviders.add(reader.get(value))); + DATA.set(CacheStatus.LOAD, index); + } + + @Override + public Class getDataClass() { + return Data.class; + } + + @Override + public boolean isActive() { + return ConfigHandler.optionActive(Option.CACHE_FONT); + } + + public static final class Data { + public final DashProviderIndex fontMap; + + public Data(DashProviderIndex fontMap) { + this.fontMap = fontMap; + } + } + + public static final class DashProviderIndex { + public final IntObjectList> providers; + public final List allProviders; + + public DashProviderIndex(IntObjectList> providers, List allProviders) { + this.providers = providers; + this.allProviders = allProviders; + } + } + + public static final class ProviderIndex { + public final Map> providers; + public final List allProviders; + + public ProviderIndex(Map> providers, List allProviders) { + this.providers = providers; + this.allProviders = allProviders; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/identifier/DashIdentifier.java b/src/main/java/dev/notalpha/dashloader/client/identifier/DashIdentifier.java new file mode 100644 index 00000000..4b5de78a --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/identifier/DashIdentifier.java @@ -0,0 +1,44 @@ +package dev.notalpha.dashloader.client.identifier; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.mixin.accessor.IdentifierAccessor; +import net.minecraft.util.Identifier; + +public final class DashIdentifier implements DashObject { + public final String namespace; + public final String path; + + public DashIdentifier(String namespace, String path) { + this.namespace = namespace; + this.path = path; + } + + public DashIdentifier(Identifier identifier) { + this.namespace = identifier.getNamespace(); + this.path = identifier.getPath(); + } + + @Override + public Identifier export(RegistryReader exportHandler) { + return IdentifierAccessor.init(this.namespace, this.path); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashIdentifier that = (DashIdentifier) o; + + if (!namespace.equals(that.namespace)) return false; + return path.equals(that.path); + } + + @Override + public int hashCode() { + int result = namespace.hashCode(); + result = 31 * result + path.hashCode(); + return result; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java b/src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java new file mode 100644 index 00000000..2dba0458 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java @@ -0,0 +1,49 @@ +package dev.notalpha.dashloader.client.identifier; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.mixin.accessor.IdentifierAccessor; +import net.minecraft.client.util.ModelIdentifier; + +public final class DashModelIdentifier implements DashObject { + public final String namespace; + public final String path; + public final String variant; + + public DashModelIdentifier(ModelIdentifier identifier) { + this.namespace = identifier.id().getNamespace(); + this.path = identifier.id().getPath(); + this.variant = identifier.getVariant(); + } + + public DashModelIdentifier(String namespace, String path, String variant) { + this.namespace = namespace; + this.path = path; + this.variant = variant; + } + + @Override + public ModelIdentifier export(RegistryReader exportHandler) { + return new ModelIdentifier(IdentifierAccessor.init(this.namespace, this.path), variant); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashModelIdentifier that = (DashModelIdentifier) o; + + if (!namespace.equals(that.namespace)) return false; + if (!path.equals(that.path)) return false; + return variant.equals(that.variant); + } + + @Override + public int hashCode() { + int result = namespace.hashCode(); + result = 31 * result + path.hashCode(); + result = 31 * result + variant.hashCode(); + return result; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java b/src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java new file mode 100644 index 00000000..0f6a9428 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java @@ -0,0 +1,26 @@ +package dev.notalpha.dashloader.client.identifier; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import net.minecraft.client.util.SpriteIdentifier; + +public class DashSpriteIdentifier implements DashObject { + public final int atlas; + public final int texture; + + public DashSpriteIdentifier(int atlas, int texture) { + this.atlas = atlas; + this.texture = texture; + } + + public DashSpriteIdentifier(SpriteIdentifier identifier, RegistryWriter writer) { + this.atlas = writer.add(identifier.getAtlasId()); + this.texture = writer.add(identifier.getTextureId()); + } + + @Override + public SpriteIdentifier export(RegistryReader reader) { + return new SpriteIdentifier(reader.get(atlas), reader.get(texture)); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java new file mode 100644 index 00000000..af37f725 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java @@ -0,0 +1,153 @@ +package dev.notalpha.dashloader.client.model; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.collection.ObjectObjectList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.client.Dazy; +import dev.notalpha.dashloader.client.model.components.BakedQuadCollection; +import dev.notalpha.dashloader.client.model.components.DashBakedQuadCollection; +import dev.notalpha.dashloader.client.model.components.DashModelTransformation; +import dev.notalpha.dashloader.client.sprite.content.DashSprite; +import dev.notalpha.dashloader.mixin.accessor.BasicBakedModelAccessor; +import dev.notalpha.hyphen.scan.annotations.DataNullable; +import net.minecraft.client.model.SpriteGetter; +import net.minecraft.client.render.model.BakedQuad; +import net.minecraft.client.render.model.BasicBakedModel; +import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.texture.Sprite; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.random.Random; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +public final class DashBasicBakedModel implements DashObject { + public final int quads; + public final ObjectObjectList faceQuads; + public final boolean usesAo; + public final boolean hasDepth; + public final boolean isSideLit; + @DataNullable + public final DashModelTransformation transformation; + public final int spritePointer; + + public DashBasicBakedModel(int quads, + ObjectObjectList faceQuads, + boolean usesAo, boolean hasDepth, boolean isSideLit, + DashModelTransformation transformation, + int spritePointer) { + this.quads = quads; + this.faceQuads = faceQuads; + this.usesAo = usesAo; + this.hasDepth = hasDepth; + this.isSideLit = isSideLit; + this.transformation = transformation; + this.spritePointer = spritePointer; + } + + public DashBasicBakedModel(BasicBakedModel basicBakedModel, RegistryWriter writer) { + BasicBakedModelAccessor access = ((BasicBakedModelAccessor) basicBakedModel); + + Random random = Random.create(); + this.quads = writer.add(new BakedQuadCollection(basicBakedModel.getQuads(null, null, random))); + this.faceQuads = new ObjectObjectList<>(); + for (Direction value : Direction.values()) { + this.faceQuads.put(value, writer.add(new BakedQuadCollection(basicBakedModel.getQuads(null, value, random)))); + } + + this.usesAo = access.getUsesAo(); + this.hasDepth = access.getHasDepth(); + this.isSideLit = access.getIsSideLit(); + this.transformation = DashModelTransformation.createDashOrReturnNullIfDefault(access.getTransformation()); + this.spritePointer = writer.add(access.getSprite()); + } + + @Override + public DazyImpl export(final RegistryReader reader) { + final DashSprite.DazyImpl sprite = reader.get(this.spritePointer); + final DashBakedQuadCollection.DazyImpl quads = reader.get(this.quads); + + var faceQuads = new HashMap(); + for (var entry : this.faceQuads.list()) { + DashBakedQuadCollection.DazyImpl collection = reader.get(entry.value()); + faceQuads.put(entry.key(), collection); + } + + return new DazyImpl( + quads, + faceQuads, + usesAo, + isSideLit, + hasDepth, + DashModelTransformation.exportOrDefault(this.transformation), + sprite + ); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashBasicBakedModel that = (DashBasicBakedModel) o; + + if (quads != that.quads) return false; + if (usesAo != that.usesAo) return false; + if (hasDepth != that.hasDepth) return false; + if (isSideLit != that.isSideLit) return false; + if (spritePointer != that.spritePointer) return false; + if (!faceQuads.equals(that.faceQuads)) return false; + return Objects.equals(transformation, that.transformation); + } + + @Override + public int hashCode() { + int result = quads; + result = 31 * result + faceQuads.hashCode(); + result = 31 * result + (usesAo ? 1 : 0); + result = 31 * result + (hasDepth ? 1 : 0); + result = 31 * result + (isSideLit ? 1 : 0); + result = 31 * result + (transformation != null ? transformation.hashCode() : 0); + result = 31 * result + spritePointer; + return result; + } + + public static class DazyImpl extends Dazy { + public final DashBakedQuadCollection.DazyImpl quads; + public final Map faceQuads; + public final boolean usesAo; + public final boolean isSideLit; + public final boolean hasDepth; + public final ModelTransformation transformation; + public final DashSprite.DazyImpl sprite; + + public DazyImpl(DashBakedQuadCollection.DazyImpl quads, + Map faceQuads, + boolean usesAo, + boolean isSideLit, + boolean hasDepth, + ModelTransformation transformation, + DashSprite.DazyImpl sprite) { + this.quads = quads; + this.faceQuads = faceQuads; + this.usesAo = usesAo; + this.isSideLit = isSideLit; + this.hasDepth = hasDepth; + this.transformation = transformation; + this.sprite = sprite; + } + + @Override + protected BasicBakedModel resolve(SpriteGetter spriteLoader) { + List quads = this.quads.get(spriteLoader); + var faceQuadsOut = new HashMap>(); + this.faceQuads.forEach((direction, dazy) -> faceQuadsOut.put(direction, dazy.get(spriteLoader))); + + Sprite sprite = this.sprite.get(spriteLoader); + return new BasicBakedModel(quads, faceQuadsOut, usesAo, isSideLit, hasDepth, sprite, transformation); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java new file mode 100644 index 00000000..4b1a8c10 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java @@ -0,0 +1,146 @@ +package dev.notalpha.dashloader.client.model; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.client.Dazy; +import dev.notalpha.dashloader.mixin.accessor.MultipartBakedModelAccessor; +import dev.notalpha.dashloader.mixin.accessor.MultipartModelComponentAccessor; +import net.minecraft.block.BlockState; +import net.minecraft.client.model.SpriteGetter; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.MultipartBakedModel; +import net.minecraft.client.render.model.json.MultipartModelSelector; +import net.minecraft.util.Identifier; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.function.Predicate; + +public class DashMultipartBakedModel implements DashObject { + public final List components; + + public DashMultipartBakedModel(List components) { + this.components = components; + } + + public DashMultipartBakedModel(MultipartBakedModel model, RegistryWriter writer) { + var access = ((MultipartBakedModelAccessor) model); + var accessComponents = access.getSelectors(); + int size = accessComponents.size(); + this.components = new ArrayList<>(); + + var modelMap = ModelModule.UNBAKED_TO_BAKED_MULTIPART_MODELS.get(CacheStatus.SAVE); + var predicates = ModelModule.MULTIPART_PREDICATES.get(CacheStatus.SAVE); + var pair = predicates.get(modelMap.get(model)); + + var stateManagerIdentifier = ModelModule.getStateManagerIdentifier(pair.getRight()); + for (int i = 0; i < size; i++) { + var componentModel = accessComponents.get(i).model(); + var selector = ((MultipartModelComponentAccessor) pair.getLeft().get(i)).getSelector(); + + this.components.add(new Component( + writer.add(componentModel), + writer.add(selector), + writer.add(stateManagerIdentifier) + )); + } + } + + @Override + public DazyImpl export(RegistryReader reader) { + List componentsOut = new ArrayList<>(this.components.size()); + this.components.forEach(component -> { + Dazy compModel = reader.get(component.model); + Identifier compIdentifier = reader.get(component.identifier); + MultipartModelSelector compSelector = reader.get(component.selector); + Predicate predicate = compSelector.getPredicate(ModelModule.getStateManager(compIdentifier)); + componentsOut.add(new DazyImpl.Component(compModel, predicate)); + }); + return new DazyImpl(componentsOut); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashMultipartBakedModel that = (DashMultipartBakedModel) o; + + return components.equals(that.components); + } + + @Override + public int hashCode() { + return components.hashCode(); + } + + public static final class Component { + public final int model; + public final int selector; + public final int identifier; + + public Component(int model, int selector, int identifier) { + this.model = model; + this.selector = selector; + this.identifier = identifier; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Component component = (Component) o; + + if (model != component.model) return false; + if (selector != component.selector) return false; + return identifier == component.identifier; + } + + @Override + public int hashCode() { + int result = model; + result = 31 * result + selector; + result = 31 * result + identifier; + return result; + } + } + + public static class DazyImpl extends Dazy { + public final List components; + + public DazyImpl(List components) { + this.components = components; + } + + @Override + protected MultipartBakedModel resolve(SpriteGetter spriteLoader) { + List componentsOut = new ArrayList<>(this.components.size()); + + for (Component component : components) { + var model = component.model.get(spriteLoader); + var selector = component.selector; + componentsOut.add(new MultipartBakedModel.Selector(selector, model)); + } + + MultipartBakedModel multipartBakedModel = new MultipartBakedModel(componentsOut); + MultipartBakedModelAccessor access = (MultipartBakedModelAccessor) multipartBakedModel; + // Fixes race condition which strangely does not happen in vanilla a ton? + access.setStateCache(Collections.synchronizedMap(access.getStateCache())); + return multipartBakedModel; + } + + public static class Component { + public final Dazy model; + public final Predicate selector; + + public Component(Dazy model, Predicate selector) { + this.model = model; + this.selector = selector; + } + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java new file mode 100644 index 00000000..29fe8c9b --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java @@ -0,0 +1,82 @@ +package dev.notalpha.dashloader.client.model; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.client.Dazy; +import dev.notalpha.dashloader.client.model.components.DashWeightedModelEntry; +import dev.notalpha.dashloader.mixin.accessor.WeightedBakedModelAccessor; +import net.minecraft.client.model.SpriteGetter; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.WeightedBakedModel; +import net.minecraft.util.collection.DataPool; + +import java.util.ArrayList; +import java.util.List; + +public final class DashWeightedBakedModel implements DashObject { + public final List models; + + public DashWeightedBakedModel(List models) { + this.models = models; + } + + public DashWeightedBakedModel(WeightedBakedModel model, RegistryWriter writer) { + this.models = new ArrayList<>(); + for (var weightedModel : ((WeightedBakedModelAccessor) model).getModels().getEntries()) { + this.models.add(new DashWeightedModelEntry(weightedModel, writer)); + } + } + + @Override + public DazyImpl export(RegistryReader reader) { + var modelsOut = new ArrayList(); + for (DashWeightedModelEntry model : this.models) { + modelsOut.add(model.export(reader)); + } + return new DazyImpl(modelsOut); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashWeightedBakedModel that = (DashWeightedBakedModel) o; + + return models.equals(that.models); + } + + @Override + public int hashCode() { + return models.hashCode(); + } + + public static class DazyImpl extends Dazy { + public final List entries; + + public DazyImpl(List entries) { + this.entries = entries; + } + + @Override + protected WeightedBakedModel resolve(SpriteGetter spriteLoader) { + DataPool.Builder models = DataPool.builder(); + for (Entry entry : this.entries) { + BakedModel model = entry.model.get(spriteLoader); + models.add(model, entry.weight); + } + return new WeightedBakedModel(models.build()); + } + + public static class Entry { + public final int weight; + public final Dazy model; + + public Entry(int weight, Dazy model) { + this.weight = weight; + this.model = model; + } + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java b/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java new file mode 100644 index 00000000..45a709cc --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java @@ -0,0 +1,305 @@ +package dev.notalpha.dashloader.client.model; + +import dev.notalpha.dashloader.DashLoader; +import dev.notalpha.dashloader.api.CachingData; +import dev.notalpha.dashloader.api.DashModule; +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.api.collection.IntIntList; +import dev.notalpha.dashloader.api.collection.IntObjectList; +import dev.notalpha.dashloader.api.collection.ObjectIntList; +import dev.notalpha.dashloader.api.registry.RegistryAddException; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.client.Dazy; +import dev.notalpha.dashloader.client.model.components.DashModelBakeSettings; +import dev.notalpha.dashloader.client.model.fallback.MultiUnbakedBakedModel; +import dev.notalpha.dashloader.client.model.fallback.UnbakedBakedGroupableModel; +import dev.notalpha.dashloader.client.model.fallback.UnbakedBakedModel; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.config.Option; +import dev.notalpha.dashloader.mixin.accessor.ModelLoaderAccessor; +import dev.notalpha.taski.builtin.StepTask; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.client.render.model.*; +import net.minecraft.client.render.model.json.MultipartModelComponent; +import net.minecraft.client.util.ModelIdentifier; +import net.minecraft.registry.Registries; +import net.minecraft.state.StateManager; +import net.minecraft.util.Identifier; +import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ModelModule implements DashModule { + public static final CachingData> BAKED_MODEL_PARTS = new CachingData<>(CacheStatus.SAVE); + + public static final CachingData> BLOCK_MODELS_SAVE = new CachingData<>(CacheStatus.SAVE); + public static final CachingData> RAW_BLOCK_MODELS = new CachingData<>(CacheStatus.SAVE); + +// public static final CachingData> ITEM_MODELS_SAVE = new CachingData<>(CacheStatus.SAVE); +// public static final CachingData> ITEM_PROPERTIES = new CachingData<>(CacheStatus.SAVE); + + public static final CachingData> MODEL_PARTS = new CachingData<>(CacheStatus.LOAD); + public static final CachingData> MISSING_MODEL_PARTS = new CachingData<>(CacheStatus.LOAD); + + public static final CachingData> BLOCK_MODELS = new CachingData<>(CacheStatus.LOAD); + public static final CachingData> MISSING_BLOCK_MODELS = new CachingData<>(CacheStatus.LOAD); + +// public static final CachingData> ITEM_MODELS = new CachingData<>(CacheStatus.LOAD); +// public static final CachingData> MISSING_ITEM_MODELS = new CachingData<>(CacheStatus.LOAD); + + + public static final CachingData, StateManager>>> MULTIPART_PREDICATES = new CachingData<>(CacheStatus.SAVE); + public static final CachingData> UNBAKED_TO_BAKED_MULTIPART_MODELS = new CachingData<>(CacheStatus.SAVE); + + public static StateManager getStateManager(Identifier identifier) { + StateManager staticDef = ModelLoaderAccessor.getStaticDefinitions().get(identifier); + if (staticDef != null) { + return staticDef; + } else { + return Registries.BLOCK.get(identifier).getStateManager(); + } + } + + @NotNull + public static Identifier getStateManagerIdentifier(StateManager stateManager) { + // Static definitions like itemframes. + for (Map.Entry> entry : ModelLoaderAccessor.getStaticDefinitions().entrySet()) { + if (entry.getValue() == stateManager) { + return entry.getKey(); + } + } + + return Registries.BLOCK.getId(stateManager.getOwner()); + } + + @Override + public void reset(Cache cache) { + BAKED_MODEL_PARTS.reset(cache, new HashMap<>()); + + BLOCK_MODELS_SAVE.reset(cache, new HashMap<>()); + RAW_BLOCK_MODELS.reset(cache, new HashMap<>()); + +// ITEM_MODELS_SAVE.reset(cache, new HashMap<>()); +// ITEM_PROPERTIES.reset(cache, new HashMap<>()); + + MODEL_PARTS.reset(cache, new HashMap<>()); + MISSING_MODEL_PARTS.reset(cache, new ArrayList<>()); + + BLOCK_MODELS.reset(cache, new HashMap<>()); + MISSING_BLOCK_MODELS.reset(cache, new ArrayList<>()); + +// ITEM_MODELS.reset(cache, new HashMap<>()); +// MISSING_ITEM_MODELS.reset(cache, new ArrayList<>()); + + + MULTIPART_PREDICATES.reset(cache, new HashMap<>()); + UNBAKED_TO_BAKED_MULTIPART_MODELS.reset(cache, new HashMap<>()); + } + + @Override + public Data save(RegistryWriter factory, StepTask task) { + var bakedModelCache = BAKED_MODEL_PARTS.get(CacheStatus.SAVE); + var blockModels = BLOCK_MODELS_SAVE.get(CacheStatus.SAVE); + var rawBlockModels = RAW_BLOCK_MODELS.get(CacheStatus.SAVE); +// var itemModels = ITEM_MODELS_SAVE.get(CacheStatus.SAVE); +// var itemProperties = ITEM_PROPERTIES.get(CacheStatus.SAVE); + + + if (bakedModelCache == null || blockModels == null || rawBlockModels == null) { + return null; + } + + // split models that have been baked with multiple vs one setting + var modelPartsRemap = new Int2ObjectOpenHashMap>(bakedModelCache.size()); + var outModelPartsVariants = new IntObjectList(new ArrayList<>(bakedModelCache.size())); + var outModelParts = new IntIntList(new ArrayList<>(bakedModelCache.size())); + + var missingModelParts = new IntArrayList(); + + var outBlockModels = new IntObjectList(new ArrayList<>(blockModels.size())); + var missingBlockModels = new IntArrayList(); + +// var outItemModels = new IntObjectList(new ArrayList<>(itemModels.size())); +// var missingItemModels = new IntArrayList(); + + task.doForEach(bakedModelCache, (key, model) -> { + if (model == null) return; + + try { + var regId = factory.add(model); + + modelPartsRemap.compute(factory.add(key.id()), (id, models) -> { + if (models == null) models = new ObjectIntList<>(); + // don't add bake settings to the registry yet, might not need + models.put(new DashModelBakeSettings.BakeSettings(key.transformation(), key.isUvLocked()), regId); + + return models; + }); + } catch (RegistryAddException ignored) { + missingModelParts.add(factory.add(key.id())); + } + }); + + final int[] num = {0}; + + modelPartsRemap.forEach((id, models) -> { + var list = models.list(); + num[0] += list.size(); + + if (list.size() == 1) { // can ignore bake settings + outModelParts.put(id, list.getFirst().value()); + } else { + var data = new IntIntList(new ArrayList<>(list.size())); + list.forEach(entry -> { + data.put(factory.add(entry.key()), entry.value()); + }); + outModelPartsVariants.put(id, data); + } + }); + + DashLoader.LOG.info("saved {}/{} model parts", num, bakedModelCache.size()); + DashLoader.LOG.info("missing {} model parts", missingModelParts.size()); + + task.doForEach(blockModels, (modelId, model) -> { + if (model == null) return; + + try { + var regId = factory.add(model); + var blockModel = new IntIntList.IntInt(factory.add(rawBlockModels.get(modelId).state()), regId); + outBlockModels.put(factory.add(modelId), blockModel); + } catch (RegistryAddException ignored) { + missingBlockModels.add(factory.add(modelId.id())); + } + }); + + DashLoader.LOG.info("saved {}/{} block models", outBlockModels.list().size(), blockModels.size()); + DashLoader.LOG.info("missing {} block models", missingBlockModels.size()); + +// task.doForEach(itemModels, (id, model) -> { +// if (model == null) return; +// +// try { +// var regId = factory.add(model); // TODO: ItemModel caching. fyi there's 6 variants and more to add +// var itemAsset = new IntIntList.IntInt(factory.add(itemProperties.getOrDefault(id, ItemAsset.Properties.DEFAULT)), regId); +// outItemModels.put(factory.add(id), itemAsset); +// } catch (RegistryAddException ignored) { +// missingItemModels.add(factory.add(id)); +// } +// }); +// +// DashLoader.LOG.info("saved {}/{} item models", outItemModels.list().size(), itemModels.size()); +// DashLoader.LOG.info("missing {} item models", missingItemModels.size()); + + return new Data( + outModelPartsVariants, + outModelParts, + missingModelParts.toIntArray(), + outBlockModels, + missingBlockModels.toIntArray() +// outItemModels, +// missingItemModels.toIntArray() + ); + } + + @Override + public void load(Data data, RegistryReader reader, StepTask task) { + var modelParts = new HashMap(data.modelParts.list().size() + data.modelPartsVariants.list().size()); + var missingModelParts = new ArrayList(data.missingModelParts.length); + + var blockModels = new HashMap(data.blockModels.list().size()); + var missingBlockModels = new ArrayList(data.missingBlockModels.length); +// var itemModels = new HashMap(data.itemModels.list().size()); +// var missingItemModels = new ArrayList(data.missingItemModels.length); + + data.modelPartsVariants.forEach((id, entry) -> { + var thing = new HashMap>(); + entry.forEach((settings, model) -> { + thing.put(reader.get(settings), reader.get(model)); + }); + modelParts.put(reader.get(id), new MultiUnbakedBakedModel(thing)); + }); + + data.modelParts.forEach((id, model) -> { + modelParts.put(reader.get(id), new UnbakedBakedModel(reader.get(model))); + }); + + for (int id : data.missingModelParts) { + missingModelParts.add(reader.get(id)); + } + + data.blockModels.forEach((id, blockModel) -> { + BlockState blockState = reader.get(blockModel.key()); + var dazyModel = new UnbakedBakedGroupableModel(reader.get(blockModel.value())); + blockModels.put(reader.get(id), new BlockStatesLoader.BlockModel(blockState, dazyModel)); + }); + + for (int id : data.missingBlockModels) { + missingBlockModels.add(reader.get(id)); + } + +// data.itemModels.forEach((id, itemAsset) -> { +// ItemAsset.Properties properties = reader.get(itemAsset.value()); +// var model = reader.get(itemAsset.key()); +// itemModels.put(reader.get(id), new ItemAsset(model, properties)); +// }); + + MODEL_PARTS.set(CacheStatus.LOAD, modelParts); + MISSING_MODEL_PARTS.set(CacheStatus.LOAD, missingModelParts); + BLOCK_MODELS.set(CacheStatus.LOAD, blockModels); + MISSING_BLOCK_MODELS.set(CacheStatus.LOAD, missingBlockModels); +// ITEM_MODELS.set(CacheStatus.IDLE, itemModels); +// MISSING_ITEM_MODELS.set(CacheStatus.IDLE, missingItemModels); + } + + @Override + public Class getDataClass() { + return Data.class; + } + + @Override + public float taskWeight() { + return 1000; + } + + @Override + public boolean isActive() { + return ConfigHandler.optionActive(Option.CACHE_MODEL_LOADER); + } + + public static final class Data { + public final IntObjectList modelPartsVariants; + public final IntIntList modelParts; + public final int[] missingModelParts; + public final IntObjectList blockModels; + public final int[] missingBlockModels; +// public final IntObjectList itemModels; +// public final int[] missingItemModels; + + public Data( + IntObjectList modelPartsVariants, + IntIntList modelParts, + int[] missingModelParts, + IntObjectList blockModels, + int[] missingBlockModels +// IntObjectList itemModels, +// int[] missingItemModels + ) { + this.modelPartsVariants = modelPartsVariants; + this.modelParts = modelParts; + this.missingModelParts = missingModelParts; + this.blockModels = blockModels; + this.missingBlockModels = missingBlockModels; +// this.itemModels = itemModels; +// this.missingItemModels = missingItemModels; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java b/src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java new file mode 100644 index 00000000..71266611 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java @@ -0,0 +1,13 @@ +package dev.notalpha.dashloader.client.model.components; + +import net.minecraft.client.render.model.BakedQuad; + +import java.util.List; + +public class BakedQuadCollection { + public final List quads; + + public BakedQuadCollection(List quads) { + this.quads = quads; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java new file mode 100644 index 00000000..572af48e --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java @@ -0,0 +1,88 @@ +package dev.notalpha.dashloader.client.model.components; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.client.Dazy; +import dev.notalpha.dashloader.client.sprite.content.DashSprite; +import net.minecraft.client.model.SpriteGetter; +import net.minecraft.client.render.model.BakedQuad; +import net.minecraft.client.texture.Sprite; +import net.minecraft.util.math.Direction; + +import java.util.Arrays; + +public final class DashBakedQuad implements DashObject { + public final int[] vertexData; + public final int colorIndex; + public final Direction face; + public final boolean shade; + public final int sprite; + public final int lightEmission; + + public DashBakedQuad(int[] vertexData, int colorIndex, Direction face, boolean shade, + int sprite, int lightEmission) { + this.vertexData = vertexData; + this.colorIndex = colorIndex; + this.face = face; + this.shade = shade; + this.sprite = sprite; + this.lightEmission = lightEmission; + } + + public DashBakedQuad(BakedQuad bakedQuad, RegistryWriter writer) { + this(bakedQuad.getVertexData(), bakedQuad.getTintIndex(), bakedQuad.getFace(), bakedQuad.hasShade(), writer.add(bakedQuad.getSprite()), bakedQuad.getLightEmission()); + } + + public DazyImpl export(RegistryReader handler) { + return new DazyImpl(this.vertexData, this.colorIndex, this.face, this.shade, handler.get(this.sprite), this.lightEmission); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashBakedQuad that = (DashBakedQuad) o; + + if (colorIndex != that.colorIndex) return false; + if (shade != that.shade) return false; + if (sprite != that.sprite) return false; + if (!Arrays.equals(vertexData, that.vertexData)) return false; + return face == that.face; + } + + @Override + public int hashCode() { + int result = Arrays.hashCode(vertexData); + result = 31 * result + colorIndex; + result = 31 * result + face.hashCode(); + result = 31 * result + (shade ? 1 : 0); + result = 31 * result + sprite; + return result; + } + + public static class DazyImpl extends Dazy { + public final int[] vertexData; + public final int colorIndex; + public final Direction face; + public final boolean shade; + public final DashSprite.DazyImpl sprite; + public final int lightEmission; + + public DazyImpl(int[] vertexData, int colorIndex, Direction face, boolean shade, DashSprite.DazyImpl sprite, int lightEmission) { + this.vertexData = vertexData; + this.colorIndex = colorIndex; + this.face = face; + this.shade = shade; + this.sprite = sprite; + this.lightEmission = lightEmission; + } + + @Override + protected BakedQuad resolve(SpriteGetter spriteLoader) { + Sprite sprite = this.sprite.get(spriteLoader); + return new BakedQuad(vertexData, colorIndex, face, sprite, shade, lightEmission); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java new file mode 100644 index 00000000..e2044fe7 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java @@ -0,0 +1,67 @@ +package dev.notalpha.dashloader.client.model.components; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.client.Dazy; +import net.minecraft.client.model.SpriteGetter; +import net.minecraft.client.render.model.BakedQuad; + +import java.util.ArrayList; +import java.util.List; + +public class DashBakedQuadCollection implements DashObject { + public final List quads; + + public DashBakedQuadCollection(List quads) { + this.quads = quads; + } + + public DashBakedQuadCollection(BakedQuadCollection quads, RegistryWriter writer) { + this.quads = new ArrayList<>(); + for (BakedQuad quad : quads.quads) { + this.quads.add(writer.add(quad)); + } + } + + @Override + public DazyImpl export(RegistryReader reader) { + var out = new ArrayList(this.quads.size()); + for (Integer quad : this.quads) { + out.add(reader.get(quad)); + } + return new DazyImpl(out); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashBakedQuadCollection that = (DashBakedQuadCollection) o; + + return quads.equals(that.quads); + } + + @Override + public int hashCode() { + return quads.hashCode(); + } + + public static class DazyImpl extends Dazy> { + public final List quads; + + public DazyImpl(List quads) { + this.quads = quads; + } + + @Override + protected List resolve(SpriteGetter spriteLoader) { + var out = new ArrayList(quads.size()); + quads.forEach( + dazyBakedQuad -> out.add(dazyBakedQuad.get(spriteLoader)) + ); + return out; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashMesh.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashMesh.java new file mode 100644 index 00000000..809b85d5 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashMesh.java @@ -0,0 +1,83 @@ +package dev.notalpha.dashloader.client.model.components; + +import dev.notalpha.dashloader.misc.UnsafeHelper; +import net.fabricmc.fabric.api.renderer.v1.mesh.Mesh; + +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public final class DashMesh { + public static final Map> CLASS_CACHE = new ConcurrentHashMap<>(); + public final int[] data; + public final String className; + + public DashMesh(int[] data, String className) { + this.data = data; + this.className = className; + } + + public DashMesh(Mesh mesh) { + this(getData(mesh), mesh.getClass().getName()); + } + + private static int[] getData(Mesh mesh) { + final int[] data; + try { + final Field field = mesh.getClass().getDeclaredField("data"); + field.setAccessible(true); + data = (int[]) field.get(mesh); + } catch (IllegalAccessException | NoSuchFieldException e) { + throw new RuntimeException("Could not use Mesh field hack. ", e); + } + return data; + } + + public static Class getClass(final String className) { + final Class closs = CLASS_CACHE.get(className); + if (closs != null) { + return closs; + } + try { + final Class clz = Class.forName(className); + CLASS_CACHE.put(className, clz); + return clz; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public Mesh export() { + final Class aClass = getClass(this.className); + final Mesh mesh = (Mesh) UnsafeHelper.allocateInstance(aClass); + try { + assert aClass != null; + final Field data = aClass.getDeclaredField("data"); + data.setAccessible(true); + data.set(mesh, this.data); + } catch (IllegalAccessException | NoSuchFieldException e) { + throw new RuntimeException("Could not use Mesh field hack. ", e); + } + return mesh; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashMesh dashMesh = (DashMesh) o; + + if (!Arrays.equals(data, dashMesh.data)) return false; + return className.equals(dashMesh.className); + } + + @Override + public int hashCode() { + int result = Arrays.hashCode(data); + result = 31 * result + className.hashCode(); + return result; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java new file mode 100644 index 00000000..f6a89316 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java @@ -0,0 +1,66 @@ +package dev.notalpha.dashloader.client.model.components; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import net.minecraft.client.render.model.ModelBakeSettings; +import net.minecraft.util.math.AffineTransformation; +import org.joml.Matrix4f; + +import java.util.Arrays; + +public class DashModelBakeSettings implements DashObject { + public final float[] rotation; + public final boolean uvLock; + + public DashModelBakeSettings(float[] rotation, boolean uvLock) { + this.rotation = rotation; + this.uvLock = uvLock; + } + + public DashModelBakeSettings(BakeSettings settings, RegistryWriter writer) { + this.rotation = settings.getRotation().getMatrix().get(new float[16]); + this.uvLock = settings.isUvLocked(); + } + + public BakeSettings export(RegistryReader reader) { + return new BakeSettings(new AffineTransformation(new Matrix4f().set(rotation)), uvLock); + } + + public record BakeSettings(AffineTransformation rotation, boolean uvLock) implements ModelBakeSettings { + + public BakeSettings(ModelBakeSettings settings) { + this(settings.getRotation(), settings.isUvLocked()); + } + + @Override + public AffineTransformation getRotation() { + return rotation; + } + + @Override + public boolean isUvLocked() { + return uvLock; + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + var that = (BakeSettings) o; + + boolean b = Arrays.equals( + this.rotation.getMatrix().get(new float[16]), + that.rotation.getMatrix().get(new float[16]) + ); + + return b && uvLock == that.uvLock; + } + + @Override + public int hashCode() { + int result = this.rotation.getMatrix().hashCode(); + result = 31 * result + (this.uvLock ? 1 : 0); + return result; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java new file mode 100644 index 00000000..fd9fa1cb --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java @@ -0,0 +1,133 @@ +package dev.notalpha.dashloader.client.model.components; + +import dev.notalpha.hyphen.scan.annotations.DataNullable; +import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.render.model.json.Transformation; +import org.jetbrains.annotations.Nullable; + +import java.util.Objects; + +public final class DashModelTransformation { + @DataNullable + public final Transformation thirdPersonLeftHand; + @DataNullable + public final Transformation thirdPersonRightHand; + @DataNullable + public final Transformation firstPersonLeftHand; + @DataNullable + public final Transformation firstPersonRightHand; + @DataNullable + public final Transformation head; + @DataNullable + public final Transformation gui; + @DataNullable + public final Transformation ground; + @DataNullable + public final Transformation fixed; + public transient int nullTransformations = 0; + + public DashModelTransformation(@Nullable Transformation thirdPersonLeftHand, @Nullable Transformation thirdPersonRightHand, @Nullable Transformation firstPersonLeftHand, @Nullable Transformation firstPersonRightHand, @Nullable Transformation head, @Nullable Transformation gui, @Nullable Transformation ground, @Nullable Transformation fixed) { + this.thirdPersonLeftHand = thirdPersonLeftHand; + this.thirdPersonRightHand = thirdPersonRightHand; + this.firstPersonLeftHand = firstPersonLeftHand; + this.firstPersonRightHand = firstPersonRightHand; + this.head = head; + this.gui = gui; + this.ground = ground; + this.fixed = fixed; + } + + public DashModelTransformation(ModelTransformation other) { + this.thirdPersonLeftHand = this.createTransformation(other.thirdPersonLeftHand); + this.thirdPersonRightHand = this.createTransformation(other.thirdPersonRightHand); + this.firstPersonLeftHand = this.createTransformation(other.firstPersonLeftHand); + this.firstPersonRightHand = this.createTransformation(other.firstPersonRightHand); + this.head = this.createTransformation(other.head); + this.gui = this.createTransformation(other.gui); + this.ground = this.createTransformation(other.ground); + this.fixed = this.createTransformation(other.fixed); + } + + @Nullable + public static DashModelTransformation createDashOrReturnNullIfDefault(ModelTransformation other) { + if (other == ModelTransformation.NONE) { + return null; + } + + DashModelTransformation out = new DashModelTransformation(other); + + if (out.nullTransformations == 8) { + return null; + } + + return out; + } + + public static ModelTransformation exportOrDefault(@Nullable DashModelTransformation other) { + if (other == null) { + return ModelTransformation.NONE; + } + + return other.export(); + } + + private Transformation createTransformation(Transformation transformation) { + if (transformation == Transformation.IDENTITY) { + this.nullTransformations++; + return null; + } else { + return transformation; + } + } + + private Transformation unTransformation(Transformation transformation) { + return transformation == null ? Transformation.IDENTITY : transformation; + } + + public ModelTransformation export() { + return new ModelTransformation( + this.unTransformation(this.thirdPersonLeftHand), + this.unTransformation(this.thirdPersonRightHand), + this.unTransformation(this.firstPersonLeftHand), + this.unTransformation(this.firstPersonRightHand), + this.unTransformation(this.head), + this.unTransformation(this.gui), + this.unTransformation(this.ground), + this.unTransformation(this.fixed) + ); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashModelTransformation that = (DashModelTransformation) o; + + if (!Objects.equals(thirdPersonLeftHand, that.thirdPersonLeftHand)) + return false; + if (!Objects.equals(thirdPersonRightHand, that.thirdPersonRightHand)) + return false; + if (!Objects.equals(firstPersonLeftHand, that.firstPersonLeftHand)) + return false; + if (!Objects.equals(firstPersonRightHand, that.firstPersonRightHand)) + return false; + if (!Objects.equals(head, that.head)) return false; + if (!Objects.equals(gui, that.gui)) return false; + if (!Objects.equals(ground, that.ground)) return false; + return Objects.equals(fixed, that.fixed); + } + + @Override + public int hashCode() { + int result = thirdPersonLeftHand != null ? thirdPersonLeftHand.hashCode() : 0; + result = 31 * result + (thirdPersonRightHand != null ? thirdPersonRightHand.hashCode() : 0); + result = 31 * result + (firstPersonLeftHand != null ? firstPersonLeftHand.hashCode() : 0); + result = 31 * result + (firstPersonRightHand != null ? firstPersonRightHand.hashCode() : 0); + result = 31 * result + (head != null ? head.hashCode() : 0); + result = 31 * result + (gui != null ? gui.hashCode() : 0); + result = 31 * result + (ground != null ? ground.hashCode() : 0); + result = 31 * result + (fixed != null ? fixed.hashCode() : 0); + return result; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java new file mode 100644 index 00000000..5669fa55 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java @@ -0,0 +1,43 @@ +package dev.notalpha.dashloader.client.model.components; + +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.client.model.DashWeightedBakedModel; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.util.collection.Weighted; + +public final class DashWeightedModelEntry { + public final int model; + public final int weight; + + public DashWeightedModelEntry(int model, int weight) { + this.model = model; + this.weight = weight; + } + + public DashWeightedModelEntry(Weighted.Present entry, RegistryWriter writer) { + this(writer.add(entry.data()), entry.getWeight().getValue()); + } + + public DashWeightedBakedModel.DazyImpl.Entry export(RegistryReader handler) { + return new DashWeightedBakedModel.DazyImpl.Entry(this.weight, handler.get(this.model)); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashWeightedModelEntry that = (DashWeightedModelEntry) o; + + if (model != that.model) return false; + return weight == that.weight; + } + + @Override + public int hashCode() { + int result = model; + result = 31 * result + weight; + return result; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java new file mode 100644 index 00000000..0f238566 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java @@ -0,0 +1,29 @@ +package dev.notalpha.dashloader.client.model.fallback; + +import dev.notalpha.dashloader.client.Dazy; +import dev.notalpha.dashloader.client.model.components.DashModelBakeSettings; +import net.minecraft.client.render.model.*; +import net.minecraft.client.render.model.json.ModelTransformation; + +import java.util.Map; + +/** + * Same as {@linkplain UnbakedBakedModel}, but respects provided bake settings + */ +public class MultiUnbakedBakedModel implements UnbakedModel { + private final Map> models; + + public MultiUnbakedBakedModel(Map> models) { + this.models = models; + } + + @Override + public void resolve(Resolver resolver) { + } + + @Override + public BakedModel bake(ModelTextures textures, Baker baker, ModelBakeSettings settings, boolean ambientOcclusion, boolean isSideLit, ModelTransformation transformation) { + var model = this.models.get(new DashModelBakeSettings.BakeSettings(settings)); + return model.get(baker.getSpriteGetter()); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java new file mode 100644 index 00000000..a4551530 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java @@ -0,0 +1,33 @@ +package dev.notalpha.dashloader.client.model.fallback; + +import dev.notalpha.dashloader.client.Dazy; +import net.minecraft.block.BlockState; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.Baker; +import net.minecraft.client.render.model.GroupableModel; + +/** + * Same as {@linkplain UnbakedBakedModel}, but for {@linkplain GroupableModel} + */ +public class UnbakedBakedGroupableModel implements GroupableModel { + private final Dazy bakedModel; + + public UnbakedBakedGroupableModel(Dazy bakedModel) { + this.bakedModel = bakedModel; + } + + @Override + public BakedModel bake(Baker baker) { + return this.bakedModel.get(baker.getSpriteGetter()); + } + + @Override + public Object getEqualityGroup(BlockState state) { + return null; + } + + @Override + public void resolve(Resolver resolver) { + + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java new file mode 100644 index 00000000..43fe159b --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java @@ -0,0 +1,25 @@ +package dev.notalpha.dashloader.client.model.fallback; + +import dev.notalpha.dashloader.client.Dazy; +import net.minecraft.client.render.model.*; +import net.minecraft.client.render.model.json.ModelTransformation; + +/** + * An unbaked model which holds a baked model, used for fallback to reuse cached models. + */ +public class UnbakedBakedModel implements UnbakedModel { + private final Dazy bakedModel; + + public UnbakedBakedModel(Dazy bakedModel) { + this.bakedModel = bakedModel; + } + + @Override + public void resolve(Resolver resolver) { + } + + @Override + public BakedModel bake(ModelTextures textures, Baker baker, ModelBakeSettings settings, boolean ambientOcclusion, boolean isSideLit, ModelTransformation transformation) { + return this.bakedModel.get(baker.getSpriteGetter()); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java new file mode 100644 index 00000000..c699e8c8 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java @@ -0,0 +1,25 @@ +package dev.notalpha.dashloader.client.model.predicates; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.client.render.model.json.MultipartModelSelector; +import net.minecraft.state.StateManager; + +import java.util.function.Predicate; + +public class BooleanSelector implements MultipartModelSelector { + public final boolean selector; + + public BooleanSelector(boolean selector) { + this.selector = selector; + } + + public BooleanSelector(MultipartModelSelector selector) { + this.selector = selector == MultipartModelSelector.TRUE; + } + + @Override + public Predicate getPredicate(StateManager stateFactory) { + return blockState -> selector; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java new file mode 100644 index 00000000..45377653 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java @@ -0,0 +1,61 @@ +package dev.notalpha.dashloader.client.model.predicates; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.mixin.accessor.AndMultipartModelSelectorAccessor; +import net.minecraft.client.render.model.json.AndMultipartModelSelector; +import net.minecraft.client.render.model.json.MultipartModelSelector; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public final class DashAndPredicate implements DashObject { + public final int[] selectors; + + public DashAndPredicate(int[] selectors) { + this.selectors = selectors; + } + + public DashAndPredicate(AndMultipartModelSelector selector, RegistryWriter writer) { + AndMultipartModelSelectorAccessor access = ((AndMultipartModelSelectorAccessor) selector); + + Iterable accessSelectors = access.getSelectors(); + int count = 0; + for (MultipartModelSelector ignored : accessSelectors) { + count += 1; + } + this.selectors = new int[count]; + + int i = 0; + for (MultipartModelSelector accessSelector : accessSelectors) { + this.selectors[i++] = writer.add(accessSelector); + } + } + + @Override + public AndMultipartModelSelector export(RegistryReader handler) { + final List selectors = new ArrayList<>(this.selectors.length); + for (int accessSelector : this.selectors) { + selectors.add(handler.get(accessSelector)); + } + + return new AndMultipartModelSelector(selectors); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashAndPredicate that = (DashAndPredicate) o; + + return Arrays.equals(selectors, that.selectors); + } + + @Override + public int hashCode() { + return Arrays.hashCode(selectors); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java new file mode 100644 index 00000000..9fe106ab --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java @@ -0,0 +1,61 @@ +package dev.notalpha.dashloader.client.model.predicates; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.mixin.accessor.OrMultipartModelSelectorAccessor; +import net.minecraft.client.render.model.json.MultipartModelSelector; +import net.minecraft.client.render.model.json.OrMultipartModelSelector; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public final class DashOrPredicate implements DashObject { + public final int[] selectors; + + public DashOrPredicate(int[] selectors) { + this.selectors = selectors; + } + + public DashOrPredicate(OrMultipartModelSelector selector, RegistryWriter writer) { + OrMultipartModelSelectorAccessor access = ((OrMultipartModelSelectorAccessor) selector); + + Iterable accessSelectors = access.getSelectors(); + int count = 0; + for (MultipartModelSelector ignored : accessSelectors) { + count += 1; + } + this.selectors = new int[count]; + + int i = 0; + for (MultipartModelSelector accessSelector : accessSelectors) { + this.selectors[i++] = writer.add(accessSelector); + } + } + + @Override + public OrMultipartModelSelector export(RegistryReader handler) { + final List selectors = new ArrayList<>(this.selectors.length); + for (int accessSelector : this.selectors) { + selectors.add(handler.get(accessSelector)); + } + + return new OrMultipartModelSelector(selectors); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashOrPredicate that = (DashOrPredicate) o; + + return Arrays.equals(selectors, that.selectors); + } + + @Override + public int hashCode() { + return Arrays.hashCode(selectors); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java new file mode 100644 index 00000000..102ba679 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java @@ -0,0 +1,45 @@ +package dev.notalpha.dashloader.client.model.predicates; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.mixin.accessor.SimpleMultipartModelSelectorAccessor; +import net.minecraft.client.render.model.json.SimpleMultipartModelSelector; + +public final class DashSimplePredicate implements DashObject { + public final String key; + public final String valueString; + + public DashSimplePredicate(String key, String valueString) { + this.key = key; + this.valueString = valueString; + } + + public DashSimplePredicate(SimpleMultipartModelSelector simpleMultipartModelSelector) { + var access = ((SimpleMultipartModelSelectorAccessor) simpleMultipartModelSelector); + this.key = access.getKey(); + this.valueString = access.getValueString(); + } + + @Override + public SimpleMultipartModelSelector export(RegistryReader handler) { + return new SimpleMultipartModelSelector(this.key, this.valueString); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashSimplePredicate that = (DashSimplePredicate) o; + + if (!key.equals(that.key)) return false; + return valueString.equals(that.valueString); + } + + @Override + public int hashCode() { + int result = key.hashCode(); + result = 31 * result + valueString.hashCode(); + return result; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashStaticPredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashStaticPredicate.java new file mode 100644 index 00000000..f4419be8 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashStaticPredicate.java @@ -0,0 +1,36 @@ +package dev.notalpha.dashloader.client.model.predicates; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; + +public final class DashStaticPredicate implements DashObject { + public final boolean value; + + public DashStaticPredicate(boolean value) { + this.value = value; + } + + public DashStaticPredicate(BooleanSelector multipartModelSelector) { + this.value = multipartModelSelector.selector; + } + + @Override + public BooleanSelector export(RegistryReader exportHandler) { + return new BooleanSelector(value); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashStaticPredicate that = (DashStaticPredicate) o; + + return value == that.value; + } + + @Override + public int hashCode() { + return (value ? 1 : 0); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java new file mode 100644 index 00000000..37dfa9b8 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java @@ -0,0 +1,35 @@ +package dev.notalpha.dashloader.client.shader; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.collection.ObjectObjectList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import net.minecraft.client.gl.Defines; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; + +public class DashDefines implements DashObject { + public final ObjectObjectList values; + public final String[] flags; + + public DashDefines(Defines defines) { + this.values = new ObjectObjectList<>(new ArrayList<>(defines.values().size())); + defines.values().forEach(this.values::put); + + this.flags = defines.flags().toArray(new String[0]); + } + + public DashDefines(ObjectObjectList values, String[] flags) { + this.values = values; + this.flags = flags; + } + + @Override + public Defines export(RegistryReader reader) { + var map = new HashMap(this.values.list().size()); + this.values.forEach(map::put); + return new Defines(map, new HashSet<>(List.of(this.flags))); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java new file mode 100644 index 00000000..f64c9c29 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java @@ -0,0 +1,44 @@ +package dev.notalpha.dashloader.client.shader; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.collection.IntIntList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import net.minecraft.client.gl.PostEffectPipeline; +import net.minecraft.util.Identifier; + +import java.util.ArrayList; +import java.util.HashMap; + +public class DashPostEffectPipeline implements DashObject { + public final IntIntList targets; + public final int[] passes; + + public DashPostEffectPipeline(PostEffectPipeline pipeline, RegistryWriter writer) { + this.targets = new IntIntList(new ArrayList<>(pipeline.internalTargets().size())); + pipeline.internalTargets().forEach((identifier, targets) -> { + this.targets.put(writer.add(identifier), writer.add(targets)); + }); + + this.passes = new int[pipeline.passes().size()]; + for (int i = 0; i < this.passes.length; i++) { + this.passes[i] = writer.add(pipeline.passes().get(i)); + } + } + + public DashPostEffectPipeline(IntIntList targets, int[] passes) { + this.targets = targets; + this.passes = passes; + } + + @Override + public PostEffectPipeline export(RegistryReader reader) { + var targets = new HashMap(this.targets.list().size()); + var passes = new ArrayList(this.passes.length); + this.targets.forEach((key, value) -> targets.put(reader.get(key), reader.get(value))); + for (int pass : this.passes) { + passes.add(reader.get(pass)); + } + return new PostEffectPipeline(targets, passes); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java new file mode 100644 index 00000000..1266c946 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java @@ -0,0 +1,54 @@ +package dev.notalpha.dashloader.client.shader; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import net.minecraft.client.gl.ShaderProgramDefinition; + +import java.util.ArrayList; + +public class DashShaderProgramDefinition implements DashObject { + public final int vertex; + public final int fragment; + public final String[] samplers; + public final int[] uniforms; + public final int defines; + + public DashShaderProgramDefinition(ShaderProgramDefinition thing, RegistryWriter writer) { + this.vertex = writer.add(thing.vertex()); + this.fragment = writer.add(thing.fragment()); + this.samplers = new String[thing.samplers().size()]; + for (int i = 0; i < this.samplers.length; i++) { + this.samplers[i] = thing.samplers().get(i).name(); + } + this.uniforms = new int[thing.uniforms().size()]; + for (int i = 0; i < this.uniforms.length; i++) { + this.uniforms[i] = writer.add(thing.uniforms().get(i)); + } + this.defines = writer.add(thing.defines()); + } + + public DashShaderProgramDefinition(int vertex, int fragment, String[] samplers, int[] uniforms, int defines) { + this.vertex = vertex; + this.fragment = fragment; + this.samplers = samplers; + this.uniforms = uniforms; + this.defines = defines; + } + + @Override + public ShaderProgramDefinition export(RegistryReader reader) { + var samplers = new ArrayList(this.samplers.length); + var uniforms = new ArrayList(this.uniforms.length); + + for (String sampler : this.samplers) { + samplers.add(new ShaderProgramDefinition.Sampler(sampler)); + } + for (int uniform : this.uniforms) { + uniforms.add(reader.get(uniform)); + } + + return new ShaderProgramDefinition(reader.get(this.vertex), reader.get(this.fragment), + samplers, uniforms, reader.get(this.defines)); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java new file mode 100644 index 00000000..dde96751 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java @@ -0,0 +1,42 @@ +package dev.notalpha.dashloader.client.shader; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import net.minecraft.client.gl.ShaderProgramDefinition; + +import java.util.ArrayList; +import java.util.List; + + +public class DashShaderProgramDefinitionUniform implements DashObject { + public final String name; + public final String type; + public final int count; + public final float[] values; + + public DashShaderProgramDefinitionUniform(ShaderProgramDefinition.Uniform uniform) { + this.name = uniform.name(); + this.type = uniform.type(); + this.count = uniform.count(); + this.values = new float[uniform.values().size()]; + for (int i = 0; i < uniform.values().size(); i++) { + this.values[i] = uniform.values().get(i); + } + } + + public DashShaderProgramDefinitionUniform(String name, String type, int count, float[] values) { + this.name = name; + this.type = type; + this.count = count; + this.values = values; + } + + @Override + public ShaderProgramDefinition.Uniform export(RegistryReader reader) { + List values = new ArrayList<>(this.values.length); + for (float f : this.values) { + values.add(f); + } + return new ShaderProgramDefinition.Uniform(this.name, this.type, this.count, values); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java new file mode 100644 index 00000000..8b2301a1 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java @@ -0,0 +1,37 @@ +package dev.notalpha.dashloader.client.shader; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import net.minecraft.client.gl.Defines; +import net.minecraft.client.gl.ShaderProgramKey; + +import java.util.HashSet; +import java.util.List; +import java.util.Map; + +public class DashShaderProgramKey implements DashObject { + public final int id; + public final int vertex; + public final Map values; + public final String[] flags; + + public DashShaderProgramKey(ShaderProgramKey key, RegistryWriter writer) { + this.id = writer.add(key.configId()); + this.vertex = writer.add(key.vertexFormat()); + this.values = key.defines().values(); + this.flags = key.defines().flags().toArray(String[]::new); + } + + public DashShaderProgramKey(int id, int vertex, Map values, String[] flags) { + this.id = id; + this.vertex = vertex; + this.values = values; + this.flags = flags; + } + + @Override + public ShaderProgramKey export(RegistryReader reader) { + return new ShaderProgramKey(reader.get(id), reader.get(vertex), new Defines(this.values, new HashSet<>(List.of(this.flags)))); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java new file mode 100644 index 00000000..3e22455e --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java @@ -0,0 +1,27 @@ +package dev.notalpha.dashloader.client.shader; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import net.minecraft.client.gl.CompiledShader; +import net.minecraft.client.gl.ShaderLoader.ShaderSourceKey; + +public class DashShaderSourceKey implements DashObject { + public final int id; + public final int type; + + public DashShaderSourceKey(ShaderSourceKey key, RegistryWriter writer) { + this.id = writer.add(key.id()); + this.type = key.type().ordinal(); + } + + public DashShaderSourceKey(int id, int type) { + this.id = id; + this.type = type; + } + + @Override + public ShaderSourceKey export(RegistryReader reader) { + return new ShaderSourceKey(reader.get(this.id), CompiledShader.Type.values()[this.type]); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java b/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java new file mode 100644 index 00000000..bdb07221 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java @@ -0,0 +1,98 @@ +package dev.notalpha.dashloader.client.shader; + +import dev.notalpha.dashloader.api.CachingData; +import dev.notalpha.dashloader.api.DashModule; +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.api.collection.IntIntList; +import dev.notalpha.dashloader.api.collection.IntObjectList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.config.Option; +import dev.notalpha.taski.builtin.StepTask; +import net.minecraft.client.gl.ShaderLoader; +import net.minecraft.client.gl.ShaderProgramDefinition; +import net.minecraft.util.Identifier; + +import java.util.ArrayList; +import java.util.HashMap; + +public class ShaderModule implements DashModule { + public static final CachingData> SHADER_SOURCES = new CachingData<>(); + public static final CachingData> SHADER_DEFINITIONS = new CachingData<>(); +// public static final CachingData> POST_EFFECTS = new CachingData<>(); // TODO + + + @Override + public void reset(Cache cache) { + SHADER_SOURCES.reset(cache, new HashMap<>()); + SHADER_DEFINITIONS.reset(cache, new HashMap<>()); +// POST_EFFECTS.reset(cache, new HashMap<>()); + } + + @Override + public Data save(RegistryWriter factory, StepTask task) { + var data1 = SHADER_SOURCES.get(CacheStatus.SAVE); + var data2 = SHADER_DEFINITIONS.get(CacheStatus.SAVE); +// var data3 = POST_EFFECTS.get(CacheStatus.SAVE); + + if (data1 == null || data2 == null) { + return null; + } + + var out = new IntObjectList(new ArrayList<>(data1.size())); + var out2 = new IntIntList(new ArrayList<>(data2.size())); +// var out3 = new IntIntList(new ArrayList<>(data3.size())); + + data1.forEach((identifier, entry) -> { + out.put(factory.add(identifier), entry); + }); + + data2.forEach(((identifier, entry) -> { + out2.put(factory.add(identifier), factory.add(entry)); + })); + +// data3.forEach((identifier, entry) -> { +// out3.put(factory.add(identifier), factory.add(entry)); +// }); + + return new Data(out, out2); + } + + @Override + public void load(Data data, RegistryReader reader, StepTask task) { + var out1 = new HashMap(data.data1.list().size()); + var out2 = new HashMap(data.data2.list().size()); +// var out3 = new HashMap(data.data3.list().size()); + data.data1.forEach((key, value) -> out1.put(reader.get(key), value)); + data.data2.forEach((key, value) -> out2.put(reader.get(key), reader.get(value))); +// data.data3.forEach((key, value) -> out3.put(reader.get(key), reader.get(value))); + + SHADER_SOURCES.set(CacheStatus.LOAD, out1); + SHADER_DEFINITIONS.set(CacheStatus.LOAD, out2); +// POST_EFFECTS.set(CacheStatus.LOAD, out3); + } + + @Override + public Class getDataClass() { + return Data.class; + } + + @Override + public boolean isActive() { + return ConfigHandler.optionActive(Option.CACHE_SHADER); + } + + public static final class Data { + public final IntObjectList data1; + public final IntIntList data2; +// public final IntIntList data3; + + public Data(IntObjectList data1, IntIntList data2) { + this.data1 = data1; + this.data2 = data2; +// this.data3 = data3; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/splash/SplashModule.java b/src/main/java/dev/notalpha/dashloader/client/splash/SplashModule.java new file mode 100644 index 00000000..51f91104 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/splash/SplashModule.java @@ -0,0 +1,56 @@ +package dev.notalpha.dashloader.client.splash; + +import dev.notalpha.dashloader.api.CachingData; +import dev.notalpha.dashloader.api.DashModule; +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.config.Option; +import dev.notalpha.taski.builtin.StepTask; + +import java.util.ArrayList; +import java.util.List; + +public class SplashModule implements DashModule { + public static final CachingData> TEXTS = new CachingData<>(); + + @Override + public void reset(Cache cache) { + TEXTS.reset(cache, new ArrayList<>()); + } + + @Override + public Data save(RegistryWriter writer, StepTask task) { + return new Data(TEXTS.get(CacheStatus.SAVE)); + } + + @Override + public void load(Data data, RegistryReader reader, StepTask task) { + TEXTS.set(CacheStatus.LOAD, data.splashList); + } + + @Override + public Class getDataClass() { + return SplashModule.Data.class; + } + + @Override + public boolean isActive() { + return ConfigHandler.optionActive(Option.CACHE_SPLASH_TEXT); + } + + @Override + public float taskWeight() { + return 1; + } + + public static final class Data { + public final List splashList; + + public Data(List splashList) { + this.splashList = splashList; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java new file mode 100644 index 00000000..acb64be9 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java @@ -0,0 +1,55 @@ +package dev.notalpha.dashloader.client.sprite.content; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.io.def.NativeImageData; +import dev.notalpha.dashloader.mixin.accessor.NativeImageAccessor; +import net.minecraft.client.texture.NativeImage; +import org.lwjgl.system.MemoryUtil; + +import java.nio.ByteBuffer; + +public final class DashImage implements DashObject { + public final NativeImageData image; + public final NativeImage.Format format; + public final boolean useSTB; + public final int width; + public final int height; + + public DashImage(NativeImage nativeImage) { + NativeImageAccessor nativeImageAccess = (NativeImageAccessor) (Object) nativeImage; + this.format = nativeImage.getFormat(); + this.width = nativeImage.getWidth(); + this.height = nativeImage.getHeight(); + + final int capacity = this.width * this.height * this.format.getChannelCount(); + final long pointer = nativeImageAccess.getPointer(); + + this.useSTB = nativeImageAccess.getIsStbImage(); + + ByteBuffer image1 = MemoryUtil.memByteBuffer(pointer, capacity); + image1.limit(capacity); + this.image = new NativeImageData(image1, this.useSTB); + } + + public DashImage(NativeImageData image, NativeImage.Format format, boolean useSTB, int width, int height) { + this.image = image; + this.format = format; + this.useSTB = useSTB; + this.width = width; + this.height = height; + } + + /** + *

I can bet that next dashloader version will change this again. This method needs some serious over engineering.

+ * + * @param registry da registry + * @return da image + */ + @Override + public NativeImage export(final RegistryReader registry) { + image.buffer.rewind(); + long pointer = MemoryUtil.memAddress(image.buffer); + return NativeImageAccessor.init(this.format, this.width, this.height, this.useSTB, pointer); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java new file mode 100644 index 00000000..17f19586 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java @@ -0,0 +1,54 @@ +package dev.notalpha.dashloader.client.sprite.content; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.client.Dazy; +import net.minecraft.client.model.SpriteGetter; +import net.minecraft.client.texture.Sprite; +import net.minecraft.client.util.SpriteIdentifier; + +public class DashSprite implements DashObject { + public final int id; + + public DashSprite(int id) { + this.id = id; + } + + public DashSprite(Sprite sprite, RegistryWriter writer) { + this.id = writer.add(new SpriteIdentifier(sprite.getAtlasId(), sprite.getContents().getId())); + } + + @Override + public DazyImpl export(final RegistryReader registry) { + return new DazyImpl(registry.get(id)); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashSprite that = (DashSprite) o; + + return id == that.id; + } + + @Override + public int hashCode() { + return id; + } + + public static class DazyImpl extends Dazy { + public final SpriteIdentifier location; + + public DazyImpl(SpriteIdentifier location) { + this.location = location; + } + + @Override + protected Sprite resolve(SpriteGetter spriteLoader) { + return spriteLoader.get(location); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java new file mode 100644 index 00000000..550516a4 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java @@ -0,0 +1,67 @@ +package dev.notalpha.dashloader.client.sprite.content; + +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.mixin.accessor.SpriteAnimationAccessor; +import net.minecraft.client.texture.SpriteContents; + +import java.util.ArrayList; +import java.util.List; + +public final class DashSpriteAnimation { + public final List frames; + public final int frameCount; + public final boolean interpolation; + + public DashSpriteAnimation( + List frames, + int frameCount, + boolean interpolation) { + this.frames = frames; + this.frameCount = frameCount; + this.interpolation = interpolation; + } + + public DashSpriteAnimation(SpriteContents.Animation animation) { + SpriteAnimationAccessor access = ((SpriteAnimationAccessor) animation); + this.frames = new ArrayList<>(); + for (var frame : access.getFrames()) { + this.frames.add(new DashSpriteAnimationFrame(frame)); + } + this.frameCount = access.getFrameCount(); + this.interpolation = access.getInterpolation(); + } + + public SpriteContents.Animation export(SpriteContents owner, RegistryReader registry) { + var framesOut = new ArrayList(); + for (var frame : this.frames) { + framesOut.add(frame.export(registry)); + } + + return SpriteAnimationAccessor.init( + owner, + framesOut, + this.frameCount, + this.interpolation + ); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashSpriteAnimation that = (DashSpriteAnimation) o; + + if (frameCount != that.frameCount) return false; + if (interpolation != that.interpolation) return false; + return frames.equals(that.frames); + } + + @Override + public int hashCode() { + int result = frames.hashCode(); + result = 31 * result + frameCount; + result = 31 * result + (interpolation ? 1 : 0); + return result; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java new file mode 100644 index 00000000..63503be2 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java @@ -0,0 +1,44 @@ +package dev.notalpha.dashloader.client.sprite.content; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.mixin.accessor.SpriteAnimationFrameAccessor; +import net.minecraft.client.texture.SpriteContents; + +public final class DashSpriteAnimationFrame implements DashObject { + public final int index; + public final int time; + + public DashSpriteAnimationFrame(int index, int time) { + this.index = index; + this.time = time; + } + + public DashSpriteAnimationFrame(SpriteContents.AnimationFrame frame) { + this.index = frame.index(); + this.time = frame.time(); + } + + @Override + public SpriteContents.AnimationFrame export(RegistryReader exportHandler) { + return SpriteAnimationFrameAccessor.newSpriteFrame(this.index, this.time); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashSpriteAnimationFrame that = (DashSpriteAnimationFrame) o; + + if (index != that.index) return false; + return time == that.time; + } + + @Override + public int hashCode() { + int result = index; + result = 31 * result + time; + return result; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java new file mode 100644 index 00000000..196260c6 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java @@ -0,0 +1,100 @@ +package dev.notalpha.dashloader.client.sprite.content; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.misc.UnsafeHelper; +import dev.notalpha.dashloader.mixin.accessor.SpriteContentsAccessor; +import dev.notalpha.hyphen.scan.annotations.DataNullable; +import net.minecraft.client.texture.NativeImage; +import net.minecraft.client.texture.SpriteContents; +import org.jetbrains.annotations.Nullable; + +import java.lang.reflect.Method; +import java.util.Objects; + +public final class DashSpriteContents implements DashObject { + private final static Method sodiumScanMethod = getSodiumScanner(); + public final int id; + public final int image; + @Nullable + @DataNullable + public final DashSpriteAnimation animation; + public final int width; + public final int height; + + public DashSpriteContents(int id, int image, @Nullable DashSpriteAnimation animation, int width, int height) { + this.id = id; + this.image = image; + this.animation = animation; + this.width = width; + this.height = height; + } + + public DashSpriteContents(SpriteContents contents, RegistryWriter writer) { + var access = (SpriteContentsAccessor) contents; + this.id = writer.add(contents.getId()); + this.image = writer.add(access.getImage()); + this.width = contents.getWidth(); + this.height = contents.getHeight(); + SpriteContents.Animation animation = access.getAnimation(); + this.animation = animation == null ? null : new DashSpriteAnimation(animation); + } + + public SpriteContents export(RegistryReader reader) { + final SpriteContents out = UnsafeHelper.allocateInstance(SpriteContents.class); + var access = (SpriteContentsAccessor) out; + access.setId(reader.get(this.id)); + + NativeImage image = reader.get(this.image); + access.setImage(image); + access.setHeight(height); + access.setWidth(width); + access.setMipmapLevelsImages(new NativeImage[]{image}); + access.setAnimation(this.animation == null ? null : animation.export(out, reader)); + applySodiumScanning(out, image); // run important sodium method if present + return out; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashSpriteContents that = (DashSpriteContents) o; + + if (id != that.id) return false; + if (image != that.image) return false; + if (width != that.width) return false; + if (height != that.height) return false; + return Objects.equals(animation, that.animation); + } + + @Override + public int hashCode() { + int result = id; + result = 31 * result + image; + result = 31 * result + (animation != null ? animation.hashCode() : 0); + result = 31 * result + width; + result = 31 * result + height; + return result; + } + + private static Method getSodiumScanner() { + try { + Method scanSpriteContents = SpriteContents.class.getDeclaredMethod("scanSpriteContents", NativeImage.class); + scanSpriteContents.setAccessible(true); + return scanSpriteContents; + } catch (ReflectiveOperationException ignored) { + return null; + } + } + + private void applySodiumScanning(SpriteContents contents, NativeImage image) { + if (sodiumScanMethod == null) return; + try { + sodiumScanMethod.invoke(contents, image); + } catch (ReflectiveOperationException ignored) { + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java new file mode 100644 index 00000000..b3a2d766 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java @@ -0,0 +1,70 @@ +package dev.notalpha.dashloader.client.sprite.content; + +import dev.notalpha.dashloader.api.CachingData; +import dev.notalpha.dashloader.api.DashModule; +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.api.collection.IntIntList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.config.Option; +import dev.notalpha.taski.builtin.StepTask; +import net.minecraft.client.texture.SpriteContents; +import net.minecraft.util.Identifier; + +import java.util.HashMap; +import java.util.Map; + +public class SpriteContentModule implements DashModule { + public final static CachingData> SOURCE = new CachingData<>(); + + @Override + public void reset(Cache cache) { + SOURCE.reset(cache, new HashMap<>()); + } + + @Override + public Data save(RegistryWriter writer, StepTask task) { + var spriteData = SOURCE.get(CacheStatus.SAVE); + assert spriteData != null; + + var map = new IntIntList(); + task.doForEach(spriteData, (identifier, spriteContents) -> { + if (spriteContents != null) + map.put(writer.add(identifier), writer.add(spriteContents)); + }); + + return new Data(map); + } + + @Override + public void load(Data data, RegistryReader reader, StepTask task) { + Map spriteData = SOURCE.get(CacheStatus.LOAD); + assert spriteData != null; + + data.sprites.forEach((key, value) -> { + Identifier identifier = reader.get(key); + SpriteContents contents = reader.get(value); + spriteData.put(identifier, contents); + }); + } + + @Override + public boolean isActive() { + return ConfigHandler.optionActive(Option.CACHE_SPRITE_CONTENT); + } + + @Override + public Class getDataClass() { + return Data.class; + } + + public static class Data { + public final IntIntList sprites; + + public Data(IntIntList sprites) { + this.sprites = sprites; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java new file mode 100644 index 00000000..94e0b5d2 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java @@ -0,0 +1,84 @@ +package dev.notalpha.dashloader.client.sprite.stitch; + +import dev.notalpha.dashloader.api.collection.IntIntList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.taski.builtin.StepTask; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import net.minecraft.client.texture.Sprite; +import net.minecraft.client.texture.SpriteLoader; +import net.minecraft.util.Identifier; + +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +public final class DashStitchResult { + public final int width; + public final int height; + public final int mipLevel; + public final int missing; + public final IntIntList regions; + + public DashStitchResult(int width, int height, int mipLevel, int missing, IntIntList regions) { + this.width = width; + this.height = height; + this.mipLevel = mipLevel; + this.missing = missing; + this.regions = regions; + } + + public DashStitchResult(SpriteLoader.StitchResult stitchResult, RegistryWriter writer, StepTask task) { + this.width = stitchResult.width(); + this.height = stitchResult.height(); + this.mipLevel = stitchResult.mipLevel(); + this.missing = writer.add(stitchResult.missing()); + + this.regions = new IntIntList(); + stitchResult.regions().forEach((identifier, sprite) -> { + this.regions.put(writer.add(identifier), writer.add(sprite)); + task.next(); + }); + } + + public SpriteLoader.StitchResult export(RegistryReader reader) { + Map regions = new Object2ObjectOpenHashMap<>(); + this.regions.forEach((key, value) -> regions.put(reader.get(key), reader.get(value))); + + return new SpriteLoader.StitchResult( + this.width, + this.height, + this.mipLevel, + reader.get(this.missing), + regions, + CompletableFuture.runAsync( + () -> { + throw new RuntimeException("Cached object not yet finalized"); + } + ) + ); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DashStitchResult that = (DashStitchResult) o; + + if (width != that.width) return false; + if (height != that.height) return false; + if (mipLevel != that.mipLevel) return false; + if (missing != that.missing) return false; + return regions.equals(that.regions); + } + + @Override + public int hashCode() { + int result = width; + result = 31 * result + height; + result = 31 * result + mipLevel; + result = 31 * result + missing; + result = 31 * result + regions.hashCode(); + return result; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java new file mode 100644 index 00000000..01a60e0e --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java @@ -0,0 +1,18 @@ +package dev.notalpha.dashloader.client.sprite.stitch; + +import net.minecraft.client.texture.TextureStitcher; + +public class DashTextureSlot { + public final int x; + public final int y; + public final int width; + public final int height; + public transient T contents; + + public DashTextureSlot(int x, int y, int width, int height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java new file mode 100644 index 00000000..94b5564c --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java @@ -0,0 +1,155 @@ +package dev.notalpha.dashloader.client.sprite.stitch; + +import dev.notalpha.dashloader.DashLoader; +import dev.notalpha.dashloader.api.collection.IntObjectList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import net.minecraft.client.texture.TextureStitcher; +import net.minecraft.util.Identifier; +import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; +import java.util.Map; + +public class DashTextureStitcher extends TextureStitcher { + @Nullable + private ExportedData data; + private int remainingSlots; + + public DashTextureStitcher(int maxWidth, int maxHeight, int mipLevel, @Nullable ExportedData data) { + super(maxWidth, maxHeight, mipLevel); + this.data = data; + this.remainingSlots = data == null ? 0 : data.slots.size(); + } + + @Override + public int getWidth() { + if (this.data == null) { + return super.getWidth(); + } + return data.width; + } + + @Override + public int getHeight() { + if (this.data == null) { + return super.getHeight(); + } + return data.height; + } + + @Override + public void add(T info) { + if (data == null) { + super.add(info); + return; + } + + // If it starts recaching, doRecache will re-add the entries to the list. + var id = info.getId(); + var slot = data.slots.get(id); + if (slot == null) { + DashLoader.LOG.warn("Sprite {} was not cached last time.", id); + + doFallback(); + // This was never added to the slot, so it would not get added to super. + this.add(info); + return; + } + + if (slot.contents != null) { + DashLoader.LOG.warn("Sprite {} was added twice??", id); + } + + remainingSlots -= 1; + slot.contents = info; + + if (slot.width != info.getWidth() || slot.height != info.getHeight()) { + DashLoader.LOG.warn("Sprite {} had changed dimensions since last launch, falling back.", id); + doFallback(); + } + } + + public void doFallback() { + if (data != null) { + DashLoader.LOG.error("Using fallback on texture stitcher."); + var slots = data.slots; + data = null; + slots.forEach((identifier, tDashTextureSlot) -> { + if (tDashTextureSlot.contents != null) { + this.add(tDashTextureSlot.contents); + } + }); + } else { + DashLoader.LOG.error("Tried to fallback stitcher twice."); + } + } + + @Override + public void stitch() { + if (data != null && remainingSlots != 0) { + DashLoader.LOG.warn("Remaining slots did not match the cached amount, Falling back."); + data.slots.forEach((identifier, tDashTextureSlot) -> { + if (tDashTextureSlot.contents == null) { + DashLoader.LOG.error("Sprite {} was not requested", identifier); + } + }); + doFallback(); + } + + if (data == null) { + super.stitch(); + } + } + + @Override + public void getStitchedSprites(SpriteConsumer consumer) { + if (data == null) { + super.getStitchedSprites(consumer); + } else { + data.slots.forEach((identifier, dashTextureSlot) -> consumer.load(dashTextureSlot.contents, dashTextureSlot.x, dashTextureSlot.y)); + } + } + + public static class Data { + public final IntObjectList> slots; + public final int width; + public final int height; + + public Data(IntObjectList> slots, int width, int height) { + this.slots = slots; + this.width = width; + this.height = height; + } + + public Data(RegistryWriter factory, TextureStitcher stitcher) { + this.slots = new IntObjectList<>(); + stitcher.getStitchedSprites((info, x, y) -> this.slots.put(factory.add(info.getId()), new DashTextureSlot<>(x, y, info.getWidth(), info.getHeight()))); + this.width = stitcher.getWidth(); + this.height = stitcher.getHeight(); + } + + public ExportedData export(RegistryReader reader) { + var output = new HashMap>(); + this.slots.forEach((key, value) -> output.put(reader.get(key), value)); + + return new ExportedData<>( + output, + width, + height + ); + } + } + + public static class ExportedData { + public final Map> slots; + public final int width; + public final int height; + + public ExportedData(Map> slots, int width, int height) { + this.slots = slots; + this.width = width; + this.height = height; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java new file mode 100644 index 00000000..6a01dfbe --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java @@ -0,0 +1,91 @@ +package dev.notalpha.dashloader.client.sprite.stitch; + +import dev.notalpha.dashloader.DashLoader; +import dev.notalpha.dashloader.api.CachingData; +import dev.notalpha.dashloader.api.DashModule; +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.api.collection.IntObjectList; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.config.Option; +import dev.notalpha.taski.builtin.StepTask; +import net.minecraft.client.texture.TextureStitcher; +import net.minecraft.util.Identifier; +import org.apache.commons.lang3.tuple.Pair; + +import java.util.*; + +public class SpriteStitcherModule implements DashModule { + public final static CachingData>>> STITCHERS_SAVE = new CachingData<>(CacheStatus.SAVE); + public final static CachingData>> STITCHERS_LOAD = new CachingData<>(CacheStatus.LOAD); + + @Override + public void reset(Cache cache) { + STITCHERS_SAVE.reset(cache, new ArrayList<>()); + STITCHERS_LOAD.reset(cache, new HashMap<>()); + } + + @Override + public Data save(RegistryWriter writer, StepTask task) { + task.reset(2); + + var stitchers = new HashMap>(); + var duplicate = new HashSet(); + task.run(new StepTask("Caching Stitchers"), (stepTask) -> stepTask.doForEach(STITCHERS_SAVE.get(CacheStatus.SAVE), (pair) -> { + var identifier = pair.getLeft(); + var textureStitcher = pair.getRight(); + DashTextureStitcher.Data existing = stitchers.put(identifier, new DashTextureStitcher.Data<>(writer, textureStitcher)); + if (existing != null) { + duplicate.add(identifier); + } + })); + duplicate.forEach(identifier -> { + DashLoader.LOG.warn("Duplicate stitcher {}", identifier); + stitchers.remove(identifier); + }); + + var output = new IntObjectList>(); + + stitchers.forEach((identifier, data) -> output.put(writer.add(identifier), data)); + + //var results = new IntObjectList(); + //task.run(new StepTask("Caching Atlases"), (stepTask) -> { + // var map = ATLASES.get(CacheStatus.SAVE); + // stepTask.doForEach(map, (identifier, stitchResult) -> { + // StepTask atlases = new StepTask("atlas", stitchResult.regions().size()); + // task.setSubTask(atlases); + // results.put(factory.add(identifier), new DashStitchResult(stitchResult, factory, atlases)); + // }); + //}); + + return new Data(output); + } + + @Override + public void load(Data data, RegistryReader reader, StepTask task) { + var map = new HashMap>(); + data.stitchers.forEach((key, value) -> map.put(reader.get(key), value.export(reader))); + STITCHERS_LOAD.set(CacheStatus.LOAD, map); + } + + @Override + public Class getDataClass() { + return Data.class; + } + + @Override + public boolean isActive() { + return ConfigHandler.optionActive(Option.CACHE_SPRITE_STITCHING); + } + + public static final class Data { + public final IntObjectList> stitchers; + + public Data( + IntObjectList> stitchers) { + this.stitchers = stitchers; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/Color.java b/src/main/java/dev/notalpha/dashloader/client/ui/Color.java new file mode 100644 index 00000000..82f86854 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/ui/Color.java @@ -0,0 +1,45 @@ +package dev.notalpha.dashloader.client.ui; + +public class Color { + private final int rgba; + + public Color(int rgba) { + this.rgba = rgba; + } + + public Color(int red, int green, int blue, int alpha) { + this.rgba = ((red & 0xFF) << 24) | ((green & 0xFF) << 16) | ((blue & 0xFF) << 8) | (alpha & 0xFF); + } + + public Color(int red, int green, int blue) { + this(red, green, blue, 255); + } + + public int red() { + return (rgba >>> 24) & 0xFF; + } + + public int green() { + return (rgba >>> 16) & 0xFF; + } + + public int blue() { + return (rgba >>> 8) & 0xFF; + } + + public int alpha() { + return rgba & 0xFF; + } + + public int rgb() { + return rgba >>> 8; + } + + public int rgba() { + return rgba; + } + + public int argb() { + return this.rgb() | (this.alpha() << 24); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java b/src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java new file mode 100644 index 00000000..31b4c9e6 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java @@ -0,0 +1,78 @@ +package dev.notalpha.dashloader.client.ui; + +import dev.notalpha.dashloader.client.ui.widget.ConfigListWidget; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.config.Option; +import dev.notalpha.dashloader.misc.TranslationHelper; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.TextWidget; +import net.minecraft.screen.ScreenTexts; +import net.minecraft.text.Text; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public class ConfigScreen extends Screen { + private final Screen parent; + private final TranslationHelper translations = TranslationHelper.getInstance(); + private boolean listInitialized; + private ConfigListWidget configWidget; + + public ConfigScreen(Screen parent) { + super(Text.of("Dashloader config")); + this.parent = parent; + } + + @Override + public void init() { + initConfigWidget(); + + this.addDrawable(new TextWidget(0, 10, this.width, this.textRenderer.fontHeight / 2, Text.of(translations.get("config.title")), this.textRenderer)); + this.addDrawableChild(configWidget).update(); + + this.addDrawableChild(ButtonWidget.builder(ScreenTexts.CANCEL, button -> this.client.setScreen(this.parent)).dimensions(this.width / 2 - 154, this.height - 28, 150, 20).build()); + this.addDrawableChild(ButtonWidget.builder(ScreenTexts.DONE, button -> { + this.saveConfig(); + this.client.setScreen(this.parent); + }).dimensions(this.width / 2 + 4, this.height - 28, 150, 20).build()); + } + + private void initConfigWidget() { + if (this.listInitialized) { + this.configWidget.setDimensionsAndPosition(this.width, this.height - 57, 0, 24); + return; + } + + this.listInitialized = true; + this.configWidget = new ConfigListWidget(this.client, this.width, this.height - 57, 24, 20); + var list = configWidget; + + var config = ConfigHandler.INSTANCE.config; + + list.addCategory("config.category.behaviour"); + list.addIntSlider("config.compression", config.compression, 3, 0, 23, v -> config.compression = (byte) v); + list.addIntField("config.max_caches", config.maxCaches, 5, v -> config.maxCaches = v); + list.addBoolToggle("config.single_threaded_reading", config.singleThreadedReading, false, v -> config.singleThreadedReading = v); + + list.addCategory("config.category.visuals"); + list.addBoolToggle("config.caching_toast", config.showCachingToast, true, v -> config.showCachingToast = v); + list.addBoolToggle("config.default_splashes", config.addDefaultSplashLines, true, v -> config.addDefaultSplashLines = v); + + var splashes = config.customSplashLines.stream().map(s -> s.replace(";", ";;")).collect(Collectors.joining(";")); + + list.addTextField("config.custom_splashes", splashes, "", + v -> config.customSplashLines = v.isEmpty() ? List.of() : Arrays.stream(v.replace(";;", "\u0001").split(";")).map(s -> s.replace("\u0001", ";")).toList()); + + list.addCategory("config.category.features"); + for (Option module : Option.values()) { + list.addBoolToggle("config." + module.toString(), config.options.getOrDefault(module.toString(), true), true, v -> config.options.put(module.toString(), v)); + } + } + + private void saveConfig() { + this.configWidget.saveValues(); + ConfigHandler.INSTANCE.saveConfig(); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java b/src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java new file mode 100644 index 00000000..2ea450f4 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java @@ -0,0 +1,154 @@ +package dev.notalpha.dashloader.client.ui; + +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.text.Text; +import org.joml.Matrix4f; + +public class DrawerUtil { + public static final float GLOW_SIZE = 30f; + public static final float GLOW_STRENGTH = 0.1f; + public static final Color FAILED_COLOR = new Color(250, 68, 51); + public static final Color BACKGROUND_COLOR = new Color(34, 31, 34); + public static final Color FOREGROUND_COLOR = new Color(252, 252, 250); + public static final Color STATUS_COLOR = new Color(180, 180, 180); + public static final Color NEUTRAL_LINE = new Color(45, 42, 46); + public static final Color PROGRESS_TRACK = new Color(25, 25, 25); + private static final Color[] PROGRESS_COLORS = new Color[]{ + new Color(0xff, 0x61, 0x88), + new Color(0xfc, 0x98, 0x67), + new Color(0xff, 0xd8, 0x66), + new Color(0xa9, 0xdc, 0x76) + }; + + public static void drawRect(DrawContext context, int x, int y, int width, int height, Color color) { + final int x2 = width + x; + final int y2 = height + y; + context.fill(x, y, x2, y2, color.argb()); + } + + public static void drawText(DrawContext context, TextRenderer textRenderer, int x, int y, String text, Color color) { + context.drawTextWithShadow(textRenderer, Text.of(text), x, y - (textRenderer.fontHeight), color.argb()); + } + + private static void drawVertex(Matrix4f m4f, VertexConsumer c, float x, float y, Color color) { + c.vertex(m4f, x, y, 0f).color(color.red(), color.green(), color.blue(), color.alpha()); + } + + public static void drawGlow(Matrix4f b4, VertexConsumer c, float x, float y, float width, float height, float strength, Color color, boolean topLeft, boolean topRight, boolean bottomLeft, boolean bottomRight) { + Color end = withOpacity(color, 0); + Color glow = withOpacity(color, GLOW_STRENGTH * strength); + + Color tl = topLeft ? glow : end; + Color tr = topRight ? glow : end; + Color bl = bottomLeft ? glow : end; + Color br = bottomRight ? glow : end; + + Color tlEnd = new Color(tl.red(), tl.green(), tl.blue(), 0); + Color trEnd = new Color(tr.red(), tr.green(), tr.blue(), 0); + Color blEnd = new Color(bl.red(), bl.green(), bl.blue(), 0); + Color brEnd = new Color(br.red(), br.green(), br.blue(), 0); + + float x2 = x + width; + float y2 = y + height; + + // Inside + drawVertex(b4, c, x, y2, bl); // left bottom + drawVertex(b4, c, x2, y2, br); // right bottom + drawVertex(b4, c, x2, y, tr); // right top + drawVertex(b4, c, x, y, tl); // left top + + // Top + drawVertex(b4, c, x, y, tl); // left bottom + drawVertex(b4, c, x2, y, tr); // right bottom + drawVertex(b4, c, x2, y - GLOW_SIZE, trEnd); // right top + drawVertex(b4, c, x, y - GLOW_SIZE, tlEnd); // left top + + // Top Right + drawVertex(b4, c, x2, y - GLOW_SIZE, trEnd); // left top + drawVertex(b4, c, x2, y, tr); // left bottom + drawVertex(b4, c, x2 + GLOW_SIZE, y, trEnd); // right bottom + drawVertex(b4, c, x2 + GLOW_SIZE, y - GLOW_SIZE, trEnd); // right top + + // Top Left + drawVertex(b4, c, x, y - GLOW_SIZE, tlEnd); // right top + drawVertex(b4, c, x - GLOW_SIZE, y - GLOW_SIZE, tlEnd); // left top + drawVertex(b4, c, x - GLOW_SIZE, y, tlEnd); // left bottom + drawVertex(b4, c, x, y, tl); // right bottom + + // Bottom + drawVertex(b4, c, x2, y2 + GLOW_SIZE, brEnd); // right bottom + drawVertex(b4, c, x2, y2, br); // right top + drawVertex(b4, c, x, y2, bl); // left top + drawVertex(b4, c, x, y2 + GLOW_SIZE, blEnd); // left bottom + + // Bottom Right + drawVertex(b4, c, x2 + GLOW_SIZE, y2, brEnd); // right top + drawVertex(b4, c, x2, y2, br); // left top + drawVertex(b4, c, x2, y2 + GLOW_SIZE, brEnd); // left bottom + drawVertex(b4, c, x2 + GLOW_SIZE, y2 + GLOW_SIZE, brEnd); // right bottom + + // Bottom Left + drawVertex(b4, c, x - GLOW_SIZE, y2, blEnd); // left top + drawVertex(b4, c, x - GLOW_SIZE, y2 + GLOW_SIZE, blEnd); // left bottom + drawVertex(b4, c, x, y2 + GLOW_SIZE, blEnd); // right bottom + drawVertex(b4, c, x, y2, bl); // right top + + // Right + drawVertex(b4, c, x2, y, tr); // left top + drawVertex(b4, c, x2, y2, br); // left bottom + drawVertex(b4, c, x2 + GLOW_SIZE, y2, brEnd); // right bottom + drawVertex(b4, c, x2 + GLOW_SIZE, y, trEnd); // right top + + // Left + drawVertex(b4, c, x - GLOW_SIZE, y2, blEnd); // left bottom + drawVertex(b4, c, x, y2, bl); // right bottom + drawVertex(b4, c, x, y, tl); // right top + drawVertex(b4, c, x - GLOW_SIZE, y, tlEnd); // left top + } + + public static int convertColor(Color color) { + return color.rgb() | color.alpha() << 24; + } + + public static Color withOpacity(Color color, float opacity) { + float currentOpacity = color.alpha() / 255f; + return new Color(color.red(), color.green(), color.blue(), (int) ((opacity * currentOpacity) * 255)); + } + + public static Color getProgressColor(double progress) { + return mix(progress, PROGRESS_COLORS); + } + + private static Color mix(double pos, Color... colors) { + if (colors.length == 1) { + return colors[0]; + } + pos = Math.min(1, Math.max(0, pos)); + int breaks = colors.length - 1; + if (pos == 1) { + return colors[breaks]; + } + int colorPos = (int) Math.floor(pos * (breaks)); + final double step = 1d / (breaks); + double localRatio = (pos % step) * breaks; + return blend(colors[colorPos], colors[colorPos + 1], localRatio); + } + + private static Color blend(Color i1, Color i2, double ratio) { + if (ratio > 1f) { + ratio = 1f; + } else if (ratio < 0f) { + ratio = 0f; + } + double iRatio = 1.0f - ratio; + + int a = (int) ((i1.alpha() * iRatio) + (i2.alpha() * ratio)); + int r = (int) ((i1.red() * iRatio) + (i2.red() * ratio)); + int g = (int) ((i1.green() * iRatio) + (i2.green() * ratio)); + int b = (int) ((i1.blue() * iRatio) + (i2.blue() * ratio)); + + return new Color(r, g, b, a); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java new file mode 100644 index 00000000..b16aa42d --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java @@ -0,0 +1,255 @@ +package dev.notalpha.dashloader.client.ui.toast; + +import dev.notalpha.dashloader.client.ui.Color; +import dev.notalpha.dashloader.client.ui.DrawerUtil; +import dev.notalpha.dashloader.misc.HahaManager; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.toast.Toast; +import net.minecraft.client.toast.ToastManager; +import net.minecraft.util.math.MathHelper; +import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; +import org.joml.Vector4f; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.function.BiConsumer; + +public class DashToast implements Toast { + private static final int PROGRESS_BAR_HEIGHT = 2; + private static final int PADDING = 8; + private static final int LINES = 125; + public final DashToastState state; + private final Random random = new Random(); + @Nullable + private final String fact = HahaManager.getFact(); + private List lines = new ArrayList<>(); + private long oldTime = System.currentTimeMillis(); + private float progress = 0; + private Color progressColor = DrawerUtil.getProgressColor(progress); + private Visibility visibility; + + public DashToast() { + this.state = new DashToastState(); + // Create lines + for (int i = 0; i < LINES; i++) { + this.lines.add(new Line()); + } + } + + private static void drawVertex(Matrix4f m4f, VertexConsumer consumer, float z, float x, float y, Color color) { + consumer.vertex(m4f, x, y, z).color(color.red(), color.green(), color.blue(), color.alpha()); + } + + public int getWidth() { + return 200; + } + + public int getHeight() { + return 40; + } + + @Override + public Visibility getVisibility() { + return visibility; + } + + @Override + public void update(ToastManager manager, long time) { + // Get progress + if (state.getStatus() == DashToastStatus.CRASHED) { + progress = (float) this.state.getProgress(); + progressColor = DrawerUtil.FAILED_COLOR; + } else { + progress = (float) this.state.getProgress(); + progressColor = DrawerUtil.getProgressColor(progress); + } + + if (state.getStatus() == DashToastStatus.CRASHED && System.currentTimeMillis() - state.getTimeDone() > 10000) { + visibility = Visibility.HIDE; + } else if (state.getStatus() == DashToastStatus.DONE && System.currentTimeMillis() - state.getTimeDone() > 2000) { + visibility = Visibility.HIDE; + } else { + visibility = Visibility.SHOW; + } + } + + @Override + public void draw(DrawContext context, TextRenderer textRenderer, long startTime) { + final int width = this.getWidth(); + final int height = this.getHeight(); + final int barY = height - PROGRESS_BAR_HEIGHT; + + // Tick progress + List newList = new ArrayList<>(); + List newListPrio = new ArrayList<>(); + long currentTime = System.currentTimeMillis(); + for (Line line : this.lines) { + if (line.tick(width, height, progress, (currentTime - this.oldTime) / 17f)) { + newListPrio.add(line); + } else { + newList.add(line); + } + } + this.oldTime = currentTime; + this.lines = newList; + this.lines.addAll(newListPrio); + + // Setup scissor + { + Vector4f vec = new Vector4f(0.0f, 0.0f, 0.0f, 1.0f); + vec.mul(context.getMatrices().peek().getPositionMatrix()); + context.enableScissor((int) vec.x, (int) vec.y, (int) (vec.x + width), (int) (vec.y + height)); + } + + // Draw the ui + DrawerUtil.drawRect(context, 0, 0, width, height, DrawerUtil.BACKGROUND_COLOR); + + // Draw the background lines. + this.drawRaw(context, (matrix4f, consumer) -> { + for (Line line : lines) { + line.draw(matrix4f, consumer); + } + }); + + // Draw progress text + String progressText = this.state.getProgressText(); + int progressTextY = this.fact != null ? barY - PADDING : (barY / 2) + (textRenderer.fontHeight / 2); + DrawerUtil.drawText(context, textRenderer, PADDING, progressTextY, this.state.getText(), DrawerUtil.STATUS_COLOR); + DrawerUtil.drawText(context, textRenderer, (width - PADDING) - textRenderer.getWidth(progressText), progressTextY, progressText, DrawerUtil.STATUS_COLOR); + + if (this.fact != null) { + // Draw the fun fact + DrawerUtil.drawText(context, textRenderer, PADDING, textRenderer.fontHeight + PADDING, this.fact, DrawerUtil.FOREGROUND_COLOR); + } + + // Draw progress bar + DrawerUtil.drawRect(context, 0, barY, width, PROGRESS_BAR_HEIGHT, DrawerUtil.PROGRESS_TRACK); + DrawerUtil.drawRect(context, 0, barY, (int) (width * progress), PROGRESS_BAR_HEIGHT, progressColor); + + // Epic rtx graphics. aka I slapped some glow on the things. + this.drawRaw(context, (matrix4f, consumer) -> { + // Line glow + for (Line line : lines) { + line.drawGlow(matrix4f, consumer); + } + // Progress bar glow + DrawerUtil.drawGlow(matrix4f, consumer, 0, barY, (int) (width * progress), PROGRESS_BAR_HEIGHT, 0.75f, progressColor, true, true, true, true); + }); + context.disableScissor(); + } + + private void drawRaw(DrawContext context, BiConsumer consumer) { + var matrix = context.getMatrices().peek().getPositionMatrix(); + var vertexConsumer = context.vertexConsumers.getBuffer(RenderLayer.getGui()); + + consumer.accept(matrix, vertexConsumer); + } + + public enum ColorKind { + Neutral, + Progress, + Crashed, + } + + private final class Line { + public final int width; + public final int height; + public ColorKind colorKind; + public float x; + public float y; + public float speedBoost; + private Color color; + + public Line() { + this.x = -1000; + this.y = -1000; + this.width = DashToast.this.random.nextInt(30, 50); + this.height = DashToast.this.random.nextInt(2, 5); + this.colorKind = ColorKind.Neutral; + this.color = new Color(0xFF0000FF); + } + + public boolean tick(int screenWidth, int screenHeight, float progress, float delta) { + // Move the values + this.x += (float) (speedBoost * (0.8 + (2.5 * progress))) * delta; + + // Check if not visible + if (x > screenWidth || x + width < 0) { + // Randomize position + this.x = -width; + this.y = screenHeight * DashToast.this.random.nextFloat(); + + // Randomise color + if (state.getStatus() == DashToastStatus.CRASHED) { + if (DashToast.this.random.nextFloat() > 0.9 || this.colorKind == ColorKind.Progress) { + this.colorKind = ColorKind.Crashed; + } + } else { + if (DashToast.this.random.nextFloat() > 0.95) { + this.colorKind = ColorKind.Progress; + } else { + this.colorKind = ColorKind.Neutral; + } + } + + // Randomise speed based on some values. + // Weight (the size of the line), 0.2 deviation + float weight = 1f - getWeight(); + float weightSpeed = (float) (0.7 + (weight * 0.6)); + + // Kind (The type of line), + float kindSpeed; + if (this.colorKind == ColorKind.Neutral) { + kindSpeed = (float) (1.0 + (DashToast.this.random.nextFloat() * 0.2f)); + } else { + kindSpeed = (float) (1.0 + (DashToast.this.random.nextFloat() * 0.8f)); + } + + this.speedBoost = kindSpeed * weightSpeed; + return this.colorKind != ColorKind.Neutral; + } + this.color = getColor(progress); + + return false; + } + + public void draw(Matrix4f b4, VertexConsumer c) { + Color end = DrawerUtil.withOpacity(color, 0f); + drawVertex(b4, c, 0f, x + width, y, color); // right top + drawVertex(b4, c, 0f, x, y, end); // left top + drawVertex(b4, c, 0f, x, y + height, end); // left bottom + drawVertex(b4, c, 0f, x + width, y + height, color); // right bottom + } + + public void drawGlow(Matrix4f b4, VertexConsumer c) { + if (this.colorKind != ColorKind.Neutral) { + DrawerUtil.drawGlow(b4, c, x, y, width, height, (getWeight() + 2.0f) / 3.0f, this.color, false, true, false, true); + } + } + + public Color getColor(double progress) { + Color color = switch (this.colorKind) { + case Neutral -> DrawerUtil.NEUTRAL_LINE; + case Progress -> { + if (state.getStatus() == DashToastStatus.CRASHED) { + yield DrawerUtil.FAILED_COLOR; + } + + yield DrawerUtil.getProgressColor(progress); + } + case Crashed -> DrawerUtil.FAILED_COLOR; + }; + + return DrawerUtil.withOpacity(color, MathHelper.clamp(((this.x) / (this.width)), 0.0f, 1.0f)); + } + + public float getWeight() { + return ((this.width * (float) this.height) - 60f) / 190f; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java new file mode 100644 index 00000000..57bb7fc8 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java @@ -0,0 +1,113 @@ +package dev.notalpha.dashloader.client.ui.toast; + +import dev.notalpha.dashloader.DashLoader; +import dev.notalpha.dashloader.misc.TranslationHelper; +import dev.notalpha.taski.ParentTask; +import dev.notalpha.taski.Task; +import dev.notalpha.taski.builtin.AbstractTask; +import dev.notalpha.taski.builtin.StaticTask; +import net.minecraft.client.MinecraftClient; + +public final class DashToastState { + private final TranslationHelper translations; + public Task task = new StaticTask("Idle", 0); + private String overwriteText; + private DashToastStatus status; + private double currentProgress = 0; + private long lastUpdate = System.currentTimeMillis(); + private long timeDone = System.currentTimeMillis(); + + public DashToastState() { + var langCode = MinecraftClient.getInstance().getLanguageManager().getLanguage(); + DashLoader.LOG.info(langCode); + this.translations = TranslationHelper.getInstance(); + } + + private void tickProgress() { + if (Double.isNaN(this.currentProgress)) { + this.currentProgress = 0.0; + } + final double actualProgress = task.getProgress(); + final double divisionSpeed = (actualProgress < this.currentProgress) ? 3 : 30; + double currentProgress1 = (actualProgress - this.currentProgress) / divisionSpeed; + this.currentProgress += currentProgress1; + } + + public double getProgress() { + final long currentTime = System.currentTimeMillis(); + while (currentTime > this.lastUpdate) { + this.tickProgress(); + this.lastUpdate += 10; // ~100ups + } + return this.currentProgress; + } + + public String getText() { + if (this.overwriteText != null) { + return this.overwriteText; + } + + String text = concatTask(3, task); + return this.translations.get(text); + } + + public String getProgressText() { + return this.getProgressText(3, task); + } + + private String concatTask(int depth, Task task) { + String name = null; + if (task instanceof AbstractTask abstractTask) { + name = abstractTask.getName(); + } + + if (task instanceof ParentTask stepTask) { + Task subTask = stepTask.getChild(); + if (depth > 1) { + String subName = concatTask(depth - 1, subTask); + if (subName != null) { + return name + "." + subName; + } + } + } + + return name; + } + + private String getProgressText(int depth, Task task) { + if (task instanceof ParentTask stepTask) { + Task subTask = stepTask.getChild(); + if (depth > 1) { + String subName = getProgressText(depth - 1, subTask); + if (subName != null) { + return subName; + } + } + } + + if (task instanceof AbstractTask abstractTask) { + return abstractTask.getProgressText(); + } + return null; + } + + public void setOverwriteText(String overwriteText) { + this.overwriteText = this.translations.get(overwriteText); + } + + public DashToastStatus getStatus() { + return status; + } + + public void setStatus(DashToastStatus status) { + this.status = status; + } + + public long getTimeDone() { + return timeDone; + } + + public void setDone() { + this.timeDone = System.currentTimeMillis(); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastStatus.java b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastStatus.java new file mode 100644 index 00000000..3b3e79b9 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastStatus.java @@ -0,0 +1,7 @@ +package dev.notalpha.dashloader.client.ui.toast; + +public enum DashToastStatus { + PROGRESS, + CRASHED, + DONE +} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java b/src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java new file mode 100644 index 00000000..22b7ba2b --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java @@ -0,0 +1,298 @@ +package dev.notalpha.dashloader.client.ui.widget; + +import dev.notalpha.dashloader.misc.TranslationHelper; +import it.unimi.dsi.fastutil.booleans.BooleanConsumer; +import it.unimi.dsi.fastutil.chars.CharPredicate; +import it.unimi.dsi.fastutil.ints.IntConsumer; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.Element; +import net.minecraft.client.gui.Selectable; +import net.minecraft.client.gui.tooltip.Tooltip; +import net.minecraft.client.gui.widget.*; +import net.minecraft.screen.ScreenTexts; +import net.minecraft.text.Text; + +import java.util.List; +import java.util.Objects; +import java.util.function.Consumer; + +public class ConfigListWidget extends ElementListWidget { + public static final int INPUT_FIELD_WIDTH = 75; + public static final int RESET_BUTTON_WIDTH = 50; + private final TranslationHelper translations = TranslationHelper.getInstance(); + + public ConfigListWidget(MinecraftClient minecraftClient, int i, int j, int k, int l) { + super(minecraftClient, i, j, k, l); + } + + @SuppressWarnings("UnusedReturnValue") + public int addCategory(String label) { + return addEntry(new CategoryEntry(label)); + } + + @SuppressWarnings("UnusedReturnValue") + public int addBoolToggle(String label, boolean value, boolean defaultValue, BooleanConsumer saveCallback) { + return addEntry(new BoolConfigEntry(label, value, defaultValue, saveCallback)); + } + + @SuppressWarnings("UnusedReturnValue") + public int addIntSlider(String label, int value, int defaultValue, int min, int max, IntConsumer saveCallback) { + return addEntry(new IntSliderConfigEntry(label, value, defaultValue, min, max, saveCallback)); + } + + @SuppressWarnings("UnusedReturnValue") + public int addTextField(String label, String value, String defaultValue, Consumer saveCallback) { + return addEntry(new TextFieldEntry(label, value, defaultValue, c -> true, saveCallback)); + } + + @SuppressWarnings("UnusedReturnValue") + public int addIntField(String label, int value, int defaultValue, IntConsumer saveCallback) { + return addEntry(new IntFieldEntry(label, value, defaultValue, saveCallback)); + } + + public void saveValues() { + this.children().forEach(child -> { + if (child instanceof ConfigEntry entry) { + entry.saveValue(); + } + }); + } + + @Override + public int getRowWidth() { + return 340; + } + + public void update() { + this.children().forEach(Entry::update); + } + + abstract class Entry extends ElementListWidget.Entry { + public Text label; + + Entry(String label) { + this.label = Text.of(translations.get(label)); + } + + void update() { + } + } + + class CategoryEntry extends Entry { + CategoryEntry(String label) { + super(label); + } + + @Override + public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + final var textRenderer = ConfigListWidget.this.client.textRenderer; + context.drawText( + textRenderer, + this.label, + (ConfigListWidget.this.width - textRenderer.getWidth(label)) / 2, + y + entryHeight - ConfigListWidget.this.client.textRenderer.fontHeight - 1, + 0xFFFFFF, + false + ); + } + + @Override + public List selectableChildren() { + return List.of(); + } + + @Override + public List children() { + return List.of(); + } + } + + abstract class ConfigEntry extends Entry { + static final Text RESET_TEXT = Text.translatable("controls.reset"); + protected final T defaultValue; + public ClickableWidget widget; + public ButtonWidget resetButton; + protected T value; + protected Tooltip tooltip; + protected Consumer saveFunc; + + ConfigEntry(String label, T value, T defaultValue, Consumer saveCallback) { + super(label); + this.value = value; + this.defaultValue = defaultValue; + this.saveFunc = saveCallback; + if (translations.has(label + ".tooltip")) { + this.tooltip = Tooltip.of(Text.of(translations.get(label + ".tooltip"))); + } + + this.resetButton = new ButtonWidget.Builder(RESET_TEXT, button -> { + this.value = this.defaultValue; + this.updateWidgetText(); + ConfigListWidget.this.update(); + }).width(RESET_BUTTON_WIDTH).build(); + } + + @Override + public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + context.drawText( + ConfigListWidget.this.client.textRenderer, + this.label, + x, + y + (entryHeight - ConfigListWidget.this.client.textRenderer.fontHeight) / 2, + 0xFFFFFF, + false + ); + + this.widget.setPosition(x + entryWidth - INPUT_FIELD_WIDTH - RESET_BUTTON_WIDTH - 5, y - 2); + this.widget.render(context, mouseX, mouseY, tickDelta); + this.resetButton.setPosition(x + entryWidth - RESET_BUTTON_WIDTH, y - 2); + this.resetButton.render(context, mouseX, mouseY, tickDelta); + } + + @Override + public List selectableChildren() { + return List.of(this.widget, this.resetButton); + } + + @Override + public List children() { + return List.of(this.widget, this.resetButton); + } + + @Override + void update() { + this.resetButton.active = !Objects.equals(this.value, this.defaultValue); + } + + public T getValue() { + return this.value; + } + + public void saveValue() { + this.saveFunc.accept(this.value); + } + + abstract void updateWidgetText(); + } + + class BoolConfigEntry extends ConfigEntry { + BoolConfigEntry(String label, boolean value, boolean defaultValue, BooleanConsumer saveCallback) { + super(label, value, defaultValue, saveCallback); + + this.widget = new ButtonWidget.Builder(ScreenTexts.onOrOff(this.value), button -> { + this.value = !(boolean) this.value; + updateWidgetText(); + ConfigListWidget.this.update(); + }).width(INPUT_FIELD_WIDTH).build(); + + this.widget.setTooltip(this.tooltip); + } + + @Override + void updateWidgetText() { + this.widget.setMessage(ScreenTexts.onOrOff(this.value)); + } + } + + class IntSliderConfigEntry extends ConfigEntry { + private final int min; + private final int max; + + IntSliderConfigEntry(String label, int value, int defaultValue, int min, int max, IntConsumer saveCallback) { + super(label, value, defaultValue, saveCallback); + this.min = min; + this.max = max; + + this.widget = new Slider(0, 0, INPUT_FIELD_WIDTH, ConfigListWidget.this.itemHeight, Text.of(String.valueOf(value)), min, max, (double) (this.value - min) / (max - min)); + this.widget.setTooltip(this.tooltip); + } + + @Override + void updateWidgetText() { + ((Slider) this.widget).setValue((double) (this.value - this.min) / (this.max - this.min)); + } + + public class Slider extends SliderWidget { + private final double min; + private final double max; + + public Slider(int x, int y, int width, int height, Text message, double min, double max, double value) { + super(x, y, width, height, message, value); + this.min = min; + this.max = max; + } + + @Override + protected void updateMessage() { + this.setMessage(Text.of(String.valueOf((int) this.getValue()))); + } + + @Override + protected void applyValue() { + IntSliderConfigEntry.this.value = (int) this.getValue(); + ConfigListWidget.this.update(); + } + + public double getValue() { + return this.value * (max - min) + min; + } + + public void setValue(double value) { + this.value = value; + updateMessage(); + applyValue(); + } + } + } + + class TextFieldEntry extends ConfigEntry { + CharPredicate filter; + + TextFieldEntry(String label, String value, String defaultValue, CharPredicate filter, Consumer saveCallback) { + super(label, value, defaultValue, saveCallback); + this.filter = filter; + + var textWidget = new TextFieldWidget(ConfigListWidget.this.client.textRenderer, 0, 0, INPUT_FIELD_WIDTH, 20, Text.empty()) { + @Override + public boolean charTyped(char chr, int modifiers) { + if (TextFieldEntry.this.filter.test(chr)) { + return super.charTyped(chr, modifiers); + } + return false; + } + }; + + this.widget = textWidget; + textWidget.setMaxLength(Integer.MAX_VALUE); + textWidget.setText(String.valueOf(this.value)); + textWidget.setChangedListener(text -> { + this.value = text; + ConfigListWidget.this.update(); + }); + + textWidget.setTooltip(this.tooltip); + } + + @Override + void updateWidgetText() { + ((TextFieldWidget) this.widget).setText(this.value); + } + } + + class IntFieldEntry extends TextFieldEntry { + IntFieldEntry(String label, int value, int defaultValue, IntConsumer saveCallback) { + super(label, String.valueOf(value), String.valueOf(defaultValue), chr -> chr >= '0' && chr <= '9', str -> saveCallback.accept(Integer.parseInt(str))); + + ((TextFieldWidget) this.widget).setChangedListener(text -> { + this.value = text.isEmpty() ? "0" : text; + ConfigListWidget.this.update(); + }); + } + + @Override + void updateWidgetText() { + ((TextFieldWidget) this.widget).setText(String.valueOf(this.value)); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/config/Config.java b/src/main/java/dev/notalpha/dashloader/config/Config.java new file mode 100644 index 00000000..27476949 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/config/Config.java @@ -0,0 +1,17 @@ +package dev.notalpha.dashloader.config; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@SuppressWarnings("CanBeFinal") +public class Config { + public Map options = new LinkedHashMap<>(); + public byte compression = 3; + public int maxCaches = 5; + public List customSplashLines = new ArrayList<>(); + public boolean addDefaultSplashLines = true; + public boolean singleThreadedReading = false; + public boolean showCachingToast = true; +} diff --git a/src/main/java/dev/notalpha/dashloader/config/ConfigHandler.java b/src/main/java/dev/notalpha/dashloader/config/ConfigHandler.java new file mode 100644 index 00000000..15aa5348 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/config/ConfigHandler.java @@ -0,0 +1,112 @@ +package dev.notalpha.dashloader.config; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import dev.notalpha.dashloader.DashLoader; +import net.fabricmc.loader.api.FabricLoader; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.util.EnumMap; + +public class ConfigHandler { + private static final EnumMap OPTION_ACTIVE = new EnumMap<>(Option.class); + private static final String DISABLE_OPTION_TAG = "dashloader:disableoption"; + + static { + for (Option value : Option.values()) { + OPTION_ACTIVE.put(value, true); + } + } + + public static final ConfigHandler INSTANCE = new ConfigHandler(FabricLoader.getInstance().getConfigDir().normalize().resolve("dashloader.json")); + + private final Gson gson = new GsonBuilder().setPrettyPrinting().create(); + private final Path configPath; + public Config config = new Config(); + + public ConfigHandler(Path configPath) { + this.configPath = configPath; + this.reloadConfig(); + this.config.options.forEach((s, aBoolean) -> { + try { + var option = Option.valueOf(s.toUpperCase()); + OPTION_ACTIVE.put(option, aBoolean); + if (!aBoolean) { + DashLoader.LOG.warn("Disabled Optional Feature {} from DashLoader config.", s); + } + } catch (IllegalArgumentException illegalArgumentException) { + DashLoader.LOG.error("Could not disable Optional Feature {} from DashLoader config as it does not exist.", s); + } + }); + + for (var modContainer : FabricLoader.getInstance().getAllMods()) { + var mod = modContainer.getMetadata(); + if (mod.containsCustomValue(DISABLE_OPTION_TAG)) { + for (var value : mod.getCustomValue(DISABLE_OPTION_TAG).getAsArray()) { + final String feature = value.getAsString(); + try { + var option = Option.valueOf(feature.toUpperCase()); + OPTION_ACTIVE.put(option, false); + DashLoader.LOG.warn("Disabled Optional Feature {} from {} config. {}", feature, mod.getId(), mod.getName()); + } catch (IllegalArgumentException illegalArgumentException) { + DashLoader.LOG.error("Could not disable Optional Feature {} from {} config as it does not exist. {}", feature, mod.getId(), mod.getName()); + } + } + } + } + if (isVulkanModPresent()) { + for (Option option : new Option[]{Option.CACHE_SHADER, Option.UNSAFE_MIPMAP_GENERATION, Option.CACHE_ATLASES}) { + OPTION_ACTIVE.put(option, false); + DashLoader.LOG.warn("Found VulkanMod, Disabling Optional Feature {}", option.name()); + } + } + } + + public static boolean shouldApplyMixin(String name) { + for (Option value : Option.values()) { + if (name.contains(value.mixinContains)) { + return OPTION_ACTIVE.get(value); + } + } + return true; + } + + public static boolean optionActive(Option option) { + return OPTION_ACTIVE.get(option); + } + + public void reloadConfig() { + try { + if (Files.exists(this.configPath)) { + final BufferedReader json = Files.newBufferedReader(this.configPath); + this.config = this.gson.fromJson(json, Config.class); + json.close(); + } + } catch (Throwable err) { + DashLoader.LOG.info("Config corrupted creating a new one.", err); + } + + this.saveConfig(); + } + + public void saveConfig() { + try { + Files.createDirectories(this.configPath.getParent()); + Files.deleteIfExists(this.configPath); + final BufferedWriter writer = Files.newBufferedWriter(this.configPath, StandardOpenOption.CREATE); + this.gson.toJson(this.config, writer); + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static boolean isVulkanModPresent() { + return FabricLoader.getInstance().isModLoaded("vulkanmod"); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/config/Option.java b/src/main/java/dev/notalpha/dashloader/config/Option.java new file mode 100644 index 00000000..5b9b36e9 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/config/Option.java @@ -0,0 +1,21 @@ +package dev.notalpha.dashloader.config; + +public enum Option { + CACHE_ATLASES("cache.SpriteAtlasTextureMixin"), // Caches stitched texture atlases, significantly reducing GPU upload time + CACHE_FONT("cache.font"), // Caches fonts and their images. + CACHE_MODEL_LOADER("cache.model"), // Caches BakedModels which allows the game to load extremely fast + CACHE_SHADER("cache.shader"), // Caches the GL Shaders + CACHE_SPLASH_TEXT("cache.SplashTextResourceSupplierMixin"), // Caches the splash texts from the main screen + CACHE_SPRITE_CONTENT("cache.sprite.content"), // Caches sprite loading + CACHE_SPRITE_STITCHING("cache.sprite.stitch"), // Caches sprite stitching + + FAST_MODEL_IDENTIFIER_EQUALS("misc.ModelIdentifierMixin"), // Use a much faster .equals() on ModelIdentifiers + FAST_WALL_BLOCK("WallBlockMixin"), // Caches the two most common blockstates for wall blocks + UNSAFE_MIPMAP_GENERATION("misc.MipmapHelper"); // Speeds up get/set pixel operations when generating mipmaps by skipping redundant safety checks + + public final String mixinContains; + + Option(String mixinContains) { + this.mixinContains = mixinContains; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/IOHelper.java b/src/main/java/dev/notalpha/dashloader/io/IOHelper.java new file mode 100644 index 00000000..8817b20d --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/IOHelper.java @@ -0,0 +1,151 @@ +package dev.notalpha.dashloader.io; + +import com.github.luben.zstd.Zstd; +import dev.notalpha.hyphen.io.ByteBufferIO; +import dev.notalpha.taski.builtin.StepTask; +import org.apache.commons.io.IOUtils; +import org.jetbrains.annotations.NotNull; +import org.lwjgl.system.MemoryUtil; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.nio.channels.FileChannel; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; + +public final class IOHelper { + public static int[] toArray(IntBuffer buffer) { + if (buffer == null) { + return null; + } + buffer.rewind(); + int[] foo = new int[buffer.remaining()]; + buffer.get(foo); + return foo; + } + + public static float[] toArray(FloatBuffer buffer) { + if (buffer == null) { + return null; + } + + buffer.rewind(); + float[] foo = new float[buffer.remaining()]; + buffer.get(foo); + return foo; + } + + public static byte[] toArray(ByteBuffer buffer) { + if (buffer == null) { + return null; + } + + buffer.rewind(); + byte[] foo = new byte[buffer.remaining()]; + buffer.get(foo); + return foo; + } + + public static IntBuffer fromArray(int[] arr) { + if (arr == null) { + return null; + } + + var buffer = MemoryUtil.memAllocInt(arr.length); + buffer.put(arr); + buffer.rewind(); + return buffer; + } + + public static FloatBuffer fromArray(float[] arr) { + if (arr == null) { + return null; + } + + var buffer = MemoryUtil.memAllocFloat(arr.length); + buffer.put(arr); + buffer.rewind(); + return buffer; + } + + public static void save(Path path, StepTask task, ByteBufferIO io, int fileSize, byte compressionLevel) throws IOException { + io.rewind(); + io.byteBuffer.limit(fileSize); + try (FileChannel channel = createFile(path)) { + if (compressionLevel > 0) { + task.reset(4); + // Allocate + final long maxSize = Zstd.compressBound(fileSize); + final var dst = ByteBufferIO.createDirect((int) maxSize); + task.next(); + + // Compress + final long size = Zstd.compress(dst.byteBuffer, io.byteBuffer, compressionLevel); + task.next(); + + // Write + dst.rewind(); + dst.byteBuffer.limit((int) size); + final var map = channel.map(FileChannel.MapMode.READ_WRITE, 0, size + 5).order(ByteOrder.LITTLE_ENDIAN); + task.next(); + + map.put(compressionLevel); + map.putInt(fileSize); + map.put(dst.byteBuffer); + io.close(); + dst.close(); + } else { + task.reset(2); + final var map = channel.map(FileChannel.MapMode.READ_WRITE, 0, fileSize + 1).order(ByteOrder.LITTLE_ENDIAN); + task.next(); + ByteBufferIO file = ByteBufferIO.wrap(map); + file.putByte(compressionLevel); + file.putByteBuffer(io.byteBuffer, fileSize); + task.next(); + } + } + } + + public static ByteBufferIO load(Path path) throws IOException { + try (FileChannel channel = openFile(path)) { + var buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size()).order(ByteOrder.LITTLE_ENDIAN); + // Check compression + if (buffer.get() > 0) { + final int size = buffer.getInt(); + final var dst = ByteBufferIO.createDirect(size); + Zstd.decompress(dst.byteBuffer, buffer); + dst.rewind(); + return dst; + } else { + return ByteBufferIO.wrap(buffer); + } + } + } + + public static FileChannel createFile(Path path) throws IOException { + Files.createDirectories(path.getParent()); + Files.deleteIfExists(path); + return FileChannel.open(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.READ); + } + + public static FileChannel openFile(Path path) throws IOException { + return FileChannel.open(path, StandardOpenOption.READ); + } + + public static byte[] streamToArray(InputStream inputStream) throws IOException { + final ByteArrayOutputStream output = new ByteArrayOutputStream() { + @Override + public synchronized byte @NotNull [] toByteArray() { + return this.buf; + } + }; + IOUtils.copy(inputStream, output); + return output.toByteArray(); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/MappingSerializer.java b/src/main/java/dev/notalpha/dashloader/io/MappingSerializer.java new file mode 100644 index 00000000..6abe0742 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/MappingSerializer.java @@ -0,0 +1,120 @@ +package dev.notalpha.dashloader.io; + +import dev.notalpha.dashloader.DashLoader; +import dev.notalpha.dashloader.api.DashModule; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.hyphen.io.ByteBufferIO; +import dev.notalpha.taski.Task; +import dev.notalpha.taski.builtin.StepTask; +import dev.notalpha.taski.builtin.WeightedStageTask; +import it.unimi.dsi.fastutil.objects.Object2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; + +public class MappingSerializer { + private final Object2ObjectMap, Serializer> serializers; + + public MappingSerializer(List> cacheHandlers) { + this.serializers = new Object2ObjectOpenHashMap<>(); + + cacheHandlers.forEach(handler -> { + Class dataClass = handler.getDataClass(); + this.serializers.put(dataClass, new Serializer<>(dataClass)); + }); + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + public void save(Path dir, RegistryWriter factory, List> handlers, StepTask parent) { + List tasks = new ArrayList<>(); + for (DashModule value : handlers) { + tasks.add(new WeightedStageTask.WeightedStage(value.taskWeight(), new StepTask(value.getDataClass().getSimpleName(), 1))); + } + WeightedStageTask stageTask = new WeightedStageTask("Mapping", tasks); + parent.setSubTask(stageTask); + + List objects = new ArrayList<>(); + int i = 0; + for (DashModule handler : handlers) { + Task task = stageTask.getStages().get(i).task; + if (handler.isActive()) { + Object object = handler.save(factory, (StepTask) task); + Class dataClass = handler.getDataClass(); + if (object.getClass() != dataClass) { + throw new RuntimeException("Handler DataClass does not match the output of saveMappings on " + handler.getClass()); + } + objects.add(object); + } else { + objects.add(null); + } + //noinspection DataFlowIssue + task.finish(); + i++; + } + + Path path = dir.resolve("mapping.bin"); + + int measure = 0; + for (Object object : objects) { + measure += 1; + if (object != null) { + Class aClass = object.getClass(); + Serializer serializer = this.serializers.get(aClass); + + if (serializer == null) { + throw new RuntimeException("Could not find mapping serializer for " + aClass); + } + + measure += serializer.measure(object); + } + } + + ByteBufferIO io = ByteBufferIO.createDirect(measure); + for (Object object : objects) { + if (object == null) { + io.putByte((byte) 0); + } else { + io.putByte((byte) 1); + Serializer serializer = this.serializers.get(object.getClass()); + serializer.put(io, object); + } + } + + try { + io.rewind(); + IOHelper.save(path, new StepTask(""), io, measure, ConfigHandler.INSTANCE.config.compression); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + public boolean load(Path dir, RegistryReader reader, List> handlers) { + try { + ByteBufferIO io = IOHelper.load(dir.resolve("mapping.bin")); + for (DashModule handler : handlers) { + if (io.getByte() == 1) { + Class dataClass = handler.getDataClass(); + Serializer serializer = this.serializers.get(dataClass); + Object object = serializer.get(io); + + if (handler.isActive()) { + handler.load(object, reader, new StepTask("")); + } + } else if (handler.isActive()) { + DashLoader.LOG.info("Recaching as {} is now active.", handler.getClass().getSimpleName()); + return false; + } + } + + return true; + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/RegistrySerializer.java b/src/main/java/dev/notalpha/dashloader/io/RegistrySerializer.java new file mode 100644 index 00000000..dfedf7ab --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/RegistrySerializer.java @@ -0,0 +1,218 @@ +package dev.notalpha.dashloader.io; + +import dev.notalpha.dashloader.DashLoader; +import dev.notalpha.dashloader.DashObjectClass; +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.io.data.CacheInfo; +import dev.notalpha.dashloader.io.data.ChunkInfo; +import dev.notalpha.dashloader.io.data.fragment.CacheFragment; +import dev.notalpha.dashloader.io.data.fragment.ChunkFragment; +import dev.notalpha.dashloader.io.data.fragment.StageFragment; +import dev.notalpha.dashloader.io.fragment.Fragment; +import dev.notalpha.dashloader.io.fragment.SimplePiece; +import dev.notalpha.dashloader.io.fragment.SizePiece; +import dev.notalpha.dashloader.registry.RegistryWriterImpl; +import dev.notalpha.dashloader.registry.data.ChunkData; +import dev.notalpha.dashloader.registry.data.ChunkFactory; +import dev.notalpha.dashloader.registry.data.StageData; +import dev.notalpha.dashloader.thread.ThreadHandler; +import dev.notalpha.hyphen.io.ByteBufferIO; +import dev.notalpha.taski.Task; +import dev.notalpha.taski.builtin.StepTask; +import it.unimi.dsi.fastutil.objects.Object2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +@SuppressWarnings({"rawtypes", "unchecked"}) +public class RegistrySerializer { + // 20MB + private static final int MIN_PER_THREAD_FRAGMENT_SIZE = 1024 * 1024 * 20; + // 1GB + private static final int MAX_FRAGMENT_SIZE = 1024 * 1024 * 1024; + private final Object2ObjectMap, Serializer> serializers; + + public RegistrySerializer(List> dashObjects) { + this.serializers = new Object2ObjectOpenHashMap<>(); + for (DashObjectClass dashObject : dashObjects) { + Class dashClass = dashObject.getDashClass(); + this.serializers.put(dashClass, new Serializer<>(dashClass)); + } + } + + public > Serializer getSerializer(DashObjectClass dashObject) { + return (Serializer) this.serializers.get(dashObject.getDashClass()); + } + + public CacheInfo serialize(Path dir, RegistryWriterImpl factory, Consumer taskConsumer) throws IOException { + StageData[] stages = factory.export(); + + SimplePiece[] value = new SimplePiece[stages.length]; + for (int i = 0; i < stages.length; i++) { + StageData stage = stages[i]; + SimplePiece[] value2 = new SimplePiece[stage.chunks.length]; + for (int i1 = 0; i1 < stage.chunks.length; i1++) { + ChunkData chunk = stage.chunks[i1]; + Serializer serializer = getSerializer(chunk.dashObject); + SizePiece[] value3 = new SizePiece[chunk.dashables.length]; + for (int i2 = 0; i2 < chunk.dashables.length; i2++) { + value3[i2] = new SizePiece(serializer.measure(chunk.dashables[i2].data) + 4); + } + + value2[i1] = new SimplePiece(value3); + } + + value[i] = new SimplePiece(value2); + } + SimplePiece piece = new SimplePiece(value); + + int[][] stageSizes = new int[stages.length][]; + for (int i = 0; i < stages.length; i++) { + StageData stage = stages[i]; + int[] chunkSizes = new int[stage.chunks.length]; + for (int i1 = 0; i1 < stage.chunks.length; i1++) { + chunkSizes[i1] = stage.chunks[i1].dashables.length; + } + stageSizes[i] = chunkSizes; + } + + // Calculate amount of fragments required + int minFragments = (int) (piece.size / MAX_FRAGMENT_SIZE); + int maxFragments = (int) (piece.size / MIN_PER_THREAD_FRAGMENT_SIZE); + int fragmentCount = Integer.max(Integer.max(Integer.min(ThreadHandler.THREADS, maxFragments), minFragments), 1); + long remainingSize = piece.size; + + List fragments = new ArrayList<>(); + for (int i = 0; i < fragmentCount; i++) { + long fragmentSize = remainingSize / (fragmentCount - i); + if (i == fragmentCount - 1) { + fragmentSize = Long.MAX_VALUE; + } + Fragment fragment = piece.fragment(fragmentSize); + remainingSize -= fragment.size; + fragments.add(new CacheFragment(fragment)); + } + + StepTask task = new StepTask("fragment", fragments.size() * 2); + taskConsumer.accept(task); + // Serialize + for (int k = 0; k < fragments.size(); k++) { + DashLoader.LOG.info("Serializing fragment {}", k); + CacheFragment fragment = fragments.get(k); + List stageFragmentMetadata = fragment.stages; + ByteBufferIO io = ByteBufferIO.createDirect((int) fragment.info.fileSize); + + int taskSize = 0; + for (var stage : stageFragmentMetadata) { + for (var chunk : stage.chunks) { + taskSize += chunk.info.rangeEnd - chunk.info.rangeStart; + } + } + + StepTask stageTask = new StepTask("stage", taskSize); + task.setSubTask(stageTask); + for (int i = 0; i < stageFragmentMetadata.size(); i++) { + StageFragment stage = stageFragmentMetadata.get(i); + StageData data = stages[i + fragment.info.rangeStart]; + + List chunks = stage.chunks; + for (int j = 0; j < chunks.size(); j++) { + ChunkFragment chunk = chunks.get(j); + ChunkData chunkData = data.chunks[j + stage.info.rangeStart]; + Serializer serializer = serializers.get(chunkData.dashObject.getDashClass()); + for (int i1 = chunk.info.rangeStart; i1 < chunk.info.rangeEnd; i1++) { + ChunkData.Entry dashable = chunkData.dashables[i1]; + io.putInt(dashable.pos); + serializer.put(io, dashable.data); + stageTask.next(); + } + } + } + task.next(); + + StepTask serializingTask = new StepTask("Serializing"); + task.setSubTask(serializingTask); + + int fileSize = (int) fragment.info.fileSize; + IOHelper.save(fragmentFilePath(dir, k), serializingTask, io, fileSize, ConfigHandler.INSTANCE.config.compression); + task.next(); + } + + List chunks = new ArrayList<>(); + for (ChunkFactory chunk : factory.chunks) { + chunks.add(new ChunkInfo(chunk)); + } + + return new CacheInfo(fragments, chunks, stageSizes); + } + + public StageData[] deserialize(Path dir, CacheInfo metadata, List> objects) { + StageData[] out = new StageData[metadata.stageSizes.length]; + for (int i = 0; i < metadata.stageSizes.length; i++) { + int[] chunkSizes = metadata.stageSizes[i]; + ChunkData[] chunks = new ChunkData[chunkSizes.length]; + for (int j = 0; j < chunks.length; j++) { + ChunkInfo chunkInfo = metadata.chunks.get(j); + chunks[j] = new ChunkData( + (byte) j, + chunkInfo.name, + objects.get(chunkInfo.dashObjectId), + new ChunkData.Entry[chunkSizes[j]] + ); + } + + out[i] = new StageData(chunks); + } + + List fragments = metadata.fragments; + List runnables = new ArrayList<>(); + for (int j = 0; j < fragments.size(); j++) { + CacheFragment fragment = fragments.get(j); + int finalJ = j; + runnables.add(() -> { + try { + ByteBufferIO io = IOHelper.load(fragmentFilePath(dir, finalJ)); + deserialize(out, io, fragment); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + if (ConfigHandler.INSTANCE.config.singleThreadedReading) { + for (Runnable runnable : runnables) { + runnable.run(); + } + } else { + ThreadHandler.INSTANCE.parallelRunnable(runnables); + } + + return out; + } + + private void deserialize(StageData[] data, ByteBufferIO io, CacheFragment fragment) { + for (int i = 0; i < fragment.stages.size(); i++) { + StageFragment stageFragment = fragment.stages.get(i); + StageData stage = data[fragment.info.rangeStart + i]; + for (int i1 = 0; i1 < stageFragment.chunks.size(); i1++) { + ChunkFragment chunkFragment = stageFragment.chunks.get(i1); + ChunkData chunkData = stage.chunks[stageFragment.info.rangeStart + i1]; + Serializer serializer = getSerializer(chunkData.dashObject); + for (int i2 = chunkFragment.info.rangeStart; i2 < chunkFragment.info.rangeEnd; i2++) { + int pos = io.getInt(); + Object out = serializer.get(io); + chunkData.dashables[i2] = new ChunkData.Entry<>(out, pos); + } + } + } + } + + private Path fragmentFilePath(Path dir, int fragment) { + return dir.resolve("fragment-" + fragment + ".bin"); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/Serializer.java b/src/main/java/dev/notalpha/dashloader/io/Serializer.java new file mode 100644 index 00000000..cc4bd217 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/Serializer.java @@ -0,0 +1,94 @@ +package dev.notalpha.dashloader.io; + +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.io.def.NativeImageData; +import dev.notalpha.dashloader.io.def.NativeImageDataDef; +import dev.notalpha.dashloader.registry.data.ChunkData; +import dev.notalpha.hyphen.HyphenSerializer; +import dev.notalpha.hyphen.SerializerFactory; +import dev.notalpha.hyphen.io.ByteBufferIO; +import dev.notalpha.hyphen.scan.annotations.DataSubclasses; +import dev.notalpha.taski.builtin.StepTask; +import net.minecraft.client.font.UnihexFont; +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.lang.annotation.Annotation; +import java.nio.file.Path; + +public class Serializer { + private final HyphenSerializer serializer; + + public Serializer(Class aClass) { + var factory = SerializerFactory.createDebug(ByteBufferIO.class, aClass); + factory.addAnnotationProvider(ChunkData.class, new DataSubclasses() { + @Override + public Class annotationType() { + return DataSubclasses.class; + } + + @Override + public Class[] value() { + return new Class[]{ChunkData.class}; + } + }); + factory.setClassName(getSerializerClassName(aClass)); + factory.addAnnotationProvider(UnihexFont.BitmapGlyph.class, new DataSubclasses() { + @Override + public Class annotationType() { + return DataSubclasses.class; + } + + @Override + public Class[] value() { + return new Class[]{ + UnihexFont.FontImage32x16.class, + UnihexFont.FontImage16x16.class, + UnihexFont.FontImage8x16.class, + }; + } + }); + + factory.addDynamicDef(NativeImageData.class, NativeImageDataDef::new); + this.serializer = factory.build(); + } + + @NotNull + private static String getSerializerClassName(Class holderClass) { + return holderClass.getSimpleName().toLowerCase() + "-serializer"; + } + + public O get(ByteBufferIO io) { + return this.serializer.get(io); + } + + public void put(ByteBufferIO io, O data) { + this.serializer.put(io, data); + } + + public long measure(O data) { + return this.serializer.measure(data); + } + + public void save(Path path, StepTask task, O data) { + var measure = (int) this.serializer.measure(data); + var io = ByteBufferIO.createDirect(measure); + this.serializer.put(io, data); + io.rewind(); + try { + + IOHelper.save(path, task, io, measure, ConfigHandler.INSTANCE.config.compression); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public O load(Path path) { + try { + ByteBufferIO io = IOHelper.load(path); + return this.serializer.get(io); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/data/CacheInfo.java b/src/main/java/dev/notalpha/dashloader/io/data/CacheInfo.java new file mode 100644 index 00000000..b0d508c6 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/data/CacheInfo.java @@ -0,0 +1,28 @@ +package dev.notalpha.dashloader.io.data; + +import dev.notalpha.dashloader.io.data.fragment.CacheFragment; + +import java.util.List; + +public class CacheInfo { + /** + * Information about the different file fragments the cache contains. + */ + public final List fragments; + /** + * Information about the output chunks. + */ + public final List chunks; + /** + * A two-dimensional array containing the sizes of the stages and chunks. + * The first index is the stage index which will yield an array of the chunk sizes, + * The size of this array is the amount of chunks in that stage. + */ + public final int[][] stageSizes; + + public CacheInfo(List fragments, List chunks, int[][] stageSizes) { + this.fragments = fragments; + this.chunks = chunks; + this.stageSizes = stageSizes; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/data/ChunkInfo.java b/src/main/java/dev/notalpha/dashloader/io/data/ChunkInfo.java new file mode 100644 index 00000000..63dc08e7 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/data/ChunkInfo.java @@ -0,0 +1,21 @@ +package dev.notalpha.dashloader.io.data; + +import dev.notalpha.dashloader.registry.data.ChunkFactory; + +public class ChunkInfo { + public final int dashObjectId; + public final int size; + public final String name; + + public ChunkInfo(int dashObjectId, int size, String name) { + this.dashObjectId = dashObjectId; + this.size = size; + this.name = name; + } + + public ChunkInfo(ChunkFactory chunk) { + this.dashObjectId = chunk.dashObject.getDashObjectId(); + this.size = chunk.list.size(); + this.name = chunk.name; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/data/fragment/CacheFragment.java b/src/main/java/dev/notalpha/dashloader/io/data/fragment/CacheFragment.java new file mode 100644 index 00000000..03628dae --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/data/fragment/CacheFragment.java @@ -0,0 +1,24 @@ +package dev.notalpha.dashloader.io.data.fragment; + +import dev.notalpha.dashloader.io.fragment.Fragment; + +import java.util.ArrayList; +import java.util.List; + +public class CacheFragment { + public final List stages; + public final FragmentSlice info; + + public CacheFragment(List stages, FragmentSlice info) { + this.stages = stages; + this.info = info; + } + + public CacheFragment(Fragment fragment) { + this.info = new FragmentSlice(fragment); + this.stages = new ArrayList<>(); + for (Fragment inner : fragment.inner) { + this.stages.add(new StageFragment(inner)); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/data/fragment/ChunkFragment.java b/src/main/java/dev/notalpha/dashloader/io/data/fragment/ChunkFragment.java new file mode 100644 index 00000000..46b46e2d --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/data/fragment/ChunkFragment.java @@ -0,0 +1,15 @@ +package dev.notalpha.dashloader.io.data.fragment; + +import dev.notalpha.dashloader.io.fragment.Fragment; + +public final class ChunkFragment { + public final FragmentSlice info; + + public ChunkFragment(FragmentSlice info) { + this.info = info; + } + + public ChunkFragment(Fragment fragment) { + this.info = new FragmentSlice(fragment); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/data/fragment/FragmentSlice.java b/src/main/java/dev/notalpha/dashloader/io/data/fragment/FragmentSlice.java new file mode 100644 index 00000000..1c8ddcab --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/data/fragment/FragmentSlice.java @@ -0,0 +1,21 @@ +package dev.notalpha.dashloader.io.data.fragment; + +import dev.notalpha.dashloader.io.fragment.Fragment; + +public class FragmentSlice { + public final int rangeStart; + public final int rangeEnd; + public final long fileSize; + + public FragmentSlice(int rangeStart, int rangeEnd, long fileSize) { + this.rangeStart = rangeStart; + this.rangeEnd = rangeEnd; + this.fileSize = fileSize; + } + + public FragmentSlice(Fragment fragment) { + this.rangeStart = fragment.startIndex; + this.rangeEnd = fragment.endIndex; + this.fileSize = fragment.size; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/data/fragment/StageFragment.java b/src/main/java/dev/notalpha/dashloader/io/data/fragment/StageFragment.java new file mode 100644 index 00000000..110bd111 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/data/fragment/StageFragment.java @@ -0,0 +1,24 @@ +package dev.notalpha.dashloader.io.data.fragment; + +import dev.notalpha.dashloader.io.fragment.Fragment; + +import java.util.ArrayList; +import java.util.List; + +public class StageFragment { + public final List chunks; + public final FragmentSlice info; + + public StageFragment(List chunks, FragmentSlice info) { + this.chunks = chunks; + this.info = info; + } + + public StageFragment(Fragment fragment) { + this.info = new FragmentSlice(fragment); + this.chunks = new ArrayList<>(); + for (Fragment inner : fragment.inner) { + this.chunks.add(new ChunkFragment(inner)); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/def/DataUnsafeByteBuffer.java b/src/main/java/dev/notalpha/dashloader/io/def/DataUnsafeByteBuffer.java new file mode 100644 index 00000000..28f269b4 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/def/DataUnsafeByteBuffer.java @@ -0,0 +1,14 @@ +package dev.notalpha.dashloader.io.def; + +import dev.notalpha.hyphen.scan.annotations.HyphenAnnotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@HyphenAnnotation +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE_USE}) +public @interface DataUnsafeByteBuffer { +} diff --git a/src/main/java/dev/notalpha/dashloader/io/def/NativeImageData.java b/src/main/java/dev/notalpha/dashloader/io/def/NativeImageData.java new file mode 100644 index 00000000..a19721f2 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/def/NativeImageData.java @@ -0,0 +1,13 @@ +package dev.notalpha.dashloader.io.def; + +import java.nio.ByteBuffer; + +public class NativeImageData { + public final ByteBuffer buffer; + public final boolean stb; + + public NativeImageData(ByteBuffer buffer, boolean stb) { + this.buffer = buffer; + this.stb = stb; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/def/NativeImageDataDef.java b/src/main/java/dev/notalpha/dashloader/io/def/NativeImageDataDef.java new file mode 100644 index 00000000..d864a507 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/def/NativeImageDataDef.java @@ -0,0 +1,93 @@ +package dev.notalpha.dashloader.io.def; + +import dev.notalpha.hyphen.SerializerGenerator; +import dev.notalpha.hyphen.codegen.MethodWriter; +import dev.notalpha.hyphen.codegen.Variable; +import dev.notalpha.hyphen.codegen.def.BufferDef; +import dev.notalpha.hyphen.codegen.def.MethodDef; +import dev.notalpha.hyphen.codegen.statement.IfElse; +import dev.notalpha.hyphen.scan.struct.ClassStruct; +import dev.notalpha.hyphen.scan.struct.Struct; +import org.lwjgl.system.MemoryUtil; +import org.objectweb.asm.Opcodes; + +import java.nio.ByteBuffer; + +public class NativeImageDataDef extends MethodDef { + private ByteBufferDef bytebufferDef; + + public NativeImageDataDef(Struct clazz) { + super(clazz); + } + + @Override + public void scan(SerializerGenerator handler) { + this.bytebufferDef = new ByteBufferDef(new ClassStruct(ByteBuffer.class)); + this.bytebufferDef.scan(handler); + super.scan(handler); + } + + @Override + protected void writeMethodPut(MethodWriter mh, Runnable valueLoad) { + mh.loadIO(); + valueLoad.run(); + mh.visitFieldInsn(Opcodes.GETFIELD, NativeImageData.class, "stb", boolean.class); + mh.putIO(boolean.class); + + bytebufferDef.writePut(mh, () -> { + valueLoad.run(); + mh.visitFieldInsn(Opcodes.GETFIELD, NativeImageData.class, "buffer", ByteBuffer.class); + }); + } + + @Override + protected void writeMethodGet(MethodWriter mh) { + mh.typeOp(Opcodes.NEW, NativeImageData.class); + mh.op(Opcodes.DUP); + + mh.loadIO(); + mh.getIO(boolean.class); + + mh.op(Opcodes.DUP); + Variable stb = mh.addVar("stb", boolean.class); + mh.varOp(Opcodes.ISTORE, stb); + + bytebufferDef.stbVariable = stb; + bytebufferDef.writeGet(mh); + + mh.op(Opcodes.SWAP); + mh.callInst(Opcodes.INVOKESPECIAL, NativeImageData.class, "", Void.TYPE, ByteBuffer.class, boolean.class); + } + + @Override + protected void writeMethodMeasure(MethodWriter mh, Runnable valueLoad) { + bytebufferDef.writeMeasure(mh, () -> { + valueLoad.run(); + mh.visitFieldInsn(Opcodes.GETFIELD, NativeImageData.class, "buffer", ByteBuffer.class); + }); + } + + @Override + public long getStaticSize() { + return bytebufferDef.getStaticSize() + 1; + } + + private static class ByteBufferDef extends BufferDef { + private Variable stbVariable; + + public ByteBufferDef(Struct clazz) { + super(clazz); + } + + @Override + protected void allocateBuffer(MethodWriter mh) { + mh.varOp(Opcodes.ILOAD, stbVariable); + try (var thing = new IfElse(mh, Opcodes.IFEQ)) { + mh.op(Opcodes.ICONST_1, Opcodes.SWAP); + mh.callInst(Opcodes.INVOKESTATIC, MemoryUtil.class, "memCalloc", ByteBuffer.class, int.class, int.class); + thing.elseEnd(); + mh.callInst(Opcodes.INVOKESTATIC, MemoryUtil.class, "memAlloc", ByteBuffer.class, int.class); + } + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/fragment/Fragment.java b/src/main/java/dev/notalpha/dashloader/io/fragment/Fragment.java new file mode 100644 index 00000000..edc2ed65 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/fragment/Fragment.java @@ -0,0 +1,27 @@ +package dev.notalpha.dashloader.io.fragment; + +import java.util.List; + +public class Fragment { + public final long size; + public final int startIndex; + public final int endIndex; + public final List inner; + + public Fragment(long size, int startIndex, int endIndex, List inner) { + this.size = size; + this.startIndex = startIndex; + this.endIndex = endIndex; + this.inner = inner; + } + + @Override + public String toString() { + return "Fragment{" + + "size=" + size + + ", startIndex=" + startIndex + + ", endIndex=" + endIndex + + ", inner=" + inner + + '}'; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/fragment/Piece.java b/src/main/java/dev/notalpha/dashloader/io/fragment/Piece.java new file mode 100644 index 00000000..5d25061f --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/fragment/Piece.java @@ -0,0 +1,50 @@ +package dev.notalpha.dashloader.io.fragment; + +import java.util.ArrayList; +import java.util.List; + +public abstract class Piece { + public final long size; + int elementPos = 0; + + protected Piece(long size) { + this.size = size; + } + + public abstract Piece[] getInner(); + + public boolean isDone() { + Piece[] inner = this.getInner(); + return inner == null || !(elementPos < inner.length); + } + + public Fragment fragment(long sizeRemaining) { + Piece[] inner = this.getInner(); + if (inner == null) { + throw new RuntimeException("Non splitting piece requested fragmentation"); + } else { + int rangeStart = elementPos; + long currentSize = 0; + + List innerOut = new ArrayList<>(); + int rangeEnd = 0; + // Add until we reach the intended size, or we hit the last element. + while ((currentSize < sizeRemaining) && elementPos < inner.length) { + var piece = inner[elementPos]; + rangeEnd = elementPos + 1; + if (piece.getInner() == null) { + currentSize += piece.size; + elementPos += 1; + } else { + Fragment fragment = piece.fragment(sizeRemaining); + innerOut.add(fragment); + currentSize += fragment.size; + if (piece.isDone()) { + elementPos += 1; + } + } + } + return new Fragment(currentSize, rangeStart, rangeEnd, innerOut); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/fragment/SimplePiece.java b/src/main/java/dev/notalpha/dashloader/io/fragment/SimplePiece.java new file mode 100644 index 00000000..4b612b29 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/fragment/SimplePiece.java @@ -0,0 +1,22 @@ +package dev.notalpha.dashloader.io.fragment; + +import java.util.Arrays; + +public class SimplePiece extends Piece { + public final Piece[] value; + + public SimplePiece(Piece[] value) { + super(Arrays.stream(value).mapToLong(dEntry -> dEntry.size).sum()); + this.value = value; + } + + @Override + public Piece[] getInner() { + return value; + } + + @Override + public String toString() { + return Arrays.toString(value); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/io/fragment/SizePiece.java b/src/main/java/dev/notalpha/dashloader/io/fragment/SizePiece.java new file mode 100644 index 00000000..8d587d6a --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/io/fragment/SizePiece.java @@ -0,0 +1,17 @@ +package dev.notalpha.dashloader.io.fragment; + +public class SizePiece extends Piece { + public SizePiece(long size) { + super(size); + } + + @Override + public Piece[] getInner() { + return null; + } + + @Override + public String toString() { + return ""; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/misc/HahaManager.java b/src/main/java/dev/notalpha/dashloader/misc/HahaManager.java new file mode 100644 index 00000000..f1117cad --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/misc/HahaManager.java @@ -0,0 +1,84 @@ +package dev.notalpha.dashloader.misc; + +import dev.notalpha.dashloader.config.Config; +import dev.notalpha.dashloader.config.ConfigHandler; + +import java.util.ArrayList; +import java.util.List; + +public final class HahaManager { + private static final String[] FACTS = { + "Dash was for the cool kids", + "fun fact: 1 + 1 = 11", + "glisco goes around and yells", + ":froge:", + ":bigfroge:", + ":smolfroge:", + "Frog + Doge = Froge", + "Froges dad is cool", + "Rogger Rogger!", + "Yes commander!", + "I am not the swarm!", + "Get that golden strawberry!", + "Kevin is cool.", + "B-Sides are where I flex.", + "Starting an accelerated backhop", + "Gordon Freeman. I like your tie.", + "The factory must grow.", + "Not the biters.", + "Ya got more red belts?", + "I need more boilers.", + "Throughput of circuits is gud.", + "amogus", + "sus", + "imposter", + "it was red!", + "What does the vent button do?", + "We need more white wine.", + "I season my cuttingboard", + "Do as I say, not as I do", + "Colton is fired", + "Was a banger on the cord.", + "My code thinks different.", + "Make it for 300$ sell it for 1300$", + "Steve is almost chad", + "IKEA is traditional.", + "1 + 1 = 11", + "https://ko-fi.com/notequalalpha", + "USB-C is gud.", + "Modrinth gud.", + "Leocth and Alpha were first.", + "Corn on a jakob is the best.", + "Cornebb is cool.", + "Hyphen is cool.", + "DashLoader kinda banger.", + "MFOTS was a thing.", + ":tnypotat:", + "418 I'm a teapot is a real error", + "mld hrdr - leocth 2022", + // HiItsDevin + "Devin beat 7C after 5 1/2 hours", + // shedaniel + "Look at me, I am vibing up here", + "Doesn't break REI", + // devonk15 + "Come here often?", + // bendy1234 + "We back!", + "No spaghetti code here..." + }; + + public static String getFact() { + Config config = ConfigHandler.INSTANCE.config; + List splashLines = new ArrayList<>(config.customSplashLines); + if (config.addDefaultSplashLines) { + splashLines.addAll(List.of(FACTS)); + } + + if (splashLines.isEmpty()) { + return null; + } + + return splashLines.get((int) (System.currentTimeMillis() % splashLines.size())); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java b/src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java new file mode 100644 index 00000000..b6e9af3c --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java @@ -0,0 +1,115 @@ +package dev.notalpha.dashloader.misc; + +import net.minecraft.client.texture.NativeImage; +import org.apache.commons.lang3.builder.MultilineRecursiveToStringStyle; +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; + +import java.lang.reflect.Field; +import java.lang.reflect.InaccessibleObjectException; +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.util.*; +import java.util.function.Supplier; + +public class ObjectDumper { + public static String dump(Object object) { + return ReflectionToStringBuilder.toString(object, new Style()); + } + + private static final class Style extends MultilineRecursiveToStringStyle { + public Style() { + setFieldNameValueSeparator(": "); + setUseIdentityHashCode(false); + setUseShortClassName(true); + } + + public void appendDetail(StringBuffer buffer, String fieldName, Object value) { + try { + if (value == null) { + buffer.append(fieldName).append("null"); + return; + } + if (Objects.equals(fieldName, "glRef")) { + buffer.append(""); + return; + } + + switch (value) { + case ThreadLocal local -> appendDetail(buffer, fieldName, local.get()); + case HashMap map -> appendDetail(buffer, fieldName, map); + case ArrayList list -> appendDetail(buffer, fieldName, list); + case NativeImage image -> + buffer.append("Image{ format: ").append(image.getFormat()).append(", size: ").append(image.getWidth()).append("x").append(image.getHeight()).append(" }"); + case IntBuffer buffer1 -> appendBuff(buffer, buffer1, buffer1::get); + case FloatBuffer buffer1 -> appendBuff(buffer, buffer1, buffer1::get); + case ByteBuffer buffer1 -> appendBuff(buffer, buffer1, buffer1::get); + case Enum enumValue -> buffer.append(enumValue.name()); + default -> fallback(buffer, fieldName, value); + } + } catch (Exception e) { + throw new RuntimeException(value == null ? "null" : value.toString(), e); + } + } + + private void fallback(StringBuffer buffer, String fieldName, Object value) { + try { + StringBuffer builder = new StringBuffer(); + super.appendDetail(builder, fieldName, value); + String s = builder.toString(); + String result = s.split("@")[0]; + buffer.append(result); + } catch (InaccessibleObjectException e) { + throw e; + } catch (Exception e) { + e.printStackTrace(); + + buffer.append("unknown"); + try { + Field spaces = MultilineRecursiveToStringStyle.class.getDeclaredField("spaces"); + spaces.setAccessible(true); + spaces.setInt(this, spaces.getInt(this) - 2); + } catch (IllegalAccessException | NoSuchFieldException ex) { + throw new RuntimeException(ex); + } + } + } + + private void appendBuff(StringBuffer buffer, Buffer buff, Supplier supplier) { + buffer.append(buff.getClass().getSimpleName()); + buffer.append("[ "); + int limit = buff.limit(); + if (limit < 50) { + buff.rewind(); + for (int i = 0; i < limit; i++) { + buffer.append(supplier.get()); + buffer.append(", "); + } + } else { + buffer.append("... "); + } + buffer.append("] limit: "); + buffer.append(buff.limit()); + } + + @Override + protected void appendDetail(StringBuffer buffer, String fieldName, Map map) { + buffer.append(this.getArrayStart()); + + // Sort maps to be comparable + List> entries = new ArrayList<>(map.entrySet()); + entries.sort((o1, o2) -> o1.getKey().toString().compareTo(o2.toString())); + entries.forEach((entry) -> { + buffer.append(getArraySeparator()); + this.appendDetail(buffer, String.valueOf(entry.getKey()), entry.getValue()); + }); + buffer.append(this.getArrayEnd()); + } + + @Override + protected void appendIdentityHashCode(StringBuffer buffer, Object object) { + + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/misc/ProfilerUtil.java b/src/main/java/dev/notalpha/dashloader/misc/ProfilerUtil.java new file mode 100644 index 00000000..cadd7117 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/misc/ProfilerUtil.java @@ -0,0 +1,24 @@ +package dev.notalpha.dashloader.misc; + +public final class ProfilerUtil { + public static long RELOAD_START = 0; + + public static String getTimeStringFromStart(long start) { + return getTimeString(System.currentTimeMillis() - start); + } + + public static String getTimeString(long ms) { + if (ms >= 60000) { // 1m + return ((int) ((ms / 60000))) + "m " + ((int) (ms % 60000) / 1000) + "s"; // [4m 42s] + } else if (ms >= 3000) // 3s + { + return printMsToSec(ms) + "s"; // 1293ms = [1.2s] + } else { + return ms + "ms"; // [400ms] + } + } + + private static float printMsToSec(long ms) { + return Math.round(ms / 100f) / 10f; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java b/src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java new file mode 100644 index 00000000..55433774 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java @@ -0,0 +1,47 @@ +package dev.notalpha.dashloader.misc; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.Language; + +import java.util.HashMap; +import java.util.Objects; + +public class TranslationHelper { + private static final TranslationHelper INSTANCE = new TranslationHelper(); + private final HashMap translations; + private String langCode; + + private TranslationHelper() { + this.translations = new HashMap<>(); + } + + public static TranslationHelper getInstance() { + var langCode = MinecraftClient.getInstance().getLanguageManager().getLanguage(); + if (!Objects.equals(INSTANCE.langCode, langCode)) { + INSTANCE.langCode = langCode; + INSTANCE.loadLang(langCode); + } + return INSTANCE; + } + + private void loadLang(String langCode) { + this.langCode = langCode; + var stream = this.getClass().getClassLoader().getResourceAsStream("dashloader/lang/" + langCode + ".json"); + if (stream != null) { + Language.load(stream, this.translations::put); + } else { + stream = this.getClass().getClassLoader().getResourceAsStream("dashloader/lang/en_us.json"); + if (stream != null) { + Language.load(stream, this.translations::put); + } + } + } + + public String get(String text) { + return this.translations.getOrDefault(text, text); + } + + public boolean has(String key) { + return this.translations.containsKey(key); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/misc/UnsafeHelper.java b/src/main/java/dev/notalpha/dashloader/misc/UnsafeHelper.java new file mode 100644 index 00000000..99c33858 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/misc/UnsafeHelper.java @@ -0,0 +1,38 @@ +package dev.notalpha.dashloader.misc; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; + +public final class UnsafeHelper { + public static final sun.misc.Unsafe UNSAFE = getUnsafeInstance(); + + private static sun.misc.Unsafe getUnsafeInstance() { + Class clazz = sun.misc.Unsafe.class; + for (Field field : clazz.getDeclaredFields()) { + if (!field.getType().equals(clazz)) { + continue; + } + final int modifiers = field.getModifiers(); + if (!(Modifier.isStatic(modifiers) && Modifier.isFinal(modifiers))) { + continue; + } + try { + field.setAccessible(true); + return (sun.misc.Unsafe) field.get(null); + } catch (Exception ignored) { + } + break; + } + + throw new IllegalStateException("Unsafe is unavailable."); + } + + @SuppressWarnings("unchecked") + public static O allocateInstance(Class closs) { + try { + return (O) UNSAFE.allocateInstance(closs); + } catch (InstantiationException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/misc/UnsafeImage.java b/src/main/java/dev/notalpha/dashloader/misc/UnsafeImage.java new file mode 100644 index 00000000..edd854df --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/misc/UnsafeImage.java @@ -0,0 +1,27 @@ +package dev.notalpha.dashloader.misc; + +import dev.notalpha.dashloader.mixin.accessor.NativeImageAccessor; +import net.minecraft.client.texture.NativeImage; +import org.lwjgl.system.MemoryUtil; + +public final class UnsafeImage { + public final NativeImage image; + public final int width; + public final int height; + public final long pointer; + + public UnsafeImage(NativeImage image) { + this.image = image; + this.width = image.getWidth(); + this.height = image.getHeight(); + this.pointer = ((NativeImageAccessor) (Object) image).getPointer(); + } + + public int get(int x, int y) { + return MemoryUtil.memGetInt(this.pointer + ((long) x + (long) y * (long) width) * 4L); + } + + public void set(int x, int y, int value) { + MemoryUtil.memPutInt(this.pointer + ((long) x + (long) y * (long) width) * 4L, value); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/MixinPlugin.java b/src/main/java/dev/notalpha/dashloader/mixin/MixinPlugin.java new file mode 100644 index 00000000..e2edf82f --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/MixinPlugin.java @@ -0,0 +1,46 @@ +package dev.notalpha.dashloader.mixin; + +import dev.notalpha.dashloader.config.ConfigHandler; +import org.objectweb.asm.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; + +import java.util.List; +import java.util.Set; + +public class MixinPlugin implements IMixinConfigPlugin { + @Override + public void onLoad(String mixinPackage) { + + } + + @Override + public String getRefMapperConfig() { + return null; + } + + @Override + public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { + return ConfigHandler.shouldApplyMixin(mixinClassName); + } + + @Override + public void acceptTargets(Set myTargets, Set otherTargets) { + + } + + @Override + public List getMixins() { + return null; + } + + @Override + public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + + } + + @Override + public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java new file mode 100644 index 00000000..5d347906 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java @@ -0,0 +1,12 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.render.model.json.AndMultipartModelSelector; +import net.minecraft.client.render.model.json.MultipartModelSelector; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(AndMultipartModelSelector.class) +public interface AndMultipartModelSelectorAccessor { + @Accessor + Iterable getSelectors(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java new file mode 100644 index 00000000..4da6647c --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java @@ -0,0 +1,25 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.render.model.BasicBakedModel; +import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.texture.Sprite; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(BasicBakedModel.class) +public interface BasicBakedModelAccessor { + @Accessor + boolean getUsesAo(); + + @Accessor + boolean getHasDepth(); + + @Accessor + boolean getIsSideLit(); + + @Accessor + Sprite getSprite(); + + @Accessor + ModelTransformation getTransformation(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java new file mode 100644 index 00000000..6d19242c --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java @@ -0,0 +1,22 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.font.BitmapFont; +import net.minecraft.client.font.GlyphContainer; +import net.minecraft.client.texture.NativeImage; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(BitmapFont.class) +public interface BitmapFontAccessor { + @Invoker("") + static BitmapFont init(NativeImage image, GlyphContainer glyphs) { + throw new AssertionError(); + } + + @Accessor + GlyphContainer getGlyphs(); + + @Accessor + NativeImage getImage(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java new file mode 100644 index 00000000..9c89bee1 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java @@ -0,0 +1,39 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.font.BitmapFont; +import net.minecraft.client.texture.NativeImage; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(BitmapFont.BitmapFontGlyph.class) +public interface BitmapFontGlyphAccessor { + @Invoker("") + static BitmapFont.BitmapFontGlyph init(float scaleFactor, NativeImage image, int x, int y, int width, int height, int advance, int ascent) { + throw new AssertionError(); + } + + @Accessor + NativeImage getImage(); + + @Accessor("x") + int getX(); + + @Accessor("y") + int getY(); + + @Accessor + float getScaleFactor(); + + @Accessor + int getWidth(); + + @Accessor + int getHeight(); + + @Accessor + int getAdvance(); + + @Accessor + int getAscent(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java new file mode 100644 index 00000000..2e5ae442 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java @@ -0,0 +1,13 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.font.FontFilterType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(FontFilterType.FilterMap.class) +public interface FilterMapAccessor { + @Accessor + Map getActiveFilters(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java new file mode 100644 index 00000000..0d8cad43 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java @@ -0,0 +1,18 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.font.Font; +import net.minecraft.client.font.FontManager; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +import java.util.List; +import java.util.Map; + +@Mixin(FontManager.ProviderIndex.class) +public interface FontManagerProviderIndexAccessor { + @Invoker("") + static FontManager.ProviderIndex create(Map> providers, List allProviders) { + throw new AssertionError(); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java new file mode 100644 index 00000000..0e54eb9f --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java @@ -0,0 +1,30 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.gl.GlUniform; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.nio.FloatBuffer; +import java.nio.IntBuffer; + +@Mixin(GlUniform.class) +public interface GlUniformAccessor { + @Accessor + IntBuffer getIntData(); + + @Accessor + @Mutable + void setIntData(IntBuffer intData); + + @Accessor + FloatBuffer getFloatData(); + + @Accessor + @Mutable + void setFloatData(FloatBuffer floatData); + + @Accessor + @Mutable + void setName(String name); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/IdentifierAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/IdentifierAccessor.java new file mode 100644 index 00000000..d4e98632 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/IdentifierAccessor.java @@ -0,0 +1,13 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(Identifier.class) +public interface IdentifierAccessor { + @Invoker("") + static Identifier init(String namespace, String path) { + throw new AssertionError(); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java new file mode 100644 index 00000000..a84feaed --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java @@ -0,0 +1,25 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import dev.notalpha.hyphen.thr.HyphenException; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.client.render.model.BlockStatesLoader; +import net.minecraft.state.StateManager; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(BlockStatesLoader.class) +public interface ModelLoaderAccessor { + @Accessor("ITEM_FRAME_STATE_MANAGER") + static StateManager getTheItemFrameThing() { + throw new HyphenException("froge", "your dad"); + } + + @Accessor("STATIC_DEFINITIONS") + static Map> getStaticDefinitions() { + throw new HyphenException("froge", "your dad"); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java new file mode 100644 index 00000000..5f1ceebb --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java @@ -0,0 +1,24 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.block.BlockState; +import net.minecraft.client.render.model.MultipartBakedModel; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.BitSet; +import java.util.List; +import java.util.Map; + +@Mixin(MultipartBakedModel.class) +public interface MultipartBakedModelAccessor { + @Accessor + List getSelectors(); + + @Accessor + Map getStateCache(); + + @Accessor + @Mutable + void setStateCache(Map stateBitSetMap); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java new file mode 100644 index 00000000..3893b3a4 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java @@ -0,0 +1,12 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.render.model.json.MultipartModelComponent; +import net.minecraft.client.render.model.json.MultipartModelSelector; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(MultipartModelComponent.class) +public interface MultipartModelComponentAccessor { + @Accessor() + MultipartModelSelector getSelector(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java new file mode 100644 index 00000000..7a1cc013 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java @@ -0,0 +1,20 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.texture.NativeImage; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(NativeImage.class) +public interface NativeImageAccessor { + @Invoker("") + static NativeImage init(NativeImage.Format format, int width, int height, boolean useStb, long pointer) { + throw new AssertionError(); + } + + @Accessor + long getPointer(); + + @Accessor + boolean getIsStbImage(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java new file mode 100644 index 00000000..73f042eb --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java @@ -0,0 +1,12 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.render.model.json.MultipartModelSelector; +import net.minecraft.client.render.model.json.OrMultipartModelSelector; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(OrMultipartModelSelector.class) +public interface OrMultipartModelSelectorAccessor { + @Accessor + Iterable getSelectors(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java new file mode 100644 index 00000000..9bb4751c --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java @@ -0,0 +1,61 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import it.unimi.dsi.fastutil.ints.IntList; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import net.minecraft.client.gl.GlUniform; +import net.minecraft.client.gl.ShaderProgram; +import net.minecraft.client.gl.ShaderProgramDefinition; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.List; +import java.util.Map; + +@Mixin(ShaderProgram.class) +public interface ShaderProgramAccessor { + @Accessor + List getSamplers(); + + @Accessor + @Mutable + void setSamplers(List samplers); + + @Accessor + Object2IntMap getSamplerTextures(); + + @Accessor + @Mutable + void setSamplerTextures(Object2IntMap samplerTextures); + + @Accessor + IntList getSamplerLocations(); + + @Accessor + @Mutable + void setSamplerLocations(IntList samplerLocations); + + @Accessor + List getUniforms(); + + @Accessor + @Mutable + void setUniforms(List uniforms); + + @Accessor + Map getUniformsByName(); + + @Accessor + @Mutable + void setUniformsByName(Map uniformsByName); + + @Accessor + @Mutable + Map getUniformDefinitionsByName(); + + @Accessor + @Mutable + void setGlRef(int glRef); +} + + diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java new file mode 100644 index 00000000..1b906e07 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java @@ -0,0 +1,14 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.render.model.json.SimpleMultipartModelSelector; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(SimpleMultipartModelSelector.class) +public interface SimpleMultipartModelSelectorAccessor { + @Accessor + String getKey(); + + @Accessor + String getValueString(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java new file mode 100644 index 00000000..1961b7b7 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java @@ -0,0 +1,25 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.texture.SpriteContents; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +import java.util.List; + +@Mixin(SpriteContents.Animation.class) +public interface SpriteAnimationAccessor { + @Invoker("") + static SpriteContents.Animation init(SpriteContents parent, List frames, int frameCount, boolean interpolation) { + throw new AssertionError(); + } + + @Accessor + List getFrames(); + + @Accessor + int getFrameCount(); + + @Accessor + boolean getInterpolation(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java new file mode 100644 index 00000000..6d0e11c6 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java @@ -0,0 +1,20 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.texture.SpriteContents; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(SpriteContents.AnimationFrame.class) +public interface SpriteAnimationFrameAccessor { + @Invoker("") + static SpriteContents.AnimationFrame newSpriteFrame(int index, int time) { + throw new AssertionError(); + } + + @Accessor + int getIndex(); + + @Accessor + int getTime(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java new file mode 100644 index 00000000..a0d96ed9 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java @@ -0,0 +1,46 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.texture.NativeImage; +import net.minecraft.client.texture.SpriteContents; +import net.minecraft.resource.metadata.ResourceMetadata; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(SpriteContents.class) +public interface SpriteContentsAccessor { + @Accessor + NativeImage getImage(); + + @Accessor + @Mutable + void setImage(NativeImage image); + + @Accessor + SpriteContents.Animation getAnimation(); + + @Accessor + @Mutable + void setAnimation(SpriteContents.Animation animation); + + @Accessor + @Mutable + void setMipmapLevelsImages(NativeImage[] mipmapLevelsImages); + + @Accessor + @Mutable + void setId(Identifier id); + + @Accessor + @Mutable + void setWidth(int width); + + @Accessor + @Mutable + void setHeight(int height); + + @Accessor + @Mutable + void setMetadata(ResourceMetadata animation); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java new file mode 100644 index 00000000..99f47b3c --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java @@ -0,0 +1,35 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.font.GlyphContainer; +import net.minecraft.client.font.TrueTypeFont; +import org.lwjgl.util.freetype.FT_Face; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.nio.ByteBuffer; + +@Mixin(TrueTypeFont.class) +public interface TrueTypeFontAccessor { + @Accessor + @Mutable + void setBuffer(ByteBuffer thing); + + @Accessor + FT_Face getFace(); + + @Accessor + @Mutable + void setFace(FT_Face thing); + + @Accessor + float getOversample(); + + @Accessor + @Mutable + void setOversample(float thing); + + @Accessor + @Mutable + void setContainer(GlyphContainer container); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java new file mode 100644 index 00000000..2d4b027b --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java @@ -0,0 +1,18 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.font.GlyphContainer; +import net.minecraft.client.font.UnihexFont; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(UnihexFont.class) +public interface UnihexFontAccessor { + @Invoker("") + static UnihexFont create(GlyphContainer glyphs) { + throw new AssertionError(); + } + + @Accessor + GlyphContainer getGlyphs(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java new file mode 100644 index 00000000..022df755 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java @@ -0,0 +1,13 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.WeightedBakedModel; +import net.minecraft.util.collection.DataPool; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(WeightedBakedModel.class) +public interface WeightedBakedModelAccessor { + @Accessor + DataPool getModels(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java new file mode 100644 index 00000000..b7a348de --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java @@ -0,0 +1,11 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.resource.ZipResourcePack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ZipResourcePack.class) +public interface ZipResourcePackAccessor { + @Accessor + ZipResourcePack.ZipFileWrapper getZipFile(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java new file mode 100644 index 00000000..027d8077 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java @@ -0,0 +1,13 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.resource.ZipResourcePack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.io.File; + +@Mixin(ZipResourcePack.ZipFileWrapper.class) +public interface ZipWrapperResourcePackAccessor { + @Accessor + File getFile(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java new file mode 100644 index 00000000..090d44ad --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java @@ -0,0 +1,26 @@ +package dev.notalpha.dashloader.mixin.main; + +import dev.notalpha.dashloader.DashLoader; +import dev.notalpha.dashloader.misc.ProfilerUtil; +import net.minecraft.Bootstrap; +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; + +@Mixin(value = Bootstrap.class, priority = -69) +public class BootstrapMixin { + @Unique + private static long BOOTSTRAP_START = -1; + + @Inject(method = "initialize", at = @At("HEAD")) + private static void timeStart(CallbackInfo ci) { + BOOTSTRAP_START = System.currentTimeMillis(); + } + + @Inject(method = "initialize", at = @At("TAIL")) + private static void timeStop(CallbackInfo ci) { + DashLoader.LOG.info("Minecraft bootstrap in {}", ProfilerUtil.getTimeStringFromStart(BOOTSTRAP_START)); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java new file mode 100644 index 00000000..86f981a4 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java @@ -0,0 +1,47 @@ +package dev.notalpha.dashloader.mixin.main; + +import dev.notalpha.dashloader.DashLoader; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.DashLoaderClient; +import net.minecraft.client.Keyboard; +import org.lwjgl.glfw.GLFW; +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; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +/** + * Makes f3 + t reset the cache. Also makes shift + f3 + t not reset it. + */ +@Mixin(Keyboard.class) +public class KeyboardMixin { + @Unique + private boolean shiftHeld = false; + + @Inject( + method = "processF3", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/MinecraftClient;reloadResources()Ljava/util/concurrent/CompletableFuture;", + shift = At.Shift.BEFORE + ) + ) + private void f3tReloadWorld(int key, CallbackInfoReturnable cir) { + if (!this.shiftHeld) { + if (DashLoaderClient.CACHE.getStatus() == CacheStatus.IDLE) { + DashLoader.LOG.info("Clearing cache."); + DashLoaderClient.CACHE.remove(); + } + } + } + + @Inject( + method = "onKey", + at = @At("HEAD") + ) + private void keyPress(long window, int key, int scancode, int action, int modifiers, CallbackInfo ci) { + this.shiftHeld = action != 0 && modifiers == GLFW.GLFW_MOD_SHIFT; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/MainMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/MainMixin.java new file mode 100644 index 00000000..3ea2209b --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/MainMixin.java @@ -0,0 +1,26 @@ +package dev.notalpha.dashloader.mixin.main; + +import dev.notalpha.dashloader.DashLoader; +import net.minecraft.client.main.Main; +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; + +@Mixin(Main.class) +public class MainMixin { + @Unique + private static boolean INITIALIZED = false; + + @Inject( + method = "main*", + at = @At(value = "HEAD") + ) + private static void bootstrap(String[] args, CallbackInfo ci) { + if (!INITIALIZED) { + DashLoader.bootstrap(); + INITIALIZED = true; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java new file mode 100644 index 00000000..e43178c8 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java @@ -0,0 +1,34 @@ +package dev.notalpha.dashloader.mixin.main; + +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.DashLoaderClient; +import net.minecraft.client.MinecraftClient; +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.concurrent.CompletableFuture; + +@Mixin(MinecraftClient.class) +public abstract class MinecraftClientMixin { + @Shadow + protected abstract void render(boolean tick); + + @Inject(method = "reloadResources()Ljava/util/concurrent/CompletableFuture;", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;reloadResources(ZLnet/minecraft/client/MinecraftClient$LoadingContext;)Ljava/util/concurrent/CompletableFuture;")) + private void requestReload(CallbackInfoReturnable> cir) { + DashLoaderClient.NEEDS_RELOAD = true; + } + + @Inject(method = "reloadResources(ZLnet/minecraft/client/MinecraftClient$LoadingContext;)Ljava/util/concurrent/CompletableFuture;", at = @At(value = "RETURN")) + private void reloadComplete(boolean force, MinecraftClient.LoadingContext loadingContext, CallbackInfoReturnable> cir) { + cir.getReturnValue().thenRun(() -> { + // If the state is SAVE, then this will reset before the caching process can initialize from the splash screen. + if (DashLoaderClient.CACHE.getStatus() != CacheStatus.SAVE) { + DashLoaderClient.CACHE.reset(); + } + }); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java new file mode 100644 index 00000000..eb0bb9da --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java @@ -0,0 +1,57 @@ +package dev.notalpha.dashloader.mixin.main; + +import dev.notalpha.dashloader.DashLoader; +import dev.notalpha.dashloader.client.DashLoaderClient; +import dev.notalpha.dashloader.misc.ProfilerUtil; +import dev.notalpha.dashloader.mixin.accessor.ZipResourcePackAccessor; +import dev.notalpha.dashloader.mixin.accessor.ZipWrapperResourcePackAccessor; +import net.minecraft.client.MinecraftClient; +import net.minecraft.resource.*; +import net.minecraft.util.Unit; +import org.apache.commons.codec.digest.DigestUtils; +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; + +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; + +@Mixin(ReloadableResourceManagerImpl.class) +public class ReloadableResourceManagerImplMixin { + @Inject(method = "reload", + at = @At(value = "RETURN", shift = At.Shift.BEFORE)) + private void reloadDash(Executor prepareExecutor, Executor applyExecutor, CompletableFuture initialStage, List packs, CallbackInfoReturnable cir) { + ProfilerUtil.RELOAD_START = System.currentTimeMillis(); + ResourcePackManager manager = MinecraftClient.getInstance().getResourcePackManager(); + List values = new ArrayList<>(); + + // Use server resource pack display name to differentiate them across each-other + for (ResourcePack pack : packs) { + if (Objects.equals(pack.getId(), "server")) { + if (pack instanceof ZipResourcePack zipResourcePack) { + ZipResourcePackAccessor zipPack = (ZipResourcePackAccessor) zipResourcePack; + Path path = ((ZipWrapperResourcePackAccessor) zipPack.getZipFile()).getFile().toPath(); + values.add(path.toString()); + } + } + } + + for (ResourcePackProfile profile : manager.getEnabledProfiles()) { + if (profile != null) { + // Skip server as we have a special case where we use its path instead which contains its hash + if (!Objects.equals(profile.getId(), "server")) { + values.add(profile.getId() + "/"); + } + } + } + + String hash = DigestUtils.md5Hex(values.toString()).toUpperCase(); + DashLoader.LOG.info("Hash changed to {}", hash); + DashLoaderClient.CACHE.load(hash); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java new file mode 100644 index 00000000..0b4d405e --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java @@ -0,0 +1,105 @@ +package dev.notalpha.dashloader.mixin.main; + +import dev.notalpha.dashloader.DashLoader; +import dev.notalpha.dashloader.api.cache.Cache; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.DashLoaderClient; +import dev.notalpha.dashloader.client.ui.toast.DashToast; +import dev.notalpha.dashloader.client.ui.toast.DashToastState; +import dev.notalpha.dashloader.client.ui.toast.DashToastStatus; +import dev.notalpha.dashloader.config.ConfigHandler; +import dev.notalpha.dashloader.misc.ProfilerUtil; +import dev.notalpha.taski.builtin.StaticTask; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.screen.SplashOverlay; +import net.minecraft.client.gui.screen.TitleScreen; +import net.minecraft.client.toast.Toast; +import net.minecraft.resource.ResourceReload; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +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; + +@Mixin(value = SplashOverlay.class, priority = 69420) +public class SplashScreenMixin { + @Shadow + @Final + private MinecraftClient client; + @Shadow + private long reloadCompleteTime; + @Shadow + @Final + private ResourceReload reload; + @Mutable + @Shadow + @Final + private boolean reloading; + + @Inject( + method = "render", + at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J", shift = At.Shift.BEFORE, ordinal = 1) + ) + private void done(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + this.client.setOverlay(null); + if (this.client.currentScreen != null) { + if (this.client.currentScreen instanceof TitleScreen) { + this.client.currentScreen = new TitleScreen(false); + } + } + + DashLoader.LOG.info("Minecraft reloaded in {}", ProfilerUtil.getTimeStringFromStart(ProfilerUtil.RELOAD_START)); + Cache cache = DashLoaderClient.CACHE; + if (DashLoaderClient.CACHE.getStatus() == CacheStatus.SAVE && client.getToastManager().getToast(DashToast.class, Toast.TYPE) == null) { + DashToastState rawState; + if (ConfigHandler.INSTANCE.config.showCachingToast) { + DashToast toast = new DashToast(); + client.getToastManager().add(toast); + rawState = toast.state; + } else { + rawState = new DashToastState(); + } + + final Thread thread = new Thread(() -> { + DashToastState state = rawState; + DashToastState finalState = state; + state.setStatus(DashToastStatus.PROGRESS); + long start = System.currentTimeMillis(); + boolean save = cache.save(stepTask -> finalState.task = stepTask); + if (save) { + state.setOverwriteText("Created cache in " + ProfilerUtil.getTimeStringFromStart(start)); + state.setStatus(DashToastStatus.DONE); + } else { + // Only show toast on fail. + if (!ConfigHandler.INSTANCE.config.showCachingToast) { + DashToast toast = new DashToast(); + client.getToastManager().add(toast); + state = toast.state; + } + state.setOverwriteText("Internal error, Please check logs."); + state.task = new StaticTask("Crash", 0); + state.setStatus(DashToastStatus.CRASHED); + } + cache.reset(); + state.setDone(); + }); + thread.setName("dashloader-thread"); + thread.start(); + } else { + cache.reset(); + } + } + + @Inject( + method = "render", + at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/ResourceReload;isComplete()Z", shift = At.Shift.BEFORE) + ) + private void removeMinimumTime(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + if (this.reloadCompleteTime == -1L && this.reload.isComplete()) { + this.reloading = false; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java new file mode 100644 index 00000000..ed86d5ce --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java @@ -0,0 +1,166 @@ +package dev.notalpha.dashloader.mixin.option; + +import com.google.common.collect.ImmutableMap; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.WallBlock; +import net.minecraft.block.Waterloggable; +import net.minecraft.block.enums.WallShape; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.shape.VoxelShape; +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.CallbackInfoReturnable; + +import java.util.Map; + +@Mixin(WallBlock.class) +public abstract class WallBlockMixin extends Block implements Waterloggable { + @Unique + private static final int LENGTH = WallShape.values().length; + @Shadow + @Final + public static BooleanProperty UP; + @Shadow + @Final + public static EnumProperty EAST_SHAPE; + @Shadow + @Final + public static EnumProperty NORTH_SHAPE; + @Shadow + @Final + public static EnumProperty WEST_SHAPE; + @Shadow + @Final + public static EnumProperty SOUTH_SHAPE; + @Shadow + @Final + public static BooleanProperty WATERLOGGED; + @Unique + private static VoxelShape[][][][][] SHAPE_CACHE; + @Unique + private static VoxelShape[][][][][] COLLISION_CACHE; + + public WallBlockMixin(Settings settings) { + super(settings); + } + + @Inject(method = "getShapeMap", at = @At(value = "HEAD"), cancellable = true) + private void getShapeMapCache(float f, float g, float h, float i, float j, float k, CallbackInfoReturnable> cir) { + if (this.isCommon(f, g, i)) { + if (this.isShape(h, j, k)) { + if (SHAPE_CACHE != null) { + cir.setReturnValue(this.createFromCache(SHAPE_CACHE)); + } + } else if (this.isCollision(h, j, k)) { + if (COLLISION_CACHE != null) { + cir.setReturnValue(this.createFromCache(COLLISION_CACHE)); + } + } + } + } + + @Inject(method = "getShapeMap", at = @At(value = "RETURN")) + private void getShapeMapCacheCreate(float f, float g, float h, float i, float j, float k, CallbackInfoReturnable> cir) { + if (SHAPE_CACHE == null || COLLISION_CACHE == null) { + if (this.isCommon(f, g, i)) { + if (this.isShape(h, j, k)) { + if (SHAPE_CACHE == null) { + SHAPE_CACHE = new VoxelShape[2][LENGTH][LENGTH][LENGTH][LENGTH]; + this.createCache(SHAPE_CACHE, cir.getReturnValue()); + } + } else if (this.isCollision(h, j, k)) { + if (COLLISION_CACHE == null) { + COLLISION_CACHE = new VoxelShape[2][LENGTH][LENGTH][LENGTH][LENGTH]; + this.createCache(COLLISION_CACHE, cir.getReturnValue()); + } + } + } + } + } + + @Unique + private ImmutableMap createFromCache(VoxelShape[][][][][] rawCache) { + ImmutableMap.Builder builder = ImmutableMap.builder(); + for (Boolean up : UP.getValues()) { + VoxelShape[][][][] cache = up ? rawCache[1] : rawCache[0]; + for (WallShape east : EAST_SHAPE.getValues()) { + for (WallShape north : NORTH_SHAPE.getValues()) { + for (WallShape west : WEST_SHAPE.getValues()) { + for (WallShape south : SOUTH_SHAPE.getValues()) { + final VoxelShape cached = this.getCached(cache, east, north, west, south); + + BlockState blockState = this.getDefaultState() + .with(UP, up) + .with(EAST_SHAPE, east) + .with(WEST_SHAPE, west) + .with(NORTH_SHAPE, north) + .with(SOUTH_SHAPE, south); + + builder.put(blockState.with(WATERLOGGED, false), cached); + builder.put(blockState.with(WATERLOGGED, true), cached); + } + } + } + } + } + return builder.build(); + } + + @Unique + private void createCache(VoxelShape[][][][][] rawCache, Map map) { + for (Boolean up : UP.getValues()) { + VoxelShape[][][][] cache = up ? rawCache[1] : rawCache[0]; + for (WallShape east : EAST_SHAPE.getValues()) { + for (WallShape north : NORTH_SHAPE.getValues()) { + for (WallShape west : WEST_SHAPE.getValues()) { + for (WallShape south : SOUTH_SHAPE.getValues()) { + + BlockState blockState = this.getDefaultState() + .with(UP, up) + .with(EAST_SHAPE, east) + .with(WEST_SHAPE, west) + .with(NORTH_SHAPE, north) + .with(SOUTH_SHAPE, south) + .with(WATERLOGGED, false); + + this.setCached(cache, east, north, west, south, map.get(blockState)); + } + } + } + } + } + } + + //shape 4.0F, 3.0F, 16.0F, 0.0F, 14.0F, 16.0F + //collision 4.0F, 3.0F, 24.0F, 0.0F, 24.0F, 24.0F + @Unique + private boolean isShape(float h, float j, float k) { + return h == 16.0F && j == 14.0F && k == 16.0F; + } + + @Unique + private boolean isCollision(float h, float j, float k) { + return h == 24.0F && j == 24.0F && k == 24.0F; + } + + @Unique + private boolean isCommon(float f, float g, float i) { + return f == 4.0F && g == 3.0F && i == 0.0F; + } + + @Unique + private VoxelShape getCached(VoxelShape[][][][] cache, WallShape east, WallShape north, WallShape west, WallShape south) { + return cache[east.ordinal()][north.ordinal()][west.ordinal()][south.ordinal()]; + } + + @Unique + private void setCached(VoxelShape[][][][] cache, WallShape east, WallShape north, WallShape west, WallShape south, VoxelShape shape) { + cache[east.ordinal()][north.ordinal()][west.ordinal()][south.ordinal()] = shape; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java new file mode 100644 index 00000000..d5dcd763 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java @@ -0,0 +1,36 @@ +package dev.notalpha.dashloader.mixin.option.cache; + +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.splash.SplashModule; +import net.minecraft.client.resource.SplashTextResourceSupplier; +import net.minecraft.resource.ResourceManager; +import net.minecraft.util.profiler.Profiler; +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; + +import java.util.List; + +@Mixin(SplashTextResourceSupplier.class) +public class SplashTextResourceSupplierMixin { + @Inject( + method = "prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Ljava/util/List;", + at = @At(value = "HEAD"), + cancellable = true + ) + private void applySplashCache(ResourceManager resourceManager, Profiler profiler, CallbackInfoReturnable> cir) { + SplashModule.TEXTS.visit(CacheStatus.LOAD, cir::setReturnValue); + } + + @Inject( + method = "prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Ljava/util/List;", + at = @At(value = "RETURN") + ) + private void stealSplashCache(ResourceManager resourceManager, Profiler profiler, CallbackInfoReturnable> cir) { + SplashModule.TEXTS.visit(CacheStatus.SAVE, strings -> { + strings.clear(); + strings.addAll(cir.getReturnValue()); + }); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java new file mode 100644 index 00000000..9220f3d3 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java @@ -0,0 +1,94 @@ +package dev.notalpha.dashloader.mixin.option.cache; + +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; +import com.llamalad7.mixinextras.sugar.Share; +import com.llamalad7.mixinextras.sugar.ref.LocalRef; +import com.mojang.blaze3d.platform.GlStateManager; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.atlas.AtlasModule; +import net.minecraft.client.texture.*; +import net.minecraft.util.Identifier; +import org.apache.commons.codec.digest.DigestUtils; +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.CallbackInfo; + +import java.io.IOException; +import java.nio.file.Files; +import java.util.concurrent.ExecutionException; + +@Mixin(SpriteAtlasTexture.class) +public abstract class SpriteAtlasTextureMixin extends AbstractTexture { + @Final + @Shadow + private Identifier id; + @Shadow + private int mipLevel; + @Shadow + private int width; + @Shadow + private int height; + + @Inject(method = "upload", at = @At(value = "INVOKE", target = "Ljava/util/ArrayList;()V", ordinal = 1, remap = false)) + private void uploadCached(SpriteLoader.StitchResult stitchResult, CallbackInfo ci, @Share("cached") LocalRef cached) { + cached.set(false); + AtlasModule.ATLASES.visit(CacheStatus.LOAD, map -> { + var tasks = map.get(this.id.toUnderscoreSeparatedString()); + if (tasks == null) return; + + try { + // mipLevel should never be greater than tasks.size() + if (mipLevel + 1 != tasks.size()) { + for (var task : tasks) { + task.get().close(); + } + return; + } + + cached.set(true); + bindTexture(); + + for (int i = 0; i < tasks.size(); i++) { + var img = tasks.get(i).get(); + img.upload(i, 0, 0, true); + } + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } + }); + } + + @WrapWithCondition(method = "upload", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/Sprite;upload()V")) + private boolean shouldBuildAtlas(Sprite instance, @Share("cached") LocalRef cached) { + return !cached.get(); + } + + @Inject(method = "upload", at = @At("TAIL")) + private void saveAtlas(SpriteLoader.StitchResult stitchResult, CallbackInfo ci, @Share("cached") LocalRef cached) throws IOException { + if (cached.get()) { + return; + } + + var stringId = this.id.toUnderscoreSeparatedString(); + + AtlasModule.ATLASES.visit(CacheStatus.SAVE, map -> { + map.put(stringId, null); // just for the string + }); + + var atlasFolder = AtlasModule.getAtlasFolder(); + Files.createDirectories(atlasFolder); + + GlStateManager._bindTexture(this.getGlId()); + + for (int i = 0; i <= this.mipLevel; i++) { + try (NativeImage nativeImage = new NativeImage(width >> i, height >> i, false)) { + nativeImage.loadFromTextureImage(i, false); + var path = atlasFolder.resolve(DigestUtils.md5Hex(stringId + i).toUpperCase()); + nativeImage.writeTo(path); + } + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java new file mode 100644 index 00000000..f2b6e9f7 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java @@ -0,0 +1,43 @@ +package dev.notalpha.dashloader.mixin.option.cache.font; + +import dev.notalpha.dashloader.DashLoader; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.font.FontModule; +import dev.notalpha.dashloader.mixin.accessor.FontManagerProviderIndexAccessor; +import net.minecraft.client.font.FontManager; +import net.minecraft.resource.ResourceManager; +import net.minecraft.util.profiler.Profiler; +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; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; + +@Mixin(FontManager.class) +public class FontManagerOverride { + @Inject( + method = "loadIndex", + at = @At(value = "HEAD"), + cancellable = true + ) + private void loadFonts(ResourceManager resourceManager, Executor executor, CallbackInfoReturnable> cir) { + FontModule.DATA.visit(CacheStatus.LOAD, data -> { + DashLoader.LOG.info("Providing fonts"); + cir.setReturnValue(CompletableFuture.completedFuture(FontManagerProviderIndexAccessor.create(data.providers, data.allProviders))); + }); + } + + @Inject( + method = "reload(Lnet/minecraft/client/font/FontManager$ProviderIndex;Lnet/minecraft/util/profiler/Profiler;)V", + at = @At(value = "HEAD") + ) + private void saveFonts(FontManager.ProviderIndex index, Profiler profiler, CallbackInfo ci) { + if (FontModule.DATA.active(CacheStatus.SAVE)) { + DashLoader.LOG.info("Saving fonts"); + FontModule.DATA.set(CacheStatus.SAVE, new FontModule.ProviderIndex(index.fontSets(), index.allProviders())); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java new file mode 100644 index 00000000..430cda56 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java @@ -0,0 +1,36 @@ +package dev.notalpha.dashloader.mixin.option.cache.font; + +import com.llamalad7.mixinextras.sugar.Local; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.font.DashTrueTypeFont; +import dev.notalpha.dashloader.client.font.FontModule; +import net.minecraft.client.font.Font; +import net.minecraft.client.font.TrueTypeFontLoader; +import net.minecraft.resource.ResourceManager; +import net.minecraft.util.Identifier; +import org.lwjgl.util.freetype.FT_Face; +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; + +@Mixin(TrueTypeFontLoader.class) +public abstract class TrueTypeFontLoaderMixin { + @Shadow + public abstract float size(); + + @Shadow + public abstract Identifier location(); + + @Shadow + public abstract String skip(); + + @Inject( + method = "load", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/TrueTypeFont;(Ljava/nio/ByteBuffer;Lorg/lwjgl/util/freetype/FT_Face;FFFFLjava/lang/String;)V") + ) + private void loadInject(ResourceManager resourceManager, CallbackInfoReturnable cir, @Local FT_Face ft_face) { + FontModule.FONT_TO_DATA.visit(CacheStatus.SAVE, map -> map.put(ft_face, new DashTrueTypeFont.FontPrams(location(), size(), skip()))); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java new file mode 100644 index 00000000..446fd3a6 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java @@ -0,0 +1,61 @@ +package dev.notalpha.dashloader.mixin.option.cache.model; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.model.ModelModule; +import net.minecraft.client.render.model.BakedModelManager; +import net.minecraft.client.render.model.ModelBaker; +import net.minecraft.client.render.model.UnbakedModel; +import net.minecraft.resource.Resource; +import net.minecraft.resource.ResourceFinder; +import net.minecraft.resource.ResourceManager; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.CompletionStage; + +@Mixin(value = BakedModelManager.class, priority = 69420) +public abstract class BakedModelManagerOverride { + @WrapOperation(method = "bake", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/model/ModelBaker;bake(Lnet/minecraft/client/render/model/ModelBaker$ErrorCollectingSpriteGetter;)Lnet/minecraft/client/render/model/ModelBaker$BakedModels;")) + private static ModelBaker.BakedModels yoinkBakedModels(ModelBaker instance, ModelBaker.ErrorCollectingSpriteGetter spriteGetter, Operation original) { + var bakedModels = original.call(instance, spriteGetter); +// ModelModule.ITEM_MODELS_SAVE.visit(CacheStatus.SAVE, map -> map.putAll(bakedModels.itemStackModels())); +// ModelModule.ITEM_PROPERTIES.visit(CacheStatus.SAVE, map -> map.putAll(bakedModels.itemProperties())); + ModelModule.BLOCK_MODELS_SAVE.visit(CacheStatus.SAVE, map -> map.putAll(bakedModels.blockStateModels())); + ModelModule.BAKED_MODEL_PARTS.visit(CacheStatus.SAVE, map -> map.putAll(instance.bakedModelCache)); + return bakedModels; + } + + @ModifyReturnValue(method = "method_45899", at = @At(value = "RETURN")) + private static CompletionStage injectModels(CompletionStage> original) { + var models = ModelModule.MODEL_PARTS.get(CacheStatus.LOAD); + if (models != null) { + return original.thenApply(unbakedModels -> { + if (!(unbakedModels instanceof HashMap)) { + unbakedModels = new HashMap<>(unbakedModels); + } + + unbakedModels.putAll(models); + return unbakedModels; + }); + } + return original; + } + + @WrapOperation(method = "method_62663", at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/ResourceFinder;findResources(Lnet/minecraft/resource/ResourceManager;)Ljava/util/Map;")) + private static Map loadMissingModels(ResourceFinder instance, ResourceManager resourceManager, Operation> original) { + var modelIds = ModelModule.MISSING_MODEL_PARTS.get(CacheStatus.LOAD); + if (modelIds != null) { + var out = new HashMap(modelIds.size()); + modelIds.forEach(id -> resourceManager.getResource(id).ifPresent(resource -> out.put(id, resource))); + return out; + } + + return original.call(instance, resourceManager); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java new file mode 100644 index 00000000..0fc766cd --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java @@ -0,0 +1,29 @@ +package dev.notalpha.dashloader.mixin.option.cache.model; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.model.ModelModule; +import net.minecraft.client.render.model.BlockStatesLoader; +import net.minecraft.resource.Resource; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import java.util.List; +import java.util.Map; + +@Mixin(BlockStatesLoader.class) +public abstract class BlockStatesLoaderMixin { + @ModifyReturnValue(method = "method_65719", at = @At("TAIL")) + private static BlockStatesLoader.BlockStateDefinition inject(BlockStatesLoader.BlockStateDefinition original) { + ModelModule.RAW_BLOCK_MODELS.visit(CacheStatus.SAVE, map -> map.putAll(original.models())); + ModelModule.BLOCK_MODELS.visit(CacheStatus.LOAD, original.models()::putAll); + return original; + } + + @ModifyReturnValue(method = "method_65717", at = @At("TAIL")) + private static Map> loadMissing(Map> original) { + ModelModule.MISSING_BLOCK_MODELS.visit(CacheStatus.LOAD, original.keySet()::retainAll); + return original; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java new file mode 100644 index 00000000..a18a1989 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java @@ -0,0 +1,24 @@ +package dev.notalpha.dashloader.mixin.option.cache.model; + +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.model.ModelModule; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.Baker; +import net.minecraft.client.render.model.MultipartUnbakedModel; +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; + +@Mixin(MultipartUnbakedModel.class) +public abstract class MultipartUnbakedModelMixin { + @Inject( + method = "bake", + at = @At(value = "RETURN") + ) + private void addPredicateInfo(Baker baker, CallbackInfoReturnable cir) { + ModelModule.UNBAKED_TO_BAKED_MULTIPART_MODELS.visit(CacheStatus.SAVE, map -> { + map.put(cir.getReturnValue(), (MultipartUnbakedModel) (Object) this); + }); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java new file mode 100644 index 00000000..02aa0bae --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java @@ -0,0 +1,32 @@ +package dev.notalpha.dashloader.mixin.option.cache.model; + +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.model.ModelModule; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.client.render.model.MultipartUnbakedModel; +import net.minecraft.client.render.model.json.MultipartModelComponent; +import net.minecraft.state.StateManager; +import org.apache.commons.lang3.tuple.Pair; +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; + +@Mixin(MultipartUnbakedModel.Serialized.class) +public abstract class MultipartUnbakedModelSerializedMixin { + @Shadow + @Final + private List selectors; + + @Inject(method = "toModel", at = @At(value = "RETURN")) + private void thing(StateManager stateManager, CallbackInfoReturnable cir) { + ModelModule.MULTIPART_PREDICATES.visit(CacheStatus.SAVE, map -> { + map.put(cir.getReturnValue(), Pair.of(selectors, stateManager)); + }); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java new file mode 100644 index 00000000..ece38c06 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java @@ -0,0 +1,68 @@ +package dev.notalpha.dashloader.mixin.option.cache.shader; + +import com.google.common.collect.ImmutableMap; +import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.sugar.Local; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.shader.ShaderModule; +import net.minecraft.client.gl.ShaderLoader; +import net.minecraft.client.gl.ShaderProgramDefinition; +import net.minecraft.resource.Resource; +import net.minecraft.resource.ResourceManager; +import net.minecraft.util.Identifier; +import net.minecraft.util.profiler.Profiler; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import java.util.Map; +import java.util.function.Predicate; + +@Mixin(ShaderLoader.class) +public abstract class ShaderLoaderMixin { + @WrapOperation( + method = "prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/resource/ResourceManager;findResources(Ljava/lang/String;Ljava/util/function/Predicate;)Ljava/util/Map;" + ) + ) + private Map skipCached(ResourceManager instance, String s, Predicate identifierPredicate, Operation> original, @Local(ordinal = 0) ImmutableMap.Builder builder, @Local(ordinal = 1) ImmutableMap.Builder builder2) { + var sources = ShaderModule.SHADER_SOURCES.get(CacheStatus.LOAD); + var definitions = ShaderModule.SHADER_DEFINITIONS.get(CacheStatus.LOAD); + if (sources != null && definitions != null) { + builder2.putAll(sources); + builder.putAll(definitions); + return Map.of(); + } + + return original.call(instance, s, identifierPredicate); + } + +// @WrapOperation( +// method = "prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;", +// at = @At( +// value = "INVOKE", +// target = "Lnet/minecraft/resource/ResourceFinder;findResources(Lnet/minecraft/resource/ResourceManager;)Ljava/util/Map;" +// ) +// ) +// private Map thing(ResourceFinder instance, ResourceManager resourceManager, Operation> original, @Local(ordinal = 2) ImmutableMap.Builder builder3) { +// var post = ShaderModule.POST_EFFECTS.get(CacheStatus.LOAD); +// if (post != null) { +// builder3.putAll(post); +// return Map.of(); +// } +// return original.call(instance, resourceManager); +// } + + @WrapMethod(method = "prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;") + private ShaderLoader.Definitions thing(ResourceManager resourceManager, Profiler profiler, Operation original) { + var og = original.call(resourceManager, profiler); + ShaderModule.SHADER_SOURCES.visit(CacheStatus.SAVE, map -> map.putAll(og.shaderSources())); + ShaderModule.SHADER_DEFINITIONS.visit(CacheStatus.SAVE, map -> map.putAll(og.programs())); +// ShaderModule.POST_EFFECTS.visit(CacheStatus.SAVE, map -> map.putAll(og.postChains())); + + return og; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java new file mode 100644 index 00000000..ffe04cd1 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java @@ -0,0 +1,53 @@ +package dev.notalpha.dashloader.mixin.option.cache.sprite.content; + +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.sprite.content.SpriteContentModule; +import dev.notalpha.dashloader.mixin.accessor.SpriteContentsAccessor; +import net.minecraft.client.texture.SpriteContents; +import net.minecraft.client.texture.SpriteOpener; +import net.minecraft.resource.Resource; +import net.minecraft.resource.metadata.ResourceMetadata; +import net.minecraft.resource.metadata.ResourceMetadataSerializer; +import net.minecraft.util.Identifier; +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; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import java.util.Collection; + +@Mixin(SpriteOpener.class) +public interface SpriteOpenerMixin { + @Inject( + method = "method_52851", + cancellable = true, + locals = LocalCapture.CAPTURE_FAILEXCEPTION, + at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/Resource;getInputStream()Ljava/io/InputStream;", shift = At.Shift.BEFORE) + ) + private static void dashloaderLoad(Collection> metadatas, Identifier id, Resource resource, CallbackInfoReturnable cir, ResourceMetadata resourceMetadata) { + var dashSpriteData = SpriteContentModule.SOURCE.get(CacheStatus.LOAD); + if (dashSpriteData != null) { + SpriteContents spriteContents = dashSpriteData.get(id); + if (spriteContents != null) { + ((SpriteContentsAccessor) spriteContents).setMetadata(resourceMetadata); + cir.setReturnValue(spriteContents); + } + } + } + + @Inject( + method = "method_52851", + at = @At(value = "RETURN") + ) + private static void dashloaderSave(Collection collection, Identifier id, Resource resource, CallbackInfoReturnable cir) { + var dashSpriteData = SpriteContentModule.SOURCE.get(CacheStatus.SAVE); + if (dashSpriteData != null) { + if (dashSpriteData.containsKey(id)) { // filter out sprites with the same id + dashSpriteData.put(id, null); + return; + } + dashSpriteData.put(id, cir.getReturnValue()); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java new file mode 100644 index 00000000..91b479f2 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java @@ -0,0 +1,54 @@ +package dev.notalpha.dashloader.mixin.option.cache.sprite.stitch; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import dev.notalpha.dashloader.api.cache.CacheStatus; +import dev.notalpha.dashloader.client.sprite.stitch.DashTextureStitcher; +import dev.notalpha.dashloader.client.sprite.stitch.SpriteStitcherModule; +import net.minecraft.client.texture.SpriteContents; +import net.minecraft.client.texture.SpriteLoader; +import net.minecraft.client.texture.TextureStitcher; +import net.minecraft.util.Identifier; +import org.apache.commons.lang3.tuple.Pair; +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 org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import java.util.List; +import java.util.concurrent.Executor; + +@Mixin(SpriteLoader.class) +public final class StitchSpriteLoaderMixin { + @Shadow + @Final + private Identifier id; + + @WrapOperation( + method = "stitch", + at = @At(value = "NEW", target = "(III)Lnet/minecraft/client/texture/TextureStitcher;") + ) + private TextureStitcher dashloaderStitcherLoad(int maxWidth, int maxHeight, int mipLevel, Operation> original) { + var map = SpriteStitcherModule.STITCHERS_LOAD.get(CacheStatus.LOAD); + if (map != null) { + var data = map.get(id); + if (data != null) { + return new DashTextureStitcher<>(maxWidth, maxHeight, mipLevel, data); + } + } + + return original.call(maxWidth, maxHeight, mipLevel); + } + + @Inject( + method = "stitch", + at = @At(value = "RETURN"), + locals = LocalCapture.CAPTURE_FAILSOFT + ) + private void dashloaderStitcherSave(List sprites, int mipLevel, Executor executor, CallbackInfoReturnable cir, int i, TextureStitcher textureStitcher) { + SpriteStitcherModule.STITCHERS_SAVE.visit(CacheStatus.SAVE, map -> map.add(Pair.of(id, textureStitcher))); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java new file mode 100644 index 00000000..d70ce5f3 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java @@ -0,0 +1,30 @@ +package dev.notalpha.dashloader.mixin.option.misc; + +import net.minecraft.util.math.AffineTransformation; +import org.joml.Matrix4f; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.Objects; + +@Mixin(value = AffineTransformation.class, priority = 999) +public class AffineTransformationMixin { + @Shadow + @Final + private Matrix4f matrix; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof AffineTransformationMixin that)) return false; + if (!super.equals(o)) return false; + + return Objects.equals(matrix, that.matrix); + } + + @Override + public int hashCode() { + return matrix.hashCode(); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/MipmapHelperMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/MipmapHelperMixin.java new file mode 100644 index 00000000..2d92f831 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/MipmapHelperMixin.java @@ -0,0 +1,29 @@ +package dev.notalpha.dashloader.mixin.option.misc; + +import dev.notalpha.dashloader.mixin.accessor.NativeImageAccessor; +import net.minecraft.client.texture.MipmapHelper; +import net.minecraft.client.texture.NativeImage; +import org.lwjgl.system.MemoryUtil; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(MipmapHelper.class) +public abstract class MipmapHelperMixin { + // not using wrapOperation because this is just replacing the call + @Redirect( + method = {"hasAlpha", "getMipmapLevelsImages"}, + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/NativeImage;getColorArgb(II)I") + ) + private static int getColor(NativeImage instance, int x, int y) { + return MemoryUtil.memGetInt(((NativeImageAccessor) (Object) instance).getPointer() + ((long) x + (long) y * (long) instance.getWidth()) * 4L); + } + + @Redirect( + method = "getMipmapLevelsImages", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/NativeImage;setColorArgb(III)V") + ) + private static void setColor(NativeImage instance, int x, int y, int color) { + MemoryUtil.memPutInt(((NativeImageAccessor) (Object) instance).getPointer() + ((long) x + (long) y * (long) instance.getWidth()) * 4L, color); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java new file mode 100644 index 00000000..3c49cbca --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java @@ -0,0 +1,39 @@ +package dev.notalpha.dashloader.mixin.option.misc; + +import net.minecraft.client.util.ModelIdentifier; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.Objects; + +@Mixin(value = ModelIdentifier.class, priority = 999) +public abstract class ModelIdentifierMixin { + @Shadow + @Final + private Identifier id; + @Shadow + @Final + private String variant; + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof ModelIdentifier that)) { + return false; + } + if (!this.id.equals(that.id())) { + return false; + } + + return Objects.equals(this.variant, that.getVariant()); + } + + @Override + public int hashCode() { + return 31 * id.hashCode() + variant.hashCode(); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/registry/FactoryBinding.java b/src/main/java/dev/notalpha/dashloader/registry/FactoryBinding.java new file mode 100644 index 00000000..7f8fbee2 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/registry/FactoryBinding.java @@ -0,0 +1,95 @@ +package dev.notalpha.dashloader.registry; + +import dev.notalpha.dashloader.DashObjectClass; +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import org.jetbrains.annotations.Nullable; + +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; +import java.util.function.Function; + +public final class FactoryBinding> { + private final MethodHandle method; + private final FactoryFunction creator; + + public FactoryBinding(MethodHandle method, FactoryFunction creator) { + this.method = method; + this.creator = creator; + } + + public static > FactoryBinding create(DashObjectClass dashObject) { + final Class dashClass = dashObject.getDashClass(); + + var factory = tryScanCreators((look, type) -> look.findConstructor(dashClass, type.changeReturnType(void.class)), dashObject); + if (factory == null) { + factory = tryScanCreators((look, type) -> look.findStatic(dashClass, "factory", type), dashObject); + } + if (factory == null) { + factory = tryScanCreators((look, type) -> look.findStatic(dashClass, "factory", type), dashObject); + } + + if (factory == null) { + throw new RuntimeException("Could not find a way to create " + dashClass.getSimpleName() + ". Create the method and/or check if it's accessible."); + } + + return factory; + } + + @Nullable + private static > FactoryBinding tryScanCreators(MethodTester tester, DashObjectClass dashObject) { + for (InvokeType value : InvokeType.values()) { + final Class[] apply = value.parameters.apply(dashObject); + + try { + var method = tester.getMethod( + MethodHandles.publicLookup(), + MethodType.methodType(dashObject.getTargetClass(), apply)); + + if (method != null) { + return new FactoryBinding<>(method, value.creator); + } + } catch (Throwable ignored) { + } + } + return null; + } + + public D create(R raw, RegistryWriter writer) { + try { + //noinspection unchecked + return (D) this.creator.create(this.method, raw, writer); + } catch (Throwable e) { + throw new RuntimeException("Could not create DashObject " + raw.getClass().getSimpleName(), e); + } + } + + // FULL object, writer + // WRITER writer + // RAW object + // EMPTY + private enum InvokeType { + FULL((methodHandle, args, args2) -> methodHandle.invoke(args, args2), doc -> new Class[]{doc.getTargetClass(), RegistryWriter.class}), + WRITER((mh, raw, writer) -> mh.invoke(writer), doc -> new Class[]{RegistryWriter.class}), + RAW((mh, raw, writer) -> mh.invoke(raw), doc -> new Class[]{doc.getTargetClass()}), + EMPTY((mh, raw, writer) -> mh.invoke(), doc -> new Class[0]); + private final FactoryFunction creator; + private final Function, Class[]> parameters; + + InvokeType(FactoryFunction creator, Function, Class[]> parameters) { + this.creator = creator; + this.parameters = parameters; + } + } + + @FunctionalInterface + private interface FactoryFunction { + Object create(MethodHandle method, Object raw, RegistryWriter writer) throws Throwable; + } + + @FunctionalInterface + private interface MethodTester { + MethodHandle getMethod(MethodHandles.Lookup lookup, MethodType parameters) throws Throwable; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/registry/MissingHandler.java b/src/main/java/dev/notalpha/dashloader/registry/MissingHandler.java new file mode 100644 index 00000000..08a423b7 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/registry/MissingHandler.java @@ -0,0 +1,16 @@ +package dev.notalpha.dashloader.registry; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryWriter; + +import java.util.function.BiFunction; + +public class MissingHandler { + public final Class parentClass; + public final BiFunction> func; + + public MissingHandler(Class parentClass, BiFunction> func) { + this.parentClass = parentClass; + this.func = func; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/registry/RegistryReaderImpl.java b/src/main/java/dev/notalpha/dashloader/registry/RegistryReaderImpl.java new file mode 100644 index 00000000..0f875454 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/registry/RegistryReaderImpl.java @@ -0,0 +1,44 @@ +package dev.notalpha.dashloader.registry; + +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.io.data.CacheInfo; +import dev.notalpha.dashloader.registry.data.StageData; +import dev.notalpha.taski.Task; +import dev.notalpha.taski.builtin.StepTask; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Consumer; + +@SuppressWarnings("FinalMethodInFinalClass") +public final class RegistryReaderImpl implements RegistryReader { + private final StageData[] chunkData; + // Holds an array of the exported dataChunks array values. + private final Object[][] data; + + public RegistryReaderImpl(CacheInfo metadata, StageData[] data) { + this.chunkData = data; + this.data = new Object[metadata.chunks.size()][]; + for (int i = 0; i < metadata.chunks.size(); i++) { + this.data[i] = new Object[metadata.chunks.get(i).size]; + } + } + + public final void export(@Nullable Consumer taskConsumer) { + StepTask task = new StepTask("Exporting", Integer.max(this.chunkData.length, 1)); + if (taskConsumer != null) { + taskConsumer.accept(task); + } + + for (StageData chunkData : chunkData) { + chunkData.preExport(this); + chunkData.export(data, this); + chunkData.postExport(this); + } + } + + @SuppressWarnings("unchecked") + public final R get(final int pointer) { + // inlining go brrr + return (R) this.data[pointer & 0x3f][pointer >>> 6]; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/registry/RegistryWriterImpl.java b/src/main/java/dev/notalpha/dashloader/registry/RegistryWriterImpl.java new file mode 100644 index 00000000..6a4ab300 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/registry/RegistryWriterImpl.java @@ -0,0 +1,180 @@ +package dev.notalpha.dashloader.registry; + +import dev.notalpha.dashloader.DashObjectClass; +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryAddException; +import dev.notalpha.dashloader.api.registry.RegistryUtil; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.registry.data.ChunkData; +import dev.notalpha.dashloader.registry.data.ChunkFactory; +import dev.notalpha.dashloader.registry.data.StageData; +import it.unimi.dsi.fastutil.objects.Object2ByteMap; +import it.unimi.dsi.fastutil.objects.Object2ByteOpenHashMap; + +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.IdentityHashMap; +import java.util.List; + +public final class RegistryWriterImpl implements RegistryWriter { + public final ChunkFactory[] chunks; + private final IdentityHashMap dedup = new IdentityHashMap<>(); + private final Object2ByteMap> target2chunkMappings; + private final Object2ByteMap> dash2chunkMappings; + private final List> missingHandlers; + + private RegistryWriterImpl(ChunkFactory[] chunks, List> missingHandlers) { + this.target2chunkMappings = new Object2ByteOpenHashMap<>(); + this.target2chunkMappings.defaultReturnValue((byte) -1); + + this.dash2chunkMappings = new Object2ByteOpenHashMap<>(); + this.dash2chunkMappings.defaultReturnValue((byte) -1); + + this.missingHandlers = missingHandlers; + this.chunks = chunks; + } + + public static > RegistryWriterImpl create(List> missingHandlers, List> dashObjects) { + if (dashObjects.size() > 63) { + throw new RuntimeException("Hit group limit of 63. Please contact notalpha if you hit this limit!"); + } + + //noinspection unchecked + ChunkFactory[] chunks = new ChunkFactory[dashObjects.size()]; + RegistryWriterImpl writer = new RegistryWriterImpl(chunks, missingHandlers); + + for (int i = 0; i < dashObjects.size(); i++) { + final DashObjectClass dashObject = (DashObjectClass) dashObjects.get(i); + + var dashClass = dashObject.getDashClass(); + var targetClass = dashObject.getTargetClass(); + byte old = writer.target2chunkMappings.put(targetClass, (byte) i); + if (old != -1) { + DashObjectClass conflicting = dashObjects.get(old); + throw new IllegalStateException("DashObjects \"" + dashObject.getDashClass() + "\" and \"" + conflicting.getDashClass() + "\" have the same target class \"" + targetClass + "\"."); + } + + writer.dash2chunkMappings.put(dashClass, (byte) i); + var factory = FactoryBinding.create(dashObject); + var name = dashClass.getSimpleName(); + chunks[i] = new ChunkFactory<>((byte) i, name, factory, dashObject); + } + + return writer; + } + + public int add(R object) { + return this.addObject(object); + } + + @SuppressWarnings("unchecked") + private > int addObject(R object) { + if (this.dedup.containsKey(object)) { + return this.dedup.get(object); + } + + if (object == null) { + throw new NullPointerException("Registry add argument is null"); + } + + var targetClass = object.getClass(); + Integer pointer = null; + // If we have a dashObject supporting the target we create using its factory constructor + { + byte chunkPos = this.target2chunkMappings.getByte(targetClass); + if (chunkPos != -1) { + var chunk = (ChunkFactory) this.chunks[chunkPos]; + var entry = TrackingRegistryWriterImpl.create(this, writer -> chunk.create(object, writer)); + pointer = chunk.add(entry, this); + } + } + + // If we cannot find a target matching we go through the missing handlers + if (pointer == null) { + for (MissingHandler missingHandler : this.missingHandlers) { + if (missingHandler.parentClass.isAssignableFrom(targetClass)) { + var entry = TrackingRegistryWriterImpl.create(this, writer -> (D) missingHandler.func.apply(object, writer)); + if (entry.data != null) { + var dashClass = entry.data.getClass(); + byte chunkPos = this.dash2chunkMappings.getByte(dashClass); + if (chunkPos == -1) { + throw new RuntimeException("Could not find a ChunkWriter for DashClass " + dashClass); + } + var chunk = (ChunkFactory) this.chunks[chunkPos]; + pointer = chunk.add(entry, this); + break; + } + } + } + } + + if (pointer == null) { + throw new RegistryAddException(targetClass, object); + } + + ((IdentityHashMap) this.dedup).put(object, pointer); + return pointer; + } + + public ChunkFactory.Entry get(int id) { + return (ChunkFactory.Entry) this.chunks[RegistryUtil.getChunkId(id)].list.get(RegistryUtil.getObjectId(id)); + } + + public StageData[] export() { + // Create a queue with the elements with no references + var exposedQueue = new ArrayDeque>(); + for (ChunkFactory chunk : chunks) { + for (ChunkFactory.Entry entry : chunk.list) { + if (entry.references == 0) { + entry.stage = 0; + exposedQueue.offer(entry); + } + } + } + + // This sets the correct stage for every element + int stages = 1; + // Go through the exposed nodes (ones without edges) + while (!exposedQueue.isEmpty()) { + // Remove the element from the exposed queue. + var element = exposedQueue.poll(); + for (var dependencyId : element.dependencies) { + // Make dependencies a stage above + ChunkFactory.Entry dependency = get(dependencyId); + if (dependency.stage <= element.stage) { + dependency.stage = element.stage + 1; + if (dependency.stage >= stages) { + stages = dependency.stage + 1; + } + } + // Remove the edge, if the dependency no longer has references, add it to the queue. + if (--dependency.references == 0) { + exposedQueue.offer(dependency); + } + } + } + + // Create the output + StageData[] out = new StageData[stages]; + for (int i = 0; i < stages; i++) { + ChunkData[] chunksOut = new ChunkData[this.chunks.length]; + + for (int j = 0; j < this.chunks.length; j++) { + ChunkFactory chunk = this.chunks[j]; + List> dashablesOut = new ArrayList<>(); + for (int k = 0; k < chunk.list.size(); k++) { + ChunkFactory.Entry entry = chunk.list.get(k); + if (entry.stage == i) { + dashablesOut.add(new ChunkData.Entry<>(entry.data, k)); + } + } + + chunksOut[j] = new ChunkData<>(chunk.chunkId, chunk.name, chunk.dashObject, dashablesOut.toArray(ChunkData.Entry[]::new)); + } + + out[stages - (i + 1)] = new StageData(chunksOut); + } + + return out; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/registry/TrackingRegistryWriterImpl.java b/src/main/java/dev/notalpha/dashloader/registry/TrackingRegistryWriterImpl.java new file mode 100644 index 00000000..14030488 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/registry/TrackingRegistryWriterImpl.java @@ -0,0 +1,35 @@ +package dev.notalpha.dashloader.registry; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.registry.data.ChunkFactory; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntList; + +import java.util.function.Function; + +/** + * The Writers job is to allow dashObject to add dependencies by adding them to the registry and allowing parallelization. + * The logic is actually in RegistryFactory, but we need to be able to track what added what so the writer gets issued on the invocation of the creator. + */ +public final class TrackingRegistryWriterImpl implements RegistryWriter { + private final RegistryWriterImpl factory; + private final IntList dependencies = new IntArrayList(); + + private TrackingRegistryWriterImpl(RegistryWriterImpl factory) { + this.factory = factory; + } + + static > ChunkFactory.Entry create(RegistryWriterImpl factory, Function function) { + TrackingRegistryWriterImpl writer = new TrackingRegistryWriterImpl(factory); + D data = function.apply(writer); + int[] dependencies = writer.dependencies.toIntArray(); + return new ChunkFactory.Entry<>(data, dependencies); + } + + public int add(R object) { + int value = factory.add(object); + dependencies.add(value); + return value; + } +} diff --git a/src/main/java/dev/notalpha/dashloader/registry/data/ChunkData.java b/src/main/java/dev/notalpha/dashloader/registry/data/ChunkData.java new file mode 100644 index 00000000..fbe05aa5 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/registry/data/ChunkData.java @@ -0,0 +1,50 @@ +package dev.notalpha.dashloader.registry.data; + +import dev.notalpha.dashloader.DashObjectClass; +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.thread.ThreadHandler; + +public class ChunkData> { + public final byte chunkId; + public final String name; + public final DashObjectClass dashObject; + public final Entry[] dashables; + + public ChunkData(byte chunkId, String name, DashObjectClass dashObject, Entry[] dashables) { + this.chunkId = chunkId; + this.name = name; + this.dashObject = dashObject; + this.dashables = dashables; + } + + public void preExport(RegistryReader reader) { + for (Entry entry : this.dashables) { + entry.data.preExport(reader); + } + } + + public void export(Object[] data, RegistryReader registry) { + ThreadHandler.INSTANCE.parallelExport(this.dashables, data, registry); + } + + public void postExport(RegistryReader reader) { + for (Entry entry : this.dashables) { + entry.data.postExport(reader); + } + } + + public int getSize() { + return this.dashables.length; + } + + public static final class Entry { + public final D data; + public final int pos; + + public Entry(D data, int pos) { + this.data = data; + this.pos = pos; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/registry/data/ChunkFactory.java b/src/main/java/dev/notalpha/dashloader/registry/data/ChunkFactory.java new file mode 100644 index 00000000..dd712d55 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/registry/data/ChunkFactory.java @@ -0,0 +1,67 @@ +package dev.notalpha.dashloader.registry.data; + +import dev.notalpha.dashloader.DashObjectClass; +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryUtil; +import dev.notalpha.dashloader.api.registry.RegistryWriter; +import dev.notalpha.dashloader.registry.FactoryBinding; +import dev.notalpha.dashloader.registry.RegistryWriterImpl; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; + +import java.util.ArrayList; +import java.util.List; + +public class ChunkFactory> { + public final byte chunkId; + public final String name; + public final DashObjectClass dashObject; + public final List> list = new ArrayList<>(); + public final Object2IntMap deduplication = new Object2IntOpenHashMap<>(); + private final FactoryBinding factory; + + public ChunkFactory(byte chunkId, String name, FactoryBinding factory, DashObjectClass dashObject) { + this.chunkId = chunkId; + this.name = name; + this.factory = factory; + this.dashObject = dashObject; + } + + public D create(R raw, RegistryWriter writer) { + return this.factory.create(raw, writer); + } + + public int add(Entry entry, RegistryWriterImpl factory) { + int existing = deduplication.getOrDefault(entry.data, -1); + if (existing != -1) { + return RegistryUtil.createId(existing, chunkId); + } + + final int pos = this.list.size(); + this.list.add(entry); + + // Add to deduplication + deduplication.put(entry.data, pos); + + // Increment dependencies + for (int dependency : entry.dependencies) { + ChunkFactory chunk = factory.chunks[RegistryUtil.getChunkId(dependency)]; + ChunkFactory.Entry dependencyEntry = chunk.list.get(RegistryUtil.getObjectId(dependency)); + dependencyEntry.references++; + } + + return RegistryUtil.createId(pos, chunkId); + } + + public static final class Entry { + public final D data; + public final int[] dependencies; + public int references = 0; + public int stage = -1; + + public Entry(D data, int[] dependencies) { + this.data = data; + this.dependencies = dependencies; + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/registry/data/StageData.java b/src/main/java/dev/notalpha/dashloader/registry/data/StageData.java new file mode 100644 index 00000000..bdc40d51 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/registry/data/StageData.java @@ -0,0 +1,30 @@ +package dev.notalpha.dashloader.registry.data; + +import dev.notalpha.dashloader.api.registry.RegistryReader; + +public class StageData { + public final ChunkData[] chunks; + + public StageData(ChunkData[] chunks) { + this.chunks = chunks; + } + + public void preExport(RegistryReader reader) { + for (ChunkData chunk : chunks) { + chunk.preExport(reader); + } + } + + public void export(Object[][] data, RegistryReader registry) { + for (int i = 0; i < chunks.length; i++) { + ChunkData chunk = chunks[i]; + chunk.export(data[i], registry); + } + } + + public void postExport(RegistryReader reader) { + for (ChunkData chunk : chunks) { + chunk.postExport(reader); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/thread/IndexedArrayMapTask.java b/src/main/java/dev/notalpha/dashloader/thread/IndexedArrayMapTask.java new file mode 100644 index 00000000..70311194 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/thread/IndexedArrayMapTask.java @@ -0,0 +1,48 @@ +package dev.notalpha.dashloader.thread; + +import dev.notalpha.dashloader.registry.data.ChunkData; + +import java.util.concurrent.RecursiveAction; +import java.util.function.Function; + +public final class IndexedArrayMapTask extends RecursiveAction { + private final int threshold; + private final int start; + private final int stop; + private final ChunkData.Entry[] inArray; + private final O[] outArray; + private final Function function; + + private IndexedArrayMapTask(ChunkData.Entry[] inArray, O[] outArray, Function function, int threshold, int start, int stop) { + this.threshold = threshold; + this.start = start; + this.stop = stop; + this.inArray = inArray; + this.outArray = outArray; + this.function = function; + } + + public IndexedArrayMapTask(ChunkData.Entry[] inArray, O[] outArray, Function function) { + this.start = 0; + this.stop = inArray.length; + this.threshold = ThreadHandler.calcThreshold(this.stop); + this.inArray = inArray; + this.outArray = outArray; + this.function = function; + } + + @Override + protected void compute() { + final int size = this.stop - this.start; + if (size < this.threshold) { + for (int i = this.start; i < this.stop; i++) { + var entry = this.inArray[i]; + this.outArray[entry.pos] = this.function.apply(entry.data); + } + } else { + final int middle = this.start + (size / 2); + invokeAll(new IndexedArrayMapTask<>(this.inArray, this.outArray, this.function, this.threshold, this.start, middle), + new IndexedArrayMapTask<>(this.inArray, this.outArray, this.function, this.threshold, middle, this.stop)); + } + } +} diff --git a/src/main/java/dev/notalpha/dashloader/thread/ThreadHandler.java b/src/main/java/dev/notalpha/dashloader/thread/ThreadHandler.java new file mode 100644 index 00000000..f0504447 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/thread/ThreadHandler.java @@ -0,0 +1,78 @@ +package dev.notalpha.dashloader.thread; + +import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.registry.RegistryReader; +import dev.notalpha.dashloader.registry.data.ChunkData; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.IntFunction; + +public final class ThreadHandler { + public static final int THREADS = Runtime.getRuntime().availableProcessors(); + public static final ThreadHandler INSTANCE = new ThreadHandler(); + private final ForkJoinPool threadPool = new ForkJoinPool(THREADS, new ForkJoinPool.ForkJoinWorkerThreadFactory() { + private final AtomicInteger threadNumber = new AtomicInteger(0); + + @Override + public ForkJoinWorkerThread newThread(ForkJoinPool pool) { + final ForkJoinWorkerThread dashThread = ForkJoinPool.defaultForkJoinWorkerThreadFactory.newThread(pool); + dashThread.setDaemon(true); + dashThread.setName("dlc-thread-" + this.threadNumber.getAndIncrement()); + return dashThread; + } + }, null, true); + + private ThreadHandler() { + } + + public static int calcThreshold(final int tasks) { + return Math.max(tasks / (THREADS * 8), 4); + } + + // Fork Join Methods + public > void parallelExport(ChunkData.Entry[] in, R[] out, RegistryReader reader) { + this.threadPool.invoke(new IndexedArrayMapTask<>(in, out, d -> d.export(reader))); + } + + // Basic Methods + public void parallelRunnable(Runnable... runnables) { + this.parallelRunnable(List.of(runnables)); + } + + public void parallelRunnable(Collection runnables) { + for (Future future : this.threadPool.invokeAll(runnables.stream().map(Executors::callable).toList())) { + this.acquire(future); + } + } + + @SafeVarargs + public final O[] parallelCallable(IntFunction creator, Callable... callables) { + O[] out = creator.apply(callables.length); + var futures = this.threadPool.invokeAll(List.of(callables)); + for (int i = 0, futuresSize = futures.size(); i < futuresSize; i++) { + out[i] = (this.acquire(futures.get(i))); + } + return out; + } + + public Collection parallelCallable(Collection> callables) { + List out = new ArrayList<>(); + var futures = this.threadPool.invokeAll(callables); + for (Future future : futures) { + out.add(this.acquire(future)); + } + return out; + } + + private O acquire(Future future) { + try { + return future.get(); + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/resources/dashloader.accesswidener b/src/main/resources/dashloader.accesswidener new file mode 100644 index 00000000..f20367e9 --- /dev/null +++ b/src/main/resources/dashloader.accesswidener @@ -0,0 +1,52 @@ +accessWidener v1 named +accessible class net/minecraft/client/texture/SpriteContents$Interpolation +accessible class net/minecraft/client/texture/SpriteContents$Animation +accessible class net/minecraft/client/texture/SpriteContents$AnimationFrame +accessible class net/minecraft/client/particle/ParticleManager$SimpleSpriteProvider +accessible class net/minecraft/client/font/BitmapFont$BitmapFontGlyph +accessible class net/minecraft/client/render/model/BakedModelManager$BakingResult +accessible class net/minecraft/client/render/model/ModelBaker$BakedModelCacheKey +accessible class net/minecraft/client/render/model/ModelBaker$BakerImpl +accessible class net/minecraft/client/render/model/MultipartUnbakedModel$Selector +accessible class net/minecraft/client/font/TrueTypeFont$LazyGlyph +accessible class net/minecraft/client/font/UnihexFont$UnicodeTextureGlyph +accessible class net/minecraft/client/font/UnihexFont$FontImage16x16 +accessible class net/minecraft/client/font/UnihexFont$FontImage8x16 +accessible class net/minecraft/client/font/UnihexFont$FontImage32x16 +accessible class net/minecraft/client/font/FontStorage$GlyphPair +accessible class net/minecraft/client/font/FontManager$ProviderIndex +accessible class net/minecraft/client/gl/ShaderLoader$Cache +accessible class net/minecraft/client/gl/ShaderLoader$ShaderSourceKey +accessible field net/minecraft/client/gui/DrawContext vertexConsumers Lnet/minecraft/client/render/VertexConsumerProvider$Immediate; +accessible class net/minecraft/resource/ZipResourcePack$ZipFileWrapper +accessible class net/minecraft/client/MinecraftClient$LoadingContext +accessible field net/minecraft/client/gl/ShaderLoader$Cache shaderPrograms Ljava/util/Map; +accessible field net/minecraft/client/render/model/json/ModelTransformation thirdPersonLeftHand Lnet/minecraft/client/render/model/json/Transformation; +accessible field net/minecraft/client/render/model/json/ModelTransformation thirdPersonRightHand Lnet/minecraft/client/render/model/json/Transformation; +accessible field net/minecraft/client/render/model/json/ModelTransformation firstPersonLeftHand Lnet/minecraft/client/render/model/json/Transformation; +accessible field net/minecraft/client/render/model/json/ModelTransformation firstPersonRightHand Lnet/minecraft/client/render/model/json/Transformation; +accessible field net/minecraft/client/render/model/json/ModelTransformation head Lnet/minecraft/client/render/model/json/Transformation; +accessible field net/minecraft/client/render/model/json/ModelTransformation gui Lnet/minecraft/client/render/model/json/Transformation; +accessible field net/minecraft/client/render/model/json/ModelTransformation ground Lnet/minecraft/client/render/model/json/Transformation; +accessible field net/minecraft/client/render/model/json/ModelTransformation fixed Lnet/minecraft/client/render/model/json/Transformation; +accessible field net/minecraft/client/render/model/ModelBaker bakedModelCache Ljava/util/Map; +accessible field net/minecraft/client/render/model/WrapperBakedModel wrapped Lnet/minecraft/client/render/model/BakedModel; +accessible method net/minecraft/client/font/TrueTypeFont$LazyGlyph (I)V +accessible method net/minecraft/client/font/UnihexFont$FontImage8x16 ([B)V +accessible method net/minecraft/client/font/UnihexFont$FontImage16x16 ([S)V +accessible method net/minecraft/client/font/UnihexFont$FontImage32x16 ([II)V +accessible method net/minecraft/client/font/UnihexFont$UnicodeTextureGlyph (Lnet/minecraft/client/font/UnihexFont$BitmapGlyph;II)V +accessible method net/minecraft/client/gl/ShaderLoader$ShaderSourceKey (Lnet/minecraft/util/Identifier;Lnet/minecraft/client/gl/CompiledShader$Type;)V +mutable field net/minecraft/client/gl/ShaderProgram modelViewMat Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram projectionMat Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram textureMat Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram screenSize Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram colorModulator Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram light0Direction Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram light1Direction Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram fogStart Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram fogEnd Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram fogColor Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram fogShape Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram lineWidth Lnet/minecraft/client/gl/GlUniform; +mutable field net/minecraft/client/gl/ShaderProgram gameTime Lnet/minecraft/client/gl/GlUniform; diff --git a/src/main/resources/dashloader.mixins.json b/src/main/resources/dashloader.mixins.json new file mode 100644 index 00000000..0dc4f11b --- /dev/null +++ b/src/main/resources/dashloader.mixins.json @@ -0,0 +1,58 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "dev.notalpha.dashloader.mixin", + "plugin": "dev.notalpha.dashloader.mixin.MixinPlugin", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "accessor.AndMultipartModelSelectorAccessor", + "accessor.BasicBakedModelAccessor", + "accessor.BitmapFontAccessor", + "accessor.BitmapFontGlyphAccessor", + "accessor.FilterMapAccessor", + "accessor.FontManagerProviderIndexAccessor", + "accessor.GlUniformAccessor", + "accessor.IdentifierAccessor", + "accessor.ModelLoaderAccessor", + "accessor.MultipartBakedModelAccessor", + "accessor.MultipartModelComponentAccessor", + "accessor.NativeImageAccessor", + "accessor.OrMultipartModelSelectorAccessor", + "accessor.ShaderProgramAccessor", + "accessor.SimpleMultipartModelSelectorAccessor", + "accessor.SpriteAnimationAccessor", + "accessor.SpriteAnimationFrameAccessor", + "accessor.TrueTypeFontAccessor", + "accessor.UnihexFontAccessor", + "accessor.WeightedBakedModelAccessor", + "accessor.ZipResourcePackAccessor", + "accessor.ZipWrapperResourcePackAccessor", + "main.BootstrapMixin", + "main.KeyboardMixin", + "main.MainMixin", + "main.MinecraftClientMixin", + "main.ReloadableResourceManagerImplMixin", + "main.SplashScreenMixin", + "option.WallBlockMixin", + "option.cache.SplashTextResourceSupplierMixin", + "option.cache.font.FontManagerOverride", + "option.cache.font.TrueTypeFontLoaderMixin", + "option.cache.model.BakedModelManagerOverride", + "option.cache.model.MultipartUnbakedModelMixin", + "option.cache.sprite.stitch.StitchSpriteLoaderMixin", + "option.misc.AffineTransformationMixin", + "option.misc.ModelIdentifierMixin" + ], + "injectors": { + "defaultRequire": 1 + }, + "client": [ + "accessor.SpriteContentsAccessor", + "option.cache.SpriteAtlasTextureMixin", + "option.cache.model.BlockStatesLoaderMixin", + "option.cache.model.MultipartUnbakedModelSerializedMixin", + "option.cache.shader.ShaderLoaderMixin", + "option.cache.sprite.content.SpriteOpenerMixin", + "option.misc.MipmapHelperMixin" + ] +} diff --git a/src/main/resources/dashloader/lang/en_us.json b/src/main/resources/dashloader/lang/en_us.json new file mode 100644 index 00000000..1e0fb2a8 --- /dev/null +++ b/src/main/resources/dashloader/lang/en_us.json @@ -0,0 +1,41 @@ +{ + "config.CACHE_ATLASES": "Atlas Cache", + "config.CACHE_ATLASES.tooltip": "Caches stitched atlases, significantly reducing GPU upload time", + "config.CACHE_FONT": "Font Cache", + "config.CACHE_FONT.tooltip": "Caches fonts and their images", + "config.CACHE_MODEL_LOADER": "Model Loader Cache", + "config.CACHE_MODEL_LOADER.tooltip": "Caches BakedModels allowing the game to load extremely fast", + "config.CACHE_SHADER": "Shader Cache", + "config.CACHE_SPLASH_TEXT": "Splash Text Cache", + "config.CACHE_SPLASH_TEXT.tooltip": "Caches the splash texts from the main screen", + "config.CACHE_SPRITE_CONTENT": "Sprite Content Cache", + "config.CACHE_SPRITE_STITCHING": "Sprite Stitching Cache", + "config.CACHE_SPRITE_STITCHING.tooltip": "Caches sprite stitching", + "config.FAST_MODEL_IDENTIFIER_EQUALS": "Fast Equals Check", + "config.FAST_MODEL_IDENTIFIER_EQUALS.tooltip": "Use a much faster equals check for ModelIdentifiers", + "config.FAST_WALL_BLOCK": "Fast Wall Blockstates", + "config.FAST_WALL_BLOCK.tooltip": "Caches the two most common blockstates for wall blocks", + "config.UNSAFE_MIPMAP_GENERATION": "Unsafe Mipmap generation", + "config.UNSAFE_MIPMAP_GENERATION.tooltip": "Skips redundant safety checks when generating mipmaps", + "config.caching_toast": "Show Caching Toast", + "config.category.behaviour": "Behavior", + "config.category.features": "Features (restart required)", + "config.category.visuals": "Visuals", + "config.compression": "Compression Level", + "config.compression.tooltip": "The level of compression to use when saving the cache", + "config.custom_splashes": "Custom Splashes", + "config.custom_splashes.tooltip": "Use ; to separate lines and ;; for a semicolon", + "config.default_splashes": "Add Default Splashes", + "config.max_caches": "Max Caches", + "config.single_threaded_reading": "Single Threaded Reading", + "config.title": "Dashloader Config", + "debug": "Debug Mode is active in config.", + "save": "Initializing", + "save.cache": "Caching", + "save.cache.image": "Caching images", + "save.cache.misc": "Caching miscellaneous", + "save.cache.model": "Caching models", + "save.serialize": "Serializing", + "save.serialize.fragment": "Serializing fragments", + "save.serialize.mapping": "Serializing mappings" +} diff --git a/src/main/resources/dashloader/lang/lol_us.json b/src/main/resources/dashloader/lang/lol_us.json new file mode 100644 index 00000000..1e7e32b2 --- /dev/null +++ b/src/main/resources/dashloader/lang/lol_us.json @@ -0,0 +1,35 @@ +{ + "config.CACHE_ATLASES": "Atlas Cache", + "config.CACHE_FONT": "Font Cache", + "config.CACHE_MODEL_LOADER": "Model Loader Cache", + "config.CACHE_MODEL_LOADER.tooltip": "Caches BakedModels allowing the game to load extremely fast", + "config.CACHE_SHADER": "Shader Cache", + "config.CACHE_SPLASH_TEXT": "Splash Text Cache", + "config.CACHE_SPRITE_CONTENT": "Sprite Cache", + "config.CACHE_SPRITE_STITCHING": "Sprite Stitching Cache", + "config.FAST_MODEL_IDENTIFIER_EQUALS": "Fast Equals Check", + "config.FAST_MODEL_IDENTIFIER_EQUALS.tooltip": "Use a much faster equals check for ModelIdentifiers", + "config.FAST_WALL_BLOCK": "Fast Wall Blockstates", + "config.FAST_WALL_BLOCK.tooltip": "Caches the 2 most common blockstates for wall blocks", + "config.caching_toast": "Show Caching Toast", + "config.category.behaviour": "Behavior", + "config.category.features": "Features", + "config.category.visuals": "Visuals", + "config.compression": "Compression Level", + "config.compression.tooltip": "The level of compression to use when saving the cache", + "config.custom_splashes": "Custom Splashes", + "config.custom_splashes.tooltip": "Use ; to separate lines and ;; for a semicolon", + "config.default_splashes": "Add Default Splashes", + "config.max_caches": "Max Caches", + "config.single_threaded_reading": "Single Threaded Reading", + "config.title": "Dashloader Config", + "debug": "eyo debug is on! Check the cribby config.", + "save": "wakin up!", + "save.cache": "owoifying", + "save.cache.model": "uwufying anime", + "save.cache.image": "saving anime", + "save.cache.misc": "savin' stuff", + "save.serialize": "sending dms", + "save.serialize.fragment": "sending hot sha256 keys", + "save.serialize.mapping": "sending private key" +} diff --git a/src/main/resources/dashloader/lang/sv_se.json b/src/main/resources/dashloader/lang/sv_se.json new file mode 100644 index 00000000..cf2da4a0 --- /dev/null +++ b/src/main/resources/dashloader/lang/sv_se.json @@ -0,0 +1,11 @@ +{ + "debug": "Debug läge är pÃ¥ i konfigurations filen.", + "save": "PÃ¥börjar", + "save.cache": "Laddar", + "save.cache.model": "Laddar modeler", + "save.cache.image": "Laddar bilder", + "save.cache.misc": "Laddar blandat", + "save.serialize": "Sparar", + "save.serialize.fragment": "Sparar fragment", + "save.serialize.mapping": "Sparar mappningar" +} \ No newline at end of file diff --git a/src/main/resources/dashloader/textures/icon.png b/src/main/resources/dashloader/textures/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5f8fc5f83d46ff6d5a739a94be0e4d86e53ec5d6 GIT binary patch literal 18600 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 (-jmicAB8X3EDp^o|{IMLnh(D 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∈4HgYwx)#=>0Z^);fB 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 N13lvlW#^p2{|_Z5?N|T+ literal 0 HcmV?d00001 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 00000000..a837d8dd --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,47 @@ +{ + "schemaVersion": 1, + "id": "dashloader", + "version": "${version}", + "name": "DashLoader", + "description": "Launch at the speed of Light.", + "authors": [ + "!alpha", + "bendy1234", + "leocth" + ], + "contact": { + "homepage": "https://discord.gg/VeFTrtCkrb", + "sources": "https://github.com/QuantumFusionMC/DashLoader-Definition" + }, + "entrypoints": { + "dashloader": [ + "dev.notalpha.dashloader.client.DashLoaderClient" + ], + "modmenu": [ + "dev.notalpha.dashloader.client.ModMenuCompat" + ] + }, + "license": "LGPL-3.0-only", + "icon": "dashloader/textures/icon.png", + "environment": "client", + "accessWidener": "dashloader.accesswidener", + "mixins": [ + "dashloader.mixins.json" + ], + "depends": { + "fabricloader": ">=0.11.3", + "minecraft": "1.21.4", + "java": ">=21" + }, + "custom": { + "dashloader:disableoption": [ + ], + "sodium:options": { + "mixin.features.shader.uniform": false + } + }, + "breaks": { + "sodium": "<=0.1.0", + "fabric-api": "<0.81.0" + } +} From 405b0979b96820940c11ae6fedb43ae870dcba84 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 16:51:32 +0000 Subject: [PATCH 03/14] Migrate source from YARN 1.21.4 to Mojang mappings for MC 1.21.10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Systematically migrate all Java source files and the access widener: Import/package renames: - net.minecraft.client.MinecraftClient → net.minecraft.client.Minecraft - net.minecraft.util.Identifier → net.minecraft.resources.ResourceLocation - net.minecraft.client.texture.* → net.minecraft.client.renderer.texture.* (NativeImage exception: → com.mojang.blaze3d.platform.NativeImage) - net.minecraft.client.render.model.* → net.minecraft.client.renderer.block.model.* - net.minecraft.client.render.model.json.* → net.minecraft.client.renderer.block.model.* - net.minecraft.client.font.* → net.minecraft.client.gui.font.* - net.minecraft.client.render.RenderLayer → net.minecraft.client.renderer.RenderType - net.minecraft.client.render.VertexConsumer → com.mojang.blaze3d.vertex.VertexConsumer - net.minecraft.resource.* → net.minecraft.server.packs.resources.* - net.minecraft.client.gui.screen.* → net.minecraft.client.gui.screens.* - net.minecraft.client.toast.* → net.minecraft.client.gui.components.toasts.* - net.minecraft.client.gui.widget.* → net.minecraft.client.gui.components.* - net.minecraft.util.math.* → net.minecraft.core.* / net.minecraft.util.* - net.minecraft.block.* → net.minecraft.world.level.block.* - net.minecraft.state.* → net.minecraft.world.level.block.state.* - net.minecraft.text.Text → net.minecraft.network.chat.Component - net.minecraft.Bootstrap → net.minecraft.server.Bootstrap - net.minecraft.registry.Registries → net.minecraft.core.registries.BuiltInRegistries - net.minecraft.util.math.AffineTransformation → com.mojang.math.Transformation Class name renames: - MinecraftClient → Minecraft, Identifier → ResourceLocation - Sprite → TextureAtlasSprite, BasicBakedModel → SimpleBakedModel - ModelTransformation → ItemTransforms, Transformation → ItemTransform - MultipartBakedModel → MultiPartBakedModel, MipmapHelper → MipmapGenerator - ModelIdentifier → ModelResourceLocation, TextureStitcher → Stitcher - DrawContext → GuiGraphics, SplashOverlay → SplashScreen - ToastManager → ToastComponent, ButtonWidget → Button, TextWidget → StringWidget - WallShape → WallSide, StateManager → StateDefinition, MathHelper → Mth - Text → Component, Waterloggable → SimpleWaterloggedBlock - ZipResourcePack → FilePackResources, Profiler → ProfilerFiller - ResourceFinder → ResourceProvider, Random (MC) → RandomSource - SpriteGetter → Function (TODO: verify) - AffineTransformation → Transformation (com.mojang.math) - Registries → BuiltInRegistries (code usage), getStateManager() → getStateDefinition() - TextRenderer → Font (Mojang name for net.minecraft.client.gui.Font) Inner class renames: - SpriteContents.Animation → SpriteContents.AnimatedTexture - SpriteContents.AnimationFrame → SpriteContents.FrameInfo Mixin @Inject/@Redirect target strings updated to Mojang internal class paths. Access widener updated with Mojang class paths and # comment style for uncertain names. Uncertain mappings are marked with // TODO: verify Mojang name comments. These include: net.minecraft.client.gl.* (ShaderProgram, GlUniform, ShaderLoader), font provider class names, and various internal model manager classes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build.gradle | 8 +- gradle.properties | 15 +-- .../dashloader/client/DashLoaderClient.java | 20 ++-- .../dev/notalpha/dashloader/client/Dazy.java | 6 +- .../dashloader/client/ModMenuCompat.java | 2 +- .../dashloader/client/atlas/AtlasModule.java | 6 +- .../client/blockstate/DashBlockState.java | 18 ++-- .../client/font/DashBitmapFont.java | 4 +- .../client/font/DashBitmapFontGlyph.java | 2 +- .../dashloader/client/font/DashBlankFont.java | 2 +- .../client/font/DashFontFilterPair.java | 4 +- .../dashloader/client/font/DashSpaceFont.java | 4 +- .../client/font/DashTrueTypeFont.java | 18 ++-- .../client/font/DashUnihexFont.java | 4 +- .../dashloader/client/font/FontModule.java | 8 +- .../client/identifier/DashIdentifier.java | 8 +- .../identifier/DashModelIdentifier.java | 10 +- .../identifier/DashSpriteIdentifier.java | 2 +- .../client/model/DashBasicBakedModel.java | 32 +++---- .../client/model/DashMultipartBakedModel.java | 28 +++--- .../client/model/DashWeightedBakedModel.java | 10 +- .../dashloader/client/model/ModelModule.java | 62 ++++++------ .../model/components/BakedQuadCollection.java | 2 +- .../model/components/DashBakedQuad.java | 12 +-- .../components/DashBakedQuadCollection.java | 6 +- .../components/DashModelBakeSettings.java | 12 +-- .../components/DashModelTransformation.java | 44 ++++----- .../components/DashWeightedModelEntry.java | 4 +- .../fallback/MultiUnbakedBakedModel.java | 6 +- .../fallback/UnbakedBakedGroupableModel.java | 8 +- .../model/fallback/UnbakedBakedModel.java | 6 +- .../model/predicates/BooleanSelector.java | 10 +- .../model/predicates/DashAndPredicate.java | 4 +- .../model/predicates/DashOrPredicate.java | 4 +- .../model/predicates/DashSimplePredicate.java | 2 +- .../dashloader/client/shader/DashDefines.java | 2 +- .../client/shader/DashPostEffectPipeline.java | 6 +- .../shader/DashShaderProgramDefinition.java | 2 +- .../DashShaderProgramDefinitionUniform.java | 2 +- .../client/shader/DashShaderProgramKey.java | 4 +- .../client/shader/DashShaderSourceKey.java | 4 +- .../client/shader/ShaderModule.java | 14 +-- .../client/sprite/content/DashImage.java | 2 +- .../client/sprite/content/DashSprite.java | 14 +-- .../sprite/content/DashSpriteAnimation.java | 8 +- .../content/DashSpriteAnimationFrame.java | 8 +- .../sprite/content/DashSpriteContents.java | 6 +- .../sprite/content/SpriteContentModule.java | 10 +- .../sprite/stitch/DashStitchResult.java | 8 +- .../client/sprite/stitch/DashTextureSlot.java | 4 +- .../sprite/stitch/DashTextureStitcher.java | 26 ++--- .../sprite/stitch/SpriteStitcherModule.java | 14 +-- .../dashloader/client/ui/ConfigScreen.java | 18 ++-- .../dashloader/client/ui/DrawerUtil.java | 14 +-- .../dashloader/client/ui/toast/DashToast.java | 24 ++--- .../client/ui/toast/DashToastState.java | 4 +- .../client/ui/widget/ConfigListWidget.java | 46 ++++----- .../notalpha/dashloader/config/Option.java | 2 +- .../notalpha/dashloader/io/Serializer.java | 2 +- .../dashloader/misc/ObjectDumper.java | 2 +- .../dashloader/misc/TranslationHelper.java | 6 +- .../notalpha/dashloader/misc/UnsafeImage.java | 2 +- .../AndMultipartModelSelectorAccessor.java | 4 +- .../accessor/BasicBakedModelAccessor.java | 12 +-- .../mixin/accessor/BitmapFontAccessor.java | 6 +- .../accessor/BitmapFontGlyphAccessor.java | 4 +- .../mixin/accessor/FilterMapAccessor.java | 2 +- .../FontManagerProviderIndexAccessor.java | 8 +- .../mixin/accessor/GlUniformAccessor.java | 2 +- .../mixin/accessor/IdentifierAccessor.java | 6 +- .../mixin/accessor/ModelLoaderAccessor.java | 14 +-- .../accessor/MultipartBakedModelAccessor.java | 8 +- .../MultipartModelComponentAccessor.java | 4 +- .../mixin/accessor/NativeImageAccessor.java | 2 +- .../OrMultipartModelSelectorAccessor.java | 4 +- .../mixin/accessor/ShaderProgramAccessor.java | 6 +- .../SimpleMultipartModelSelectorAccessor.java | 2 +- .../accessor/SpriteAnimationAccessor.java | 8 +- .../SpriteAnimationFrameAccessor.java | 6 +- .../accessor/SpriteContentsAccessor.java | 14 +-- .../mixin/accessor/TrueTypeFontAccessor.java | 4 +- .../mixin/accessor/UnihexFontAccessor.java | 4 +- .../accessor/WeightedBakedModelAccessor.java | 6 +- .../accessor/ZipResourcePackAccessor.java | 6 +- .../ZipWrapperResourcePackAccessor.java | 4 +- .../dashloader/mixin/main/BootstrapMixin.java | 2 +- .../dashloader/mixin/main/KeyboardMixin.java | 6 +- .../mixin/main/MinecraftClientMixin.java | 10 +- .../ReloadableResourceManagerImplMixin.java | 10 +- .../mixin/main/SplashScreenMixin.java | 24 ++--- .../mixin/option/WallBlockMixin.java | 48 +++++----- .../SplashTextResourceSupplierMixin.java | 14 +-- .../option/cache/SpriteAtlasTextureMixin.java | 12 +-- .../cache/font/FontManagerOverride.java | 10 +- .../cache/font/TrueTypeFontLoaderMixin.java | 14 +-- .../model/BakedModelManagerOverride.java | 24 ++--- .../cache/model/BlockStatesLoaderMixin.java | 8 +- .../model/MultipartUnbakedModelMixin.java | 6 +- .../MultipartUnbakedModelSerializedMixin.java | 12 +-- .../cache/shader/ShaderLoaderMixin.java | 28 +++--- .../sprite/content/SpriteOpenerMixin.java | 18 ++-- .../stitch/StitchSpriteLoaderMixin.java | 16 ++-- .../misc/AffineTransformationMixin.java | 4 +- .../mixin/option/misc/MipmapHelperMixin.java | 10 +- .../option/misc/ModelIdentifierMixin.java | 10 +- src/main/resources/dashloader.accesswidener | 95 ++++++++++++------- src/main/resources/fabric.mod.json | 2 +- 107 files changed, 597 insertions(+), 569 deletions(-) diff --git a/build.gradle b/build.gradle index f45ae457..645fe9e4 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { id 'com.matthewprenger.cursegradle' version '1.4.0' id "com.modrinth.minotaur" version "2.+" - id 'fabric-loom' version '1.9-SNAPSHOT' + id 'fabric-loom' version "${loom_version}" id 'maven-publish' } @@ -41,7 +41,7 @@ loom { dependencies { // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + mappings loom.officialMojangMappings() modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "com.terraformersmc:modmenu:${project.modmenu_version}" @@ -111,7 +111,7 @@ modrinth { versionName = "$project.version".split("\\+")[0] + " for $project.minecraft_version" uploadFile = remapJar versionType = "beta" - gameVersions = ['1.21.4'] + gameVersions = ['1.21.10'] loaders = ['fabric', 'quilt'] } @@ -123,7 +123,7 @@ curseforge { changelog = file("changelog.md") releaseType = 'beta' - addGameVersion "1.21.4" + addGameVersion "1.21.10" addGameVersion "Fabric" addGameVersion "Quilt" addGameVersion "Java 21" diff --git a/gradle.properties b/gradle.properties index 38cf8b9d..bc8d1686 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,16 +2,17 @@ # Current Minecraft Properties org.gradle.jvmargs=-Xmx2560m -minecraft_version=1.21.4 -yarn_mappings=1.21.4+build.8 -loader_version=0.16.14 -loom_version=1.11-SNAPSHOT +minecraft_version=1.21.10 +# Using Mojang official mappings (loom.officialMojangMappings()) instead of YARN +loader_version=0.17.3 +loom_version=1.14-SNAPSHOT -fabric_version=0.119.3+1.21.4 +fabric_version=0.138.3+1.21.10 # Dependencies -modmenu_version=13.0.3 +# ModMenu 16.0.0 targets 1.21.9 and 1.21.10 +modmenu_version=16.0.0 # Mod Properties -mod_version=5.1.0-beta.8+1.21.4 +mod_version=5.1.0-beta.8+1.21.10 maven_group=dev.notalpha archives_base_name=dashloader diff --git a/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java b/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java index 56da5589..9fdf4a37 100644 --- a/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java +++ b/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java @@ -26,13 +26,13 @@ import dev.notalpha.dashloader.client.sprite.content.SpriteContentModule; import dev.notalpha.dashloader.client.sprite.stitch.SpriteStitcherModule; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.client.render.model.json.AndMultipartModelSelector; -import net.minecraft.client.render.model.json.MultipartModelSelector; -import net.minecraft.client.render.model.json.OrMultipartModelSelector; -import net.minecraft.client.render.model.json.SimpleMultipartModelSelector; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.util.ModelIdentifier; -import net.minecraft.util.Identifier; +import net.minecraft.client.renderer.block.model.multipart.AndCondition; +import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.client.renderer.block.model.multipart.OrCondition; +import net.minecraft.client.renderer.block.model.multipart.KeyValueCondition; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.resources.ResourceLocation; import java.nio.file.Path; import java.util.List; @@ -61,11 +61,11 @@ public void onDashLoaderInit(CacheFactory factory) { factory.addModule(new SpriteStitcherModule()); factory.addModule(new SpriteContentModule()); - factory.addMissingHandler(Identifier.class, (identifier, registryWriter) -> new DashIdentifier(identifier)); - factory.addMissingHandler(ModelIdentifier.class, (moduleIdentifier, registryWriter) -> new DashModelIdentifier(moduleIdentifier)); + factory.addMissingHandler(ResourceLocation.class, (identifier, registryWriter) -> new DashIdentifier(identifier)); + factory.addMissingHandler(ModelResourceLocation.class, (moduleIdentifier, registryWriter) -> new DashModelIdentifier(moduleIdentifier)); factory.addMissingHandler( - Sprite.class, + TextureAtlasSprite.class, DashSprite::new ); factory.addMissingHandler( diff --git a/src/main/java/dev/notalpha/dashloader/client/Dazy.java b/src/main/java/dev/notalpha/dashloader/client/Dazy.java index a3b71b75..cf3f3d3a 100644 --- a/src/main/java/dev/notalpha/dashloader/client/Dazy.java +++ b/src/main/java/dev/notalpha/dashloader/client/Dazy.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.client; -import net.minecraft.client.model.SpriteGetter; +import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent import org.jetbrains.annotations.Nullable; // its lazy, but dash! Used for resolution of sprites. @@ -8,9 +8,9 @@ public abstract class Dazy { @Nullable private transient V loaded; - protected abstract V resolve(SpriteGetter spriteLoader); + protected abstract V resolve(Function /* TODO: verify replacement */ spriteLoader); - public V get(SpriteGetter spriteLoader) { + public V get(Function /* TODO: verify replacement */ spriteLoader) { if (loaded != null) { return loaded; } diff --git a/src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java b/src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java index b4f65fd6..362689cf 100644 --- a/src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java +++ b/src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java @@ -3,7 +3,7 @@ import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; import dev.notalpha.dashloader.client.ui.ConfigScreen; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; public class ModMenuCompat implements ModMenuApi { @Override diff --git a/src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java b/src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java index 42b796a6..03b71476 100644 --- a/src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java @@ -10,8 +10,8 @@ import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.config.Option; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.texture.NativeImage; +import net.minecraft.client.Minecraft; +import com.mojang.blaze3d.platform.NativeImage; import org.apache.commons.codec.digest.DigestUtils; import java.io.FileInputStream; @@ -47,7 +47,7 @@ public void load(Data data, RegistryReader reader, StepTask t) { HashMap>> out = new HashMap<>(); - var maxMipLevel = MinecraftClient.getInstance().options.getMipmapLevels().getValue(); + var maxMipLevel = Minecraft.getInstance().options.getMipmapLevels().getValue(); for (String atlasId : data.atlasIds) { var tasks = new ArrayList>(); diff --git a/src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java b/src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java index c534ea30..444349f8 100644 --- a/src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java +++ b/src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java @@ -4,12 +4,12 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.ModelLoaderAccessor; -import net.minecraft.block.BlockState; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; public final class DashBlockState implements DashObject { - public static final Identifier ITEM_FRAME = Identifier.of("dashloader", "itemframewhy"); + public static final ResourceLocation ITEM_FRAME = ResourceLocation.of("dashloader", "itemframewhy"); public final int owner; public final int pos; @@ -22,7 +22,7 @@ public DashBlockState(BlockState blockState, RegistryWriter writer) { var block = blockState.getBlock(); int pos = -1; - Identifier owner = null; + ResourceLocation owner = null; { var states = ModelLoaderAccessor.getTheItemFrameThing().getStates(); for (int i = 0; i < states.size(); i++) { @@ -36,12 +36,12 @@ public DashBlockState(BlockState blockState, RegistryWriter writer) { } if (pos == -1) { - var states = block.getStateManager().getStates(); + var states = block.getStateDefinition().getStates(); for (int i = 0; i < states.size(); i++) { BlockState state = states.get(i); if (state.equals(blockState)) { pos = i; - owner = Registries.BLOCK.getId(block); + owner = BuiltInRegistries.BLOCK.getId(block); break; } } @@ -57,12 +57,12 @@ public DashBlockState(BlockState blockState, RegistryWriter writer) { @Override public BlockState export(final RegistryReader reader) { - final Identifier id = reader.get(this.owner); + final ResourceLocation id = reader.get(this.owner); // if its item frame get its state from the model loader as mojank is mojank if (id.equals(ITEM_FRAME)) { return ModelLoaderAccessor.getTheItemFrameThing().getStates().get(this.pos); } else { - return Registries.BLOCK.get(id).getStateManager().getStates().get(this.pos); + return BuiltInRegistries.BLOCK.get(id).getStateDefinition().getStates().get(this.pos); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java index 2f097b3c..01bff982 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java @@ -5,8 +5,8 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.BitmapFontAccessor; -import net.minecraft.client.font.BitmapFont; -import net.minecraft.client.font.GlyphContainer; +import net.minecraft.client.gui.font.providers.BitmapProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name import java.util.ArrayList; diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java index 3aa4ee29..db30761e 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java @@ -3,7 +3,7 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.BitmapFontGlyphAccessor; -import net.minecraft.client.font.BitmapFont; +import net.minecraft.client.gui.font.providers.BitmapProvider; // TODO: verify Mojang name public final class DashBitmapFontGlyph { public final float scaleFactor; diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java index 24414c1d..4df81144 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java @@ -2,7 +2,7 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; -import net.minecraft.client.font.BlankFont; +import net.minecraft.client.gui.font.providers.BlankProvider; // TODO: verify Mojang name public final class DashBlankFont implements DashObject { @Override diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java b/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java index a97a09df..3fa1e419 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java @@ -5,8 +5,8 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.FilterMapAccessor; -import net.minecraft.client.font.Font; -import net.minecraft.client.font.FontFilterType; +import net.minecraft.client.gui.font.GlyphProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.FontSet; // TODO: verify Mojang name (FontFilterType) import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java index 6f243cd0..772a6f7a 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java @@ -4,8 +4,8 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import it.unimi.dsi.fastutil.ints.Int2FloatArrayMap; import it.unimi.dsi.fastutil.ints.IntSet; -import net.minecraft.client.font.Glyph; -import net.minecraft.client.font.SpaceFont; +import net.minecraft.client.gui.font.glyphs.BakedGlyph; // TODO: verify Mojang name (Glyph) +import net.minecraft.client.gui.font.providers.SpaceProvider; // TODO: verify Mojang name public final class DashSpaceFont implements DashObject { public final int[] ints; diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java index 44ac5dd4..d97913c0 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java @@ -7,12 +7,12 @@ import dev.notalpha.dashloader.misc.UnsafeHelper; import dev.notalpha.dashloader.mixin.accessor.TrueTypeFontAccessor; import it.unimi.dsi.fastutil.ints.IntArraySet; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.FreeTypeUtil; -import net.minecraft.client.font.GlyphContainer; -import net.minecraft.client.font.TrueTypeFont; -import net.minecraft.resource.Resource; -import net.minecraft.util.Identifier; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.font.FreeTypeUtil; // TODO: verify Mojang name +import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name +import net.minecraft.client.gui.font.providers.TrueTypeGlyphProviderBuilder; // TODO: verify Mojang name +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.resources.ResourceLocation; import org.lwjgl.PointerBuffer; import org.lwjgl.system.MemoryStack; import org.lwjgl.system.MemoryUtil; @@ -47,10 +47,10 @@ public DashTrueTypeFont(TrueTypeFont font) { TrueTypeFontAccessor fontAccess = (TrueTypeFontAccessor) font; FT_Face ft_face = fontAccess.getFace(); FontPrams prams = FontModule.FONT_TO_DATA.get(CacheStatus.SAVE).get(ft_face); - final Identifier ttFont = prams.id(); + final ResourceLocation ttFont = prams.id(); byte[] data = null; try { - Optional resource = MinecraftClient.getInstance().getResourceManager().getResource(ttFont.withPrefixedPath("font/")); + Optional resource = Minecraft.getInstance().getResourceManager().getResource(ttFont.withPrefixedPath("font/")); if (resource.isPresent()) { var stream = resource.get().getInputStream(); data = IOHelper.streamToArray(stream); @@ -140,6 +140,6 @@ public void postExport(RegistryReader reader) { } } - public record FontPrams(Identifier id, float size, String skip) { + public record FontPrams(ResourceLocation id, float size, String skip) { } } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java index df328e90..d381b3f6 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java @@ -5,8 +5,8 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.UnihexFontAccessor; -import net.minecraft.client.font.GlyphContainer; -import net.minecraft.client.font.UnihexFont; +import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name +import net.minecraft.client.gui.font.providers.UnihexProvider; // TODO: verify Mojang name public final class DashUnihexFont implements DashObject { public final IntObjectList glyphs; diff --git a/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java b/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java index 0166d507..3d58e4b1 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java @@ -10,8 +10,8 @@ import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.config.Option; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.font.Font; -import net.minecraft.util.Identifier; +import net.minecraft.client.gui.font.GlyphProvider; // TODO: verify Mojang name +import net.minecraft.resources.ResourceLocation; import org.lwjgl.util.freetype.FT_Face; import java.util.ArrayList; @@ -104,10 +104,10 @@ public DashProviderIndex(IntObjectList> providers, List a } public static final class ProviderIndex { - public final Map> providers; + public final Map> providers; public final List allProviders; - public ProviderIndex(Map> providers, List allProviders) { + public ProviderIndex(Map> providers, List allProviders) { this.providers = providers; this.allProviders = allProviders; } diff --git a/src/main/java/dev/notalpha/dashloader/client/identifier/DashIdentifier.java b/src/main/java/dev/notalpha/dashloader/client/identifier/DashIdentifier.java index 4b5de78a..4e795822 100644 --- a/src/main/java/dev/notalpha/dashloader/client/identifier/DashIdentifier.java +++ b/src/main/java/dev/notalpha/dashloader/client/identifier/DashIdentifier.java @@ -3,9 +3,9 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.mixin.accessor.IdentifierAccessor; -import net.minecraft.util.Identifier; +import net.minecraft.resources.ResourceLocation; -public final class DashIdentifier implements DashObject { +public final class DashIdentifier implements DashObject { public final String namespace; public final String path; @@ -14,13 +14,13 @@ public DashIdentifier(String namespace, String path) { this.path = path; } - public DashIdentifier(Identifier identifier) { + public DashIdentifier(ResourceLocation identifier) { this.namespace = identifier.getNamespace(); this.path = identifier.getPath(); } @Override - public Identifier export(RegistryReader exportHandler) { + public ResourceLocation export(RegistryReader exportHandler) { return IdentifierAccessor.init(this.namespace, this.path); } diff --git a/src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java b/src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java index 2dba0458..30f285c2 100644 --- a/src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java +++ b/src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java @@ -3,14 +3,14 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.mixin.accessor.IdentifierAccessor; -import net.minecraft.client.util.ModelIdentifier; +import net.minecraft.client.resources.model.ModelResourceLocation; -public final class DashModelIdentifier implements DashObject { +public final class DashModelIdentifier implements DashObject { public final String namespace; public final String path; public final String variant; - public DashModelIdentifier(ModelIdentifier identifier) { + public DashModelIdentifier(ModelResourceLocation identifier) { this.namespace = identifier.id().getNamespace(); this.path = identifier.id().getPath(); this.variant = identifier.getVariant(); @@ -23,8 +23,8 @@ public DashModelIdentifier(String namespace, String path, String variant) { } @Override - public ModelIdentifier export(RegistryReader exportHandler) { - return new ModelIdentifier(IdentifierAccessor.init(this.namespace, this.path), variant); + public ModelResourceLocation export(RegistryReader exportHandler) { + return new ModelResourceLocation(IdentifierAccessor.init(this.namespace, this.path), variant); } @Override diff --git a/src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java b/src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java index 0f6a9428..7eb8e5d1 100644 --- a/src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java +++ b/src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java @@ -3,7 +3,7 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.util.SpriteIdentifier; +import net.minecraft.client.renderer.texture.SpriteIdentifier; // TODO: verify Mojang name public class DashSpriteIdentifier implements DashObject { public final int atlas; diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java index af37f725..f90e4b37 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java @@ -11,20 +11,20 @@ import dev.notalpha.dashloader.client.sprite.content.DashSprite; import dev.notalpha.dashloader.mixin.accessor.BasicBakedModelAccessor; import dev.notalpha.hyphen.scan.annotations.DataNullable; -import net.minecraft.client.model.SpriteGetter; -import net.minecraft.client.render.model.BakedQuad; -import net.minecraft.client.render.model.BasicBakedModel; -import net.minecraft.client.render.model.json.ModelTransformation; -import net.minecraft.client.texture.Sprite; -import net.minecraft.util.math.Direction; -import net.minecraft.util.math.random.Random; +import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.SimpleBakedModel; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; -public final class DashBasicBakedModel implements DashObject { +public final class DashBasicBakedModel implements DashObject { public final int quads; public final ObjectObjectList faceQuads; public final boolean usesAo; @@ -48,10 +48,10 @@ public DashBasicBakedModel(int quads, this.spritePointer = spritePointer; } - public DashBasicBakedModel(BasicBakedModel basicBakedModel, RegistryWriter writer) { + public DashBasicBakedModel(SimpleBakedModel basicBakedModel, RegistryWriter writer) { BasicBakedModelAccessor access = ((BasicBakedModelAccessor) basicBakedModel); - Random random = Random.create(); + RandomSource random = RandomSource.create(); this.quads = writer.add(new BakedQuadCollection(basicBakedModel.getQuads(null, null, random))); this.faceQuads = new ObjectObjectList<>(); for (Direction value : Direction.values()) { @@ -115,13 +115,13 @@ public int hashCode() { return result; } - public static class DazyImpl extends Dazy { + public static class DazyImpl extends Dazy { public final DashBakedQuadCollection.DazyImpl quads; public final Map faceQuads; public final boolean usesAo; public final boolean isSideLit; public final boolean hasDepth; - public final ModelTransformation transformation; + public final ItemTransforms transformation; public final DashSprite.DazyImpl sprite; public DazyImpl(DashBakedQuadCollection.DazyImpl quads, @@ -129,7 +129,7 @@ public DazyImpl(DashBakedQuadCollection.DazyImpl quads, boolean usesAo, boolean isSideLit, boolean hasDepth, - ModelTransformation transformation, + ItemTransforms transformation, DashSprite.DazyImpl sprite) { this.quads = quads; this.faceQuads = faceQuads; @@ -141,13 +141,13 @@ public DazyImpl(DashBakedQuadCollection.DazyImpl quads, } @Override - protected BasicBakedModel resolve(SpriteGetter spriteLoader) { + protected SimpleBakedModel resolve(Function /* TODO: verify replacement */ spriteLoader) { List quads = this.quads.get(spriteLoader); var faceQuadsOut = new HashMap>(); this.faceQuads.forEach((direction, dazy) -> faceQuadsOut.put(direction, dazy.get(spriteLoader))); - Sprite sprite = this.sprite.get(spriteLoader); - return new BasicBakedModel(quads, faceQuadsOut, usesAo, isSideLit, hasDepth, sprite, transformation); + TextureAtlasSprite sprite = this.sprite.get(spriteLoader); + return new SimpleBakedModel(quads, faceQuadsOut, usesAo, isSideLit, hasDepth, sprite, transformation); } } } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java index 4b1a8c10..4bbd016a 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java @@ -7,26 +7,26 @@ import dev.notalpha.dashloader.client.Dazy; import dev.notalpha.dashloader.mixin.accessor.MultipartBakedModelAccessor; import dev.notalpha.dashloader.mixin.accessor.MultipartModelComponentAccessor; -import net.minecraft.block.BlockState; -import net.minecraft.client.model.SpriteGetter; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.MultipartBakedModel; -import net.minecraft.client.render.model.json.MultipartModelSelector; -import net.minecraft.util.Identifier; +import net.minecraft.world.level.block.state.BlockState; +import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.block.model.MultiPartBakedModel; +import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.resources.ResourceLocation; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.function.Predicate; -public class DashMultipartBakedModel implements DashObject { +public class DashMultipartBakedModel implements DashObject { public final List components; public DashMultipartBakedModel(List components) { this.components = components; } - public DashMultipartBakedModel(MultipartBakedModel model, RegistryWriter writer) { + public DashMultipartBakedModel(MultiPartBakedModel model, RegistryWriter writer) { var access = ((MultipartBakedModelAccessor) model); var accessComponents = access.getSelectors(); int size = accessComponents.size(); @@ -54,7 +54,7 @@ public DazyImpl export(RegistryReader reader) { List componentsOut = new ArrayList<>(this.components.size()); this.components.forEach(component -> { Dazy compModel = reader.get(component.model); - Identifier compIdentifier = reader.get(component.identifier); + ResourceLocation compIdentifier = reader.get(component.identifier); MultipartModelSelector compSelector = reader.get(component.selector); Predicate predicate = compSelector.getPredicate(ModelModule.getStateManager(compIdentifier)); componentsOut.add(new DazyImpl.Component(compModel, predicate)); @@ -109,7 +109,7 @@ public int hashCode() { } } - public static class DazyImpl extends Dazy { + public static class DazyImpl extends Dazy { public final List components; public DazyImpl(List components) { @@ -117,16 +117,16 @@ public DazyImpl(List components) { } @Override - protected MultipartBakedModel resolve(SpriteGetter spriteLoader) { - List componentsOut = new ArrayList<>(this.components.size()); + protected MultiPartBakedModel resolve(Function /* TODO: verify replacement */ spriteLoader) { + List componentsOut = new ArrayList<>(this.components.size()); for (Component component : components) { var model = component.model.get(spriteLoader); var selector = component.selector; - componentsOut.add(new MultipartBakedModel.Selector(selector, model)); + componentsOut.add(new MultiPartBakedModel.Selector(selector, model)); } - MultipartBakedModel multipartBakedModel = new MultipartBakedModel(componentsOut); + MultiPartBakedModel multipartBakedModel = new MultiPartBakedModel(componentsOut); MultipartBakedModelAccessor access = (MultipartBakedModelAccessor) multipartBakedModel; // Fixes race condition which strangely does not happen in vanilla a ton? access.setStateCache(Collections.synchronizedMap(access.getStateCache())); diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java index 29fe8c9b..6c8ff712 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java @@ -6,10 +6,10 @@ import dev.notalpha.dashloader.client.Dazy; import dev.notalpha.dashloader.client.model.components.DashWeightedModelEntry; import dev.notalpha.dashloader.mixin.accessor.WeightedBakedModelAccessor; -import net.minecraft.client.model.SpriteGetter; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.WeightedBakedModel; -import net.minecraft.util.collection.DataPool; +import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.block.model.WeightedBakedModel; // TODO: verify Mojang name +import net.minecraft.util.random.WeightedRandomList; import java.util.ArrayList; import java.util.List; @@ -60,7 +60,7 @@ public DazyImpl(List entries) { } @Override - protected WeightedBakedModel resolve(SpriteGetter spriteLoader) { + protected WeightedBakedModel resolve(Function /* TODO: verify replacement */ spriteLoader) { DataPool.Builder models = DataPool.builder(); for (Entry entry : this.entries) { BakedModel model = entry.model.get(spriteLoader); diff --git a/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java b/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java index 45a709cc..1508d65d 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java @@ -22,14 +22,14 @@ import dev.notalpha.taski.builtin.StepTask; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.ints.IntArrayList; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.model.*; -import net.minecraft.client.render.model.json.MultipartModelComponent; -import net.minecraft.client.util.ModelIdentifier; -import net.minecraft.registry.Registries; -import net.minecraft.state.StateManager; -import net.minecraft.util.Identifier; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.block.model.*; // TODO: verify Mojang package +import net.minecraft.client.renderer.block.model.multipart.Selector; +import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.resources.ResourceLocation; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.NotNull; @@ -41,44 +41,44 @@ public class ModelModule implements DashModule { public static final CachingData> BAKED_MODEL_PARTS = new CachingData<>(CacheStatus.SAVE); - public static final CachingData> BLOCK_MODELS_SAVE = new CachingData<>(CacheStatus.SAVE); - public static final CachingData> RAW_BLOCK_MODELS = new CachingData<>(CacheStatus.SAVE); + public static final CachingData> BLOCK_MODELS_SAVE = new CachingData<>(CacheStatus.SAVE); + public static final CachingData> RAW_BLOCK_MODELS = new CachingData<>(CacheStatus.SAVE); -// public static final CachingData> ITEM_MODELS_SAVE = new CachingData<>(CacheStatus.SAVE); -// public static final CachingData> ITEM_PROPERTIES = new CachingData<>(CacheStatus.SAVE); +// public static final CachingData> ITEM_MODELS_SAVE = new CachingData<>(CacheStatus.SAVE); +// public static final CachingData> ITEM_PROPERTIES = new CachingData<>(CacheStatus.SAVE); - public static final CachingData> MODEL_PARTS = new CachingData<>(CacheStatus.LOAD); - public static final CachingData> MISSING_MODEL_PARTS = new CachingData<>(CacheStatus.LOAD); + public static final CachingData> MODEL_PARTS = new CachingData<>(CacheStatus.LOAD); + public static final CachingData> MISSING_MODEL_PARTS = new CachingData<>(CacheStatus.LOAD); - public static final CachingData> BLOCK_MODELS = new CachingData<>(CacheStatus.LOAD); - public static final CachingData> MISSING_BLOCK_MODELS = new CachingData<>(CacheStatus.LOAD); + public static final CachingData> BLOCK_MODELS = new CachingData<>(CacheStatus.LOAD); + public static final CachingData> MISSING_BLOCK_MODELS = new CachingData<>(CacheStatus.LOAD); -// public static final CachingData> ITEM_MODELS = new CachingData<>(CacheStatus.LOAD); -// public static final CachingData> MISSING_ITEM_MODELS = new CachingData<>(CacheStatus.LOAD); +// public static final CachingData> ITEM_MODELS = new CachingData<>(CacheStatus.LOAD); +// public static final CachingData> MISSING_ITEM_MODELS = new CachingData<>(CacheStatus.LOAD); - public static final CachingData, StateManager>>> MULTIPART_PREDICATES = new CachingData<>(CacheStatus.SAVE); + public static final CachingData, StateDefinition>>> MULTIPART_PREDICATES = new CachingData<>(CacheStatus.SAVE); public static final CachingData> UNBAKED_TO_BAKED_MULTIPART_MODELS = new CachingData<>(CacheStatus.SAVE); - public static StateManager getStateManager(Identifier identifier) { - StateManager staticDef = ModelLoaderAccessor.getStaticDefinitions().get(identifier); + public static StateDefinition getStateManager(ResourceLocation identifier) { + StateDefinition staticDef = ModelLoaderAccessor.getStaticDefinitions().get(identifier); if (staticDef != null) { return staticDef; } else { - return Registries.BLOCK.get(identifier).getStateManager(); + return BuiltInRegistries.BLOCK.get(identifier).getStateDefinition(); } } @NotNull - public static Identifier getStateManagerIdentifier(StateManager stateManager) { + public static ResourceLocation getStateManagerIdentifier(StateDefinition stateManager) { // Static definitions like itemframes. - for (Map.Entry> entry : ModelLoaderAccessor.getStaticDefinitions().entrySet()) { + for (Map.Entry> entry : ModelLoaderAccessor.getStaticDefinitions().entrySet()) { if (entry.getValue() == stateManager) { return entry.getKey(); } } - return Registries.BLOCK.getId(stateManager.getOwner()); + return BuiltInRegistries.BLOCK.getId(stateManager.getOwner()); } @Override @@ -212,13 +212,13 @@ public Data save(RegistryWriter factory, StepTask task) { @Override public void load(Data data, RegistryReader reader, StepTask task) { - var modelParts = new HashMap(data.modelParts.list().size() + data.modelPartsVariants.list().size()); - var missingModelParts = new ArrayList(data.missingModelParts.length); + var modelParts = new HashMap(data.modelParts.list().size() + data.modelPartsVariants.list().size()); + var missingModelParts = new ArrayList(data.missingModelParts.length); - var blockModels = new HashMap(data.blockModels.list().size()); - var missingBlockModels = new ArrayList(data.missingBlockModels.length); -// var itemModels = new HashMap(data.itemModels.list().size()); -// var missingItemModels = new ArrayList(data.missingItemModels.length); + var blockModels = new HashMap(data.blockModels.list().size()); + var missingBlockModels = new ArrayList(data.missingBlockModels.length); +// var itemModels = new HashMap(data.itemModels.list().size()); +// var missingItemModels = new ArrayList(data.missingItemModels.length); data.modelPartsVariants.forEach((id, entry) -> { var thing = new HashMap>(); diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java b/src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java index 71266611..353be4cc 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.client.model.components; -import net.minecraft.client.render.model.BakedQuad; +import net.minecraft.client.renderer.block.model.BakedQuad; import java.util.List; diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java index 572af48e..0191ab37 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java @@ -5,10 +5,10 @@ import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.client.Dazy; import dev.notalpha.dashloader.client.sprite.content.DashSprite; -import net.minecraft.client.model.SpriteGetter; -import net.minecraft.client.render.model.BakedQuad; -import net.minecraft.client.texture.Sprite; -import net.minecraft.util.math.Direction; +import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.Direction; import java.util.Arrays; @@ -80,8 +80,8 @@ public DazyImpl(int[] vertexData, int colorIndex, Direction face, boolean shade, } @Override - protected BakedQuad resolve(SpriteGetter spriteLoader) { - Sprite sprite = this.sprite.get(spriteLoader); + protected BakedQuad resolve(Function /* TODO: verify replacement */ spriteLoader) { + TextureAtlasSprite sprite = this.sprite.get(spriteLoader); return new BakedQuad(vertexData, colorIndex, face, sprite, shade, lightEmission); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java index e2044fe7..8e950364 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java @@ -4,8 +4,8 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.client.Dazy; -import net.minecraft.client.model.SpriteGetter; -import net.minecraft.client.render.model.BakedQuad; +import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import net.minecraft.client.renderer.block.model.BakedQuad; import java.util.ArrayList; import java.util.List; @@ -56,7 +56,7 @@ public DazyImpl(List quads) { } @Override - protected List resolve(SpriteGetter spriteLoader) { + protected List resolve(Function /* TODO: verify replacement */ spriteLoader) { var out = new ArrayList(quads.size()); quads.forEach( dazyBakedQuad -> out.add(dazyBakedQuad.get(spriteLoader)) diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java index f6a89316..f3c7969b 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java @@ -3,8 +3,8 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.render.model.ModelBakeSettings; -import net.minecraft.util.math.AffineTransformation; +import net.minecraft.client.resources.model.ModelState; // TODO: verify Mojang name +import com.mojang.math.ItemTransform; import org.joml.Matrix4f; import java.util.Arrays; @@ -24,17 +24,17 @@ public DashModelBakeSettings(BakeSettings settings, RegistryWriter writer) { } public BakeSettings export(RegistryReader reader) { - return new BakeSettings(new AffineTransformation(new Matrix4f().set(rotation)), uvLock); + return new BakeSettings(new Transformation(new Matrix4f().set(rotation)), uvLock); } - public record BakeSettings(AffineTransformation rotation, boolean uvLock) implements ModelBakeSettings { + public record BakeSettings(Transformation rotation, boolean uvLock) implements ModelState /* TODO: verify Mojang name */ { - public BakeSettings(ModelBakeSettings settings) { + public BakeSettings(ModelState /* TODO: verify Mojang name */ settings) { this(settings.getRotation(), settings.isUvLocked()); } @Override - public AffineTransformation getRotation() { + public Transformation getRotation() { return rotation; } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java index fd9fa1cb..4bc909cf 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java @@ -1,32 +1,32 @@ package dev.notalpha.dashloader.client.model.components; import dev.notalpha.hyphen.scan.annotations.DataNullable; -import net.minecraft.client.render.model.json.ModelTransformation; -import net.minecraft.client.render.model.json.Transformation; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.block.model.ItemTransform; import org.jetbrains.annotations.Nullable; import java.util.Objects; public final class DashModelTransformation { @DataNullable - public final Transformation thirdPersonLeftHand; + public final ItemTransform thirdPersonLeftHand; @DataNullable - public final Transformation thirdPersonRightHand; + public final ItemTransform thirdPersonRightHand; @DataNullable - public final Transformation firstPersonLeftHand; + public final ItemTransform firstPersonLeftHand; @DataNullable - public final Transformation firstPersonRightHand; + public final ItemTransform firstPersonRightHand; @DataNullable - public final Transformation head; + public final ItemTransform head; @DataNullable - public final Transformation gui; + public final ItemTransform gui; @DataNullable - public final Transformation ground; + public final ItemTransform ground; @DataNullable - public final Transformation fixed; + public final ItemTransform fixed; public transient int nullTransformations = 0; - public DashModelTransformation(@Nullable Transformation thirdPersonLeftHand, @Nullable Transformation thirdPersonRightHand, @Nullable Transformation firstPersonLeftHand, @Nullable Transformation firstPersonRightHand, @Nullable Transformation head, @Nullable Transformation gui, @Nullable Transformation ground, @Nullable Transformation fixed) { + public DashModelTransformation(@Nullable ItemTransform thirdPersonLeftHand, @Nullable ItemTransform thirdPersonRightHand, @Nullable ItemTransform firstPersonLeftHand, @Nullable ItemTransform firstPersonRightHand, @Nullable ItemTransform head, @Nullable ItemTransform gui, @Nullable ItemTransform ground, @Nullable ItemTransform fixed) { this.thirdPersonLeftHand = thirdPersonLeftHand; this.thirdPersonRightHand = thirdPersonRightHand; this.firstPersonLeftHand = firstPersonLeftHand; @@ -37,7 +37,7 @@ public DashModelTransformation(@Nullable Transformation thirdPersonLeftHand, @Nu this.fixed = fixed; } - public DashModelTransformation(ModelTransformation other) { + public DashModelTransformation(ItemTransforms other) { this.thirdPersonLeftHand = this.createTransformation(other.thirdPersonLeftHand); this.thirdPersonRightHand = this.createTransformation(other.thirdPersonRightHand); this.firstPersonLeftHand = this.createTransformation(other.firstPersonLeftHand); @@ -49,8 +49,8 @@ public DashModelTransformation(ModelTransformation other) { } @Nullable - public static DashModelTransformation createDashOrReturnNullIfDefault(ModelTransformation other) { - if (other == ModelTransformation.NONE) { + public static DashModelTransformation createDashOrReturnNullIfDefault(ItemTransforms other) { + if (other == ItemTransforms.NONE) { return null; } @@ -63,16 +63,16 @@ public static DashModelTransformation createDashOrReturnNullIfDefault(ModelTrans return out; } - public static ModelTransformation exportOrDefault(@Nullable DashModelTransformation other) { + public static ItemTransforms exportOrDefault(@Nullable DashModelTransformation other) { if (other == null) { - return ModelTransformation.NONE; + return ItemTransforms.NONE; } return other.export(); } - private Transformation createTransformation(Transformation transformation) { - if (transformation == Transformation.IDENTITY) { + private ItemTransform createTransformation(ItemTransform transformation) { + if (transformation == ItemTransform.IDENTITY) { this.nullTransformations++; return null; } else { @@ -80,12 +80,12 @@ private Transformation createTransformation(Transformation transformation) { } } - private Transformation unTransformation(Transformation transformation) { - return transformation == null ? Transformation.IDENTITY : transformation; + private ItemTransform unTransformation(ItemTransform transformation) { + return transformation == null ? ItemTransform.IDENTITY : transformation; } - public ModelTransformation export() { - return new ModelTransformation( + public ItemTransforms export() { + return new ItemTransforms( this.unTransformation(this.thirdPersonLeftHand), this.unTransformation(this.thirdPersonRightHand), this.unTransformation(this.firstPersonLeftHand), diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java index 5669fa55..12b1c103 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java @@ -3,8 +3,8 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.client.model.DashWeightedBakedModel; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.util.collection.Weighted; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.util.random.Weighted; public final class DashWeightedModelEntry { public final int model; diff --git a/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java index 0f238566..af12f4a8 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java @@ -2,8 +2,8 @@ import dev.notalpha.dashloader.client.Dazy; import dev.notalpha.dashloader.client.model.components.DashModelBakeSettings; -import net.minecraft.client.render.model.*; -import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.renderer.block.model.*; // TODO: verify Mojang package +import net.minecraft.client.renderer.block.model.ItemTransforms; import java.util.Map; @@ -22,7 +22,7 @@ public void resolve(Resolver resolver) { } @Override - public BakedModel bake(ModelTextures textures, Baker baker, ModelBakeSettings settings, boolean ambientOcclusion, boolean isSideLit, ModelTransformation transformation) { + public BakedModel bake(ModelTextures textures, Baker baker, ModelState /* TODO: verify Mojang name */ settings, boolean ambientOcclusion, boolean isSideLit, ItemTransforms transformation) { var model = this.models.get(new DashModelBakeSettings.BakeSettings(settings)); return model.get(baker.getSpriteGetter()); } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java index a4551530..989321d3 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java @@ -1,10 +1,10 @@ package dev.notalpha.dashloader.client.model.fallback; import dev.notalpha.dashloader.client.Dazy; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.Baker; -import net.minecraft.client.render.model.GroupableModel; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.block.model.Baker; // TODO: verify Mojang name +import net.minecraft.client.renderer.block.model.GroupableModel; // TODO: verify Mojang name /** * Same as {@linkplain UnbakedBakedModel}, but for {@linkplain GroupableModel} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java index 43fe159b..dea78ecc 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java @@ -1,8 +1,8 @@ package dev.notalpha.dashloader.client.model.fallback; import dev.notalpha.dashloader.client.Dazy; -import net.minecraft.client.render.model.*; -import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.renderer.block.model.*; // TODO: verify Mojang package +import net.minecraft.client.renderer.block.model.ItemTransforms; /** * An unbaked model which holds a baked model, used for fallback to reuse cached models. @@ -19,7 +19,7 @@ public void resolve(Resolver resolver) { } @Override - public BakedModel bake(ModelTextures textures, Baker baker, ModelBakeSettings settings, boolean ambientOcclusion, boolean isSideLit, ModelTransformation transformation) { + public BakedModel bake(ModelTextures textures, Baker baker, ModelState /* TODO: verify Mojang name */ settings, boolean ambientOcclusion, boolean isSideLit, ItemTransforms transformation) { return this.bakedModel.get(baker.getSpriteGetter()); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java index c699e8c8..35b2471b 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java @@ -1,9 +1,9 @@ package dev.notalpha.dashloader.client.model.predicates; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.model.json.MultipartModelSelector; -import net.minecraft.state.StateManager; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.world.level.block.state.StateDefinition; import java.util.function.Predicate; @@ -19,7 +19,7 @@ public BooleanSelector(MultipartModelSelector selector) { } @Override - public Predicate getPredicate(StateManager stateFactory) { + public Predicate getPredicate(StateDefinition stateFactory) { return blockState -> selector; } } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java index 45377653..154ad544 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java @@ -4,8 +4,8 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.AndMultipartModelSelectorAccessor; -import net.minecraft.client.render.model.json.AndMultipartModelSelector; -import net.minecraft.client.render.model.json.MultipartModelSelector; +import net.minecraft.client.renderer.block.model.multipart.AndCondition; +import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java index 9fe106ab..042e86f1 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java @@ -4,8 +4,8 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.OrMultipartModelSelectorAccessor; -import net.minecraft.client.render.model.json.MultipartModelSelector; -import net.minecraft.client.render.model.json.OrMultipartModelSelector; +import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.client.renderer.block.model.multipart.OrCondition; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java index 102ba679..9426ca0b 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java @@ -3,7 +3,7 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.mixin.accessor.SimpleMultipartModelSelectorAccessor; -import net.minecraft.client.render.model.json.SimpleMultipartModelSelector; +import net.minecraft.client.renderer.block.model.multipart.KeyValueCondition; public final class DashSimplePredicate implements DashObject { public final String key; diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java index 37dfa9b8..4dbc7c94 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java @@ -3,7 +3,7 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.collection.ObjectObjectList; import dev.notalpha.dashloader.api.registry.RegistryReader; -import net.minecraft.client.gl.Defines; +import net.minecraft.client.gl.Defines; // TODO: verify Mojang name import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java index f64c9c29..9f0ac6b1 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java @@ -4,8 +4,8 @@ import dev.notalpha.dashloader.api.collection.IntIntList; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.gl.PostEffectPipeline; -import net.minecraft.util.Identifier; +import net.minecraft.client.gl.PostEffectPipeline; // TODO: verify Mojang name +import net.minecraft.resources.ResourceLocation; import java.util.ArrayList; import java.util.HashMap; @@ -33,7 +33,7 @@ public DashPostEffectPipeline(IntIntList targets, int[] passes) { @Override public PostEffectPipeline export(RegistryReader reader) { - var targets = new HashMap(this.targets.list().size()); + var targets = new HashMap(this.targets.list().size()); var passes = new ArrayList(this.passes.length); this.targets.forEach((key, value) -> targets.put(reader.get(key), reader.get(value))); for (int pass : this.passes) { diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java index 1266c946..9564b7a9 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java @@ -3,7 +3,7 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.gl.ShaderProgramDefinition; +import net.minecraft.client.gl.ShaderProgramDefinition; // TODO: verify Mojang name import java.util.ArrayList; diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java index dde96751..d64e352d 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java @@ -2,7 +2,7 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; -import net.minecraft.client.gl.ShaderProgramDefinition; +import net.minecraft.client.gl.ShaderProgramDefinition; // TODO: verify Mojang name import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java index 8b2301a1..c6e0cdfa 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java @@ -3,8 +3,8 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.gl.Defines; -import net.minecraft.client.gl.ShaderProgramKey; +import net.minecraft.client.gl.Defines; // TODO: verify Mojang name +import net.minecraft.client.gl.ShaderProgramKey; // TODO: verify Mojang name import java.util.HashSet; import java.util.List; diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java index 3e22455e..2f43cb8c 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java @@ -3,8 +3,8 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.gl.CompiledShader; -import net.minecraft.client.gl.ShaderLoader.ShaderSourceKey; +import net.minecraft.client.gl.CompiledShader; // TODO: verify Mojang name +import net.minecraft.client.gl.ShaderLoader.ShaderSourceKey; // TODO: verify Mojang name public class DashShaderSourceKey implements DashObject { public final int id; diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java b/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java index bdb07221..4d25fc05 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java @@ -11,17 +11,17 @@ import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.config.Option; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.gl.ShaderLoader; -import net.minecraft.client.gl.ShaderProgramDefinition; -import net.minecraft.util.Identifier; +import net.minecraft.client.gl.ShaderLoader; // TODO: verify Mojang name +import net.minecraft.client.gl.ShaderProgramDefinition; // TODO: verify Mojang name +import net.minecraft.resources.ResourceLocation; import java.util.ArrayList; import java.util.HashMap; public class ShaderModule implements DashModule { public static final CachingData> SHADER_SOURCES = new CachingData<>(); - public static final CachingData> SHADER_DEFINITIONS = new CachingData<>(); -// public static final CachingData> POST_EFFECTS = new CachingData<>(); // TODO + public static final CachingData> SHADER_DEFINITIONS = new CachingData<>(); +// public static final CachingData> POST_EFFECTS = new CachingData<>(); // TODO @Override @@ -63,8 +63,8 @@ public Data save(RegistryWriter factory, StepTask task) { @Override public void load(Data data, RegistryReader reader, StepTask task) { var out1 = new HashMap(data.data1.list().size()); - var out2 = new HashMap(data.data2.list().size()); -// var out3 = new HashMap(data.data3.list().size()); + var out2 = new HashMap(data.data2.list().size()); +// var out3 = new HashMap(data.data3.list().size()); data.data1.forEach((key, value) -> out1.put(reader.get(key), value)); data.data2.forEach((key, value) -> out2.put(reader.get(key), reader.get(value))); // data.data3.forEach((key, value) -> out3.put(reader.get(key), reader.get(value))); diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java index acb64be9..191ec4ad 100644 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java @@ -4,7 +4,7 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.io.def.NativeImageData; import dev.notalpha.dashloader.mixin.accessor.NativeImageAccessor; -import net.minecraft.client.texture.NativeImage; +import com.mojang.blaze3d.platform.NativeImage; import org.lwjgl.system.MemoryUtil; import java.nio.ByteBuffer; diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java index 17f19586..349c5a88 100644 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java @@ -4,18 +4,18 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.client.Dazy; -import net.minecraft.client.model.SpriteGetter; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.util.SpriteIdentifier; +import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.texture.SpriteIdentifier; // TODO: verify Mojang name -public class DashSprite implements DashObject { +public class DashSprite implements DashObject { public final int id; public DashSprite(int id) { this.id = id; } - public DashSprite(Sprite sprite, RegistryWriter writer) { + public DashSprite(TextureAtlasSprite sprite, RegistryWriter writer) { this.id = writer.add(new SpriteIdentifier(sprite.getAtlasId(), sprite.getContents().getId())); } @@ -39,7 +39,7 @@ public int hashCode() { return id; } - public static class DazyImpl extends Dazy { + public static class DazyImpl extends Dazy { public final SpriteIdentifier location; public DazyImpl(SpriteIdentifier location) { @@ -47,7 +47,7 @@ public DazyImpl(SpriteIdentifier location) { } @Override - protected Sprite resolve(SpriteGetter spriteLoader) { + protected TextureAtlasSprite resolve(Function /* TODO: verify replacement */ spriteLoader) { return spriteLoader.get(location); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java index 550516a4..3ac2ade1 100644 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java @@ -2,7 +2,7 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.mixin.accessor.SpriteAnimationAccessor; -import net.minecraft.client.texture.SpriteContents; +import net.minecraft.client.renderer.texture.SpriteContents; import java.util.ArrayList; import java.util.List; @@ -21,7 +21,7 @@ public DashSpriteAnimation( this.interpolation = interpolation; } - public DashSpriteAnimation(SpriteContents.Animation animation) { + public DashSpriteAnimation(SpriteContents.AnimatedTexture animation) { SpriteAnimationAccessor access = ((SpriteAnimationAccessor) animation); this.frames = new ArrayList<>(); for (var frame : access.getFrames()) { @@ -31,8 +31,8 @@ public DashSpriteAnimation(SpriteContents.Animation animation) { this.interpolation = access.getInterpolation(); } - public SpriteContents.Animation export(SpriteContents owner, RegistryReader registry) { - var framesOut = new ArrayList(); + public SpriteContents.AnimatedTexture export(SpriteContents owner, RegistryReader registry) { + var framesOut = new ArrayList(); for (var frame : this.frames) { framesOut.add(frame.export(registry)); } diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java index 63503be2..78e61145 100644 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java @@ -3,9 +3,9 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.mixin.accessor.SpriteAnimationFrameAccessor; -import net.minecraft.client.texture.SpriteContents; +import net.minecraft.client.renderer.texture.SpriteContents; -public final class DashSpriteAnimationFrame implements DashObject { +public final class DashSpriteAnimationFrame implements DashObject { public final int index; public final int time; @@ -14,13 +14,13 @@ public DashSpriteAnimationFrame(int index, int time) { this.time = time; } - public DashSpriteAnimationFrame(SpriteContents.AnimationFrame frame) { + public DashSpriteAnimationFrame(SpriteContents.FrameInfo frame) { this.index = frame.index(); this.time = frame.time(); } @Override - public SpriteContents.AnimationFrame export(RegistryReader exportHandler) { + public SpriteContents.FrameInfo export(RegistryReader exportHandler) { return SpriteAnimationFrameAccessor.newSpriteFrame(this.index, this.time); } diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java index 196260c6..716254c9 100644 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java @@ -6,8 +6,8 @@ import dev.notalpha.dashloader.misc.UnsafeHelper; import dev.notalpha.dashloader.mixin.accessor.SpriteContentsAccessor; import dev.notalpha.hyphen.scan.annotations.DataNullable; -import net.minecraft.client.texture.NativeImage; -import net.minecraft.client.texture.SpriteContents; +import com.mojang.blaze3d.platform.NativeImage; +import net.minecraft.client.renderer.texture.SpriteContents; import org.jetbrains.annotations.Nullable; import java.lang.reflect.Method; @@ -37,7 +37,7 @@ public DashSpriteContents(SpriteContents contents, RegistryWriter writer) { this.image = writer.add(access.getImage()); this.width = contents.getWidth(); this.height = contents.getHeight(); - SpriteContents.Animation animation = access.getAnimation(); + SpriteContents.AnimatedTexture animation = access.getAnimation(); this.animation = animation == null ? null : new DashSpriteAnimation(animation); } diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java index b3a2d766..49dba5ca 100644 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java @@ -10,14 +10,14 @@ import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.config.Option; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.texture.SpriteContents; -import net.minecraft.util.Identifier; +import net.minecraft.client.renderer.texture.SpriteContents; +import net.minecraft.resources.ResourceLocation; import java.util.HashMap; import java.util.Map; public class SpriteContentModule implements DashModule { - public final static CachingData> SOURCE = new CachingData<>(); + public final static CachingData> SOURCE = new CachingData<>(); @Override public void reset(Cache cache) { @@ -40,11 +40,11 @@ public Data save(RegistryWriter writer, StepTask task) { @Override public void load(Data data, RegistryReader reader, StepTask task) { - Map spriteData = SOURCE.get(CacheStatus.LOAD); + Map spriteData = SOURCE.get(CacheStatus.LOAD); assert spriteData != null; data.sprites.forEach((key, value) -> { - Identifier identifier = reader.get(key); + ResourceLocation identifier = reader.get(key); SpriteContents contents = reader.get(value); spriteData.put(identifier, contents); }); diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java index 94e0b5d2..668ed62a 100644 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java @@ -5,9 +5,9 @@ import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.taski.builtin.StepTask; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.texture.SpriteLoader; -import net.minecraft.util.Identifier; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.texture.SpriteLoader; // TODO: verify Mojang name +import net.minecraft.resources.ResourceLocation; import java.util.Map; import java.util.concurrent.CompletableFuture; @@ -41,7 +41,7 @@ public DashStitchResult(SpriteLoader.StitchResult stitchResult, RegistryWriter w } public SpriteLoader.StitchResult export(RegistryReader reader) { - Map regions = new Object2ObjectOpenHashMap<>(); + Map regions = new Object2ObjectOpenHashMap<>(); this.regions.forEach((key, value) -> regions.put(reader.get(key), reader.get(value))); return new SpriteLoader.StitchResult( diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java index 01a60e0e..9d45ab6b 100644 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java @@ -1,8 +1,8 @@ package dev.notalpha.dashloader.client.sprite.stitch; -import net.minecraft.client.texture.TextureStitcher; +import net.minecraft.client.renderer.texture.Stitcher; // TODO: verify Mojang name (Stitcher) -public class DashTextureSlot { +public class DashTextureSlot { public final int x; public final int y; public final int width; diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java index 94b5564c..fa40b0cf 100644 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java @@ -4,14 +4,14 @@ import dev.notalpha.dashloader.api.collection.IntObjectList; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.texture.TextureStitcher; -import net.minecraft.util.Identifier; +import net.minecraft.client.renderer.texture.Stitcher; // TODO: verify Mojang name (Stitcher) +import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.Map; -public class DashTextureStitcher extends TextureStitcher { +public class DashTextureStitcher extends Stitcher { @Nullable private ExportedData data; private int remainingSlots; @@ -49,7 +49,7 @@ public void add(T info) { var id = info.getId(); var slot = data.slots.get(id); if (slot == null) { - DashLoader.LOG.warn("Sprite {} was not cached last time.", id); + DashLoader.LOG.warn("TextureAtlasSprite {} was not cached last time.", id); doFallback(); // This was never added to the slot, so it would not get added to super. @@ -58,14 +58,14 @@ public void add(T info) { } if (slot.contents != null) { - DashLoader.LOG.warn("Sprite {} was added twice??", id); + DashLoader.LOG.warn("TextureAtlasSprite {} was added twice??", id); } remainingSlots -= 1; slot.contents = info; if (slot.width != info.getWidth() || slot.height != info.getHeight()) { - DashLoader.LOG.warn("Sprite {} had changed dimensions since last launch, falling back.", id); + DashLoader.LOG.warn("TextureAtlasSprite {} had changed dimensions since last launch, falling back.", id); doFallback(); } } @@ -91,7 +91,7 @@ public void stitch() { DashLoader.LOG.warn("Remaining slots did not match the cached amount, Falling back."); data.slots.forEach((identifier, tDashTextureSlot) -> { if (tDashTextureSlot.contents == null) { - DashLoader.LOG.error("Sprite {} was not requested", identifier); + DashLoader.LOG.error("TextureAtlasSprite {} was not requested", identifier); } }); doFallback(); @@ -111,7 +111,7 @@ public void getStitchedSprites(SpriteConsumer consumer) { } } - public static class Data { + public static class Data { public final IntObjectList> slots; public final int width; public final int height; @@ -122,7 +122,7 @@ public Data(IntObjectList> slots, int width, int height) { this.height = height; } - public Data(RegistryWriter factory, TextureStitcher stitcher) { + public Data(RegistryWriter factory, Stitcher stitcher) { this.slots = new IntObjectList<>(); stitcher.getStitchedSprites((info, x, y) -> this.slots.put(factory.add(info.getId()), new DashTextureSlot<>(x, y, info.getWidth(), info.getHeight()))); this.width = stitcher.getWidth(); @@ -130,7 +130,7 @@ public Data(RegistryWriter factory, TextureStitcher stitcher) { } public ExportedData export(RegistryReader reader) { - var output = new HashMap>(); + var output = new HashMap>(); this.slots.forEach((key, value) -> output.put(reader.get(key), value)); return new ExportedData<>( @@ -141,12 +141,12 @@ public ExportedData export(RegistryReader reader) { } } - public static class ExportedData { - public final Map> slots; + public static class ExportedData { + public final Map> slots; public final int width; public final int height; - public ExportedData(Map> slots, int width, int height) { + public ExportedData(Map> slots, int width, int height) { this.slots = slots; this.width = width; this.height = height; diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java index 6a01dfbe..19005d60 100644 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java @@ -11,15 +11,15 @@ import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.config.Option; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.texture.TextureStitcher; -import net.minecraft.util.Identifier; +import net.minecraft.client.renderer.texture.Stitcher; // TODO: verify Mojang name (Stitcher) +import net.minecraft.resources.ResourceLocation; import org.apache.commons.lang3.tuple.Pair; import java.util.*; public class SpriteStitcherModule implements DashModule { - public final static CachingData>>> STITCHERS_SAVE = new CachingData<>(CacheStatus.SAVE); - public final static CachingData>> STITCHERS_LOAD = new CachingData<>(CacheStatus.LOAD); + public final static CachingData>>> STITCHERS_SAVE = new CachingData<>(CacheStatus.SAVE); + public final static CachingData>> STITCHERS_LOAD = new CachingData<>(CacheStatus.LOAD); @Override public void reset(Cache cache) { @@ -31,8 +31,8 @@ public void reset(Cache cache) { public Data save(RegistryWriter writer, StepTask task) { task.reset(2); - var stitchers = new HashMap>(); - var duplicate = new HashSet(); + var stitchers = new HashMap>(); + var duplicate = new HashSet(); task.run(new StepTask("Caching Stitchers"), (stepTask) -> stepTask.doForEach(STITCHERS_SAVE.get(CacheStatus.SAVE), (pair) -> { var identifier = pair.getLeft(); var textureStitcher = pair.getRight(); @@ -65,7 +65,7 @@ public Data save(RegistryWriter writer, StepTask task) { @Override public void load(Data data, RegistryReader reader, StepTask task) { - var map = new HashMap>(); + var map = new HashMap>(); data.stitchers.forEach((key, value) -> map.put(reader.get(key), value.export(reader))); STITCHERS_LOAD.set(CacheStatus.LOAD, map); } diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java b/src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java index 31b4c9e6..2e6078d5 100644 --- a/src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java +++ b/src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java @@ -4,11 +4,11 @@ import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.config.Option; import dev.notalpha.dashloader.misc.TranslationHelper; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.gui.widget.TextWidget; -import net.minecraft.screen.ScreenTexts; -import net.minecraft.text.Text; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.components.StringWidget; +import net.minecraft.client.gui.components.CommonTexts; // TODO: verify Mojang name +import net.minecraft.network.chat.Component; import java.util.Arrays; import java.util.List; @@ -21,7 +21,7 @@ public class ConfigScreen extends Screen { private ConfigListWidget configWidget; public ConfigScreen(Screen parent) { - super(Text.of("Dashloader config")); + super(Component.of("Dashloader config")); this.parent = parent; } @@ -29,11 +29,11 @@ public ConfigScreen(Screen parent) { public void init() { initConfigWidget(); - this.addDrawable(new TextWidget(0, 10, this.width, this.textRenderer.fontHeight / 2, Text.of(translations.get("config.title")), this.textRenderer)); + this.addDrawable(new StringWidget(0, 10, this.width, this.textRenderer.fontHeight / 2, Component.of(translations.get("config.title")), this.textRenderer)); this.addDrawableChild(configWidget).update(); - this.addDrawableChild(ButtonWidget.builder(ScreenTexts.CANCEL, button -> this.client.setScreen(this.parent)).dimensions(this.width / 2 - 154, this.height - 28, 150, 20).build()); - this.addDrawableChild(ButtonWidget.builder(ScreenTexts.DONE, button -> { + this.addDrawableChild(Button.builder(CommonTexts.CANCEL, button -> this.client.setScreen(this.parent)).dimensions(this.width / 2 - 154, this.height - 28, 150, 20).build()); + this.addDrawableChild(Button.builder(CommonTexts.DONE, button -> { this.saveConfig(); this.client.setScreen(this.parent); }).dimensions(this.width / 2 + 4, this.height - 28, 150, 20).build()); diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java b/src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java index 2ea450f4..21d0e4b4 100644 --- a/src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java +++ b/src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java @@ -1,9 +1,9 @@ package dev.notalpha.dashloader.client.ui; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.text.Text; +import net.minecraft.client.gui.Font; // TODO: verify Mojang name (Font) +import net.minecraft.client.gui.GuiGraphics; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.network.chat.Component; import org.joml.Matrix4f; public class DrawerUtil { @@ -22,14 +22,14 @@ public class DrawerUtil { new Color(0xa9, 0xdc, 0x76) }; - public static void drawRect(DrawContext context, int x, int y, int width, int height, Color color) { + public static void drawRect(GuiGraphics context, int x, int y, int width, int height, Color color) { final int x2 = width + x; final int y2 = height + y; context.fill(x, y, x2, y2, color.argb()); } - public static void drawText(DrawContext context, TextRenderer textRenderer, int x, int y, String text, Color color) { - context.drawTextWithShadow(textRenderer, Text.of(text), x, y - (textRenderer.fontHeight), color.argb()); + public static void drawText(GuiGraphics context, Font textRenderer, int x, int y, String text, Color color) { + context.drawTextWithShadow(textRenderer, Component.of(text), x, y - (textRenderer.fontHeight), color.argb()); } private static void drawVertex(Matrix4f m4f, VertexConsumer c, float x, float y, Color color) { diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java index b16aa42d..2ddc2498 100644 --- a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java +++ b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java @@ -3,13 +3,13 @@ import dev.notalpha.dashloader.client.ui.Color; import dev.notalpha.dashloader.client.ui.DrawerUtil; import dev.notalpha.dashloader.misc.HahaManager; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.toast.Toast; -import net.minecraft.client.toast.ToastManager; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.gui.Font; // TODO: verify Mojang name (Font) +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.gui.components.toasts.Toast; +import net.minecraft.client.gui.components.toasts.ToastComponent; +import net.minecraft.util.Mth; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; import org.joml.Vector4f; @@ -59,7 +59,7 @@ public Visibility getVisibility() { } @Override - public void update(ToastManager manager, long time) { + public void update(ToastComponent manager, long time) { // Get progress if (state.getStatus() == DashToastStatus.CRASHED) { progress = (float) this.state.getProgress(); @@ -79,7 +79,7 @@ public void update(ToastManager manager, long time) { } @Override - public void draw(DrawContext context, TextRenderer textRenderer, long startTime) { + public void draw(GuiGraphics context, Font textRenderer, long startTime) { final int width = this.getWidth(); final int height = this.getHeight(); final int barY = height - PROGRESS_BAR_HEIGHT; @@ -143,9 +143,9 @@ public void draw(DrawContext context, TextRenderer textRenderer, long startTime) context.disableScissor(); } - private void drawRaw(DrawContext context, BiConsumer consumer) { + private void drawRaw(GuiGraphics context, BiConsumer consumer) { var matrix = context.getMatrices().peek().getPositionMatrix(); - var vertexConsumer = context.vertexConsumers.getBuffer(RenderLayer.getGui()); + var vertexConsumer = context.vertexConsumers.getBuffer(RenderType.getGui()); consumer.accept(matrix, vertexConsumer); } @@ -245,7 +245,7 @@ public Color getColor(double progress) { case Crashed -> DrawerUtil.FAILED_COLOR; }; - return DrawerUtil.withOpacity(color, MathHelper.clamp(((this.x) / (this.width)), 0.0f, 1.0f)); + return DrawerUtil.withOpacity(color, Mth.clamp(((this.x) / (this.width)), 0.0f, 1.0f)); } public float getWeight() { diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java index 57bb7fc8..279812bd 100644 --- a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java +++ b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java @@ -6,7 +6,7 @@ import dev.notalpha.taski.Task; import dev.notalpha.taski.builtin.AbstractTask; import dev.notalpha.taski.builtin.StaticTask; -import net.minecraft.client.MinecraftClient; +import net.minecraft.client.Minecraft; public final class DashToastState { private final TranslationHelper translations; @@ -18,7 +18,7 @@ public final class DashToastState { private long timeDone = System.currentTimeMillis(); public DashToastState() { - var langCode = MinecraftClient.getInstance().getLanguageManager().getLanguage(); + var langCode = Minecraft.getInstance().getLanguageManager().getLanguage(); DashLoader.LOG.info(langCode); this.translations = TranslationHelper.getInstance(); } diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java b/src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java index 22b7ba2b..0c8d53be 100644 --- a/src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java +++ b/src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java @@ -4,14 +4,14 @@ import it.unimi.dsi.fastutil.booleans.BooleanConsumer; import it.unimi.dsi.fastutil.chars.CharPredicate; import it.unimi.dsi.fastutil.ints.IntConsumer; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.Element; -import net.minecraft.client.gui.Selectable; -import net.minecraft.client.gui.tooltip.Tooltip; -import net.minecraft.client.gui.widget.*; -import net.minecraft.screen.ScreenTexts; -import net.minecraft.text.Text; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.events.GuiEventListener; +import net.minecraft.client.gui.narration.NarratableEntry; +import net.minecraft.client.gui.components.Tooltip; +import net.minecraft.client.gui.components.*; // TODO: verify Mojang package for widget.* +import net.minecraft.client.gui.components.CommonTexts; // TODO: verify Mojang name +import net.minecraft.network.chat.Component; import java.util.List; import java.util.Objects; @@ -22,7 +22,7 @@ public class ConfigListWidget extends ElementListWidget public static final int RESET_BUTTON_WIDTH = 50; private final TranslationHelper translations = TranslationHelper.getInstance(); - public ConfigListWidget(MinecraftClient minecraftClient, int i, int j, int k, int l) { + public ConfigListWidget(Minecraft minecraftClient, int i, int j, int k, int l) { super(minecraftClient, i, j, k, l); } @@ -69,10 +69,10 @@ public void update() { } abstract class Entry extends ElementListWidget.Entry { - public Text label; + public Component label; Entry(String label) { - this.label = Text.of(translations.get(label)); + this.label = Component.of(translations.get(label)); } void update() { @@ -85,7 +85,7 @@ class CategoryEntry extends Entry { } @Override - public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + public void render(GuiGraphics context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { final var textRenderer = ConfigListWidget.this.client.textRenderer; context.drawText( textRenderer, @@ -109,10 +109,10 @@ public List children() { } abstract class ConfigEntry extends Entry { - static final Text RESET_TEXT = Text.translatable("controls.reset"); + static final Component RESET_TEXT = Component.translatable("controls.reset"); protected final T defaultValue; public ClickableWidget widget; - public ButtonWidget resetButton; + public Button resetButton; protected T value; protected Tooltip tooltip; protected Consumer saveFunc; @@ -123,10 +123,10 @@ abstract class ConfigEntry extends Entry { this.defaultValue = defaultValue; this.saveFunc = saveCallback; if (translations.has(label + ".tooltip")) { - this.tooltip = Tooltip.of(Text.of(translations.get(label + ".tooltip"))); + this.tooltip = Tooltip.of(Component.of(translations.get(label + ".tooltip"))); } - this.resetButton = new ButtonWidget.Builder(RESET_TEXT, button -> { + this.resetButton = new Button.Builder(RESET_TEXT, button -> { this.value = this.defaultValue; this.updateWidgetText(); ConfigListWidget.this.update(); @@ -134,7 +134,7 @@ abstract class ConfigEntry extends Entry { } @Override - public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { + public void render(GuiGraphics context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { context.drawText( ConfigListWidget.this.client.textRenderer, this.label, @@ -180,7 +180,7 @@ class BoolConfigEntry extends ConfigEntry { BoolConfigEntry(String label, boolean value, boolean defaultValue, BooleanConsumer saveCallback) { super(label, value, defaultValue, saveCallback); - this.widget = new ButtonWidget.Builder(ScreenTexts.onOrOff(this.value), button -> { + this.widget = new Button.Builder(CommonTexts.onOrOff(this.value), button -> { this.value = !(boolean) this.value; updateWidgetText(); ConfigListWidget.this.update(); @@ -191,7 +191,7 @@ class BoolConfigEntry extends ConfigEntry { @Override void updateWidgetText() { - this.widget.setMessage(ScreenTexts.onOrOff(this.value)); + this.widget.setMessage(CommonTexts.onOrOff(this.value)); } } @@ -204,7 +204,7 @@ class IntSliderConfigEntry extends ConfigEntry { this.min = min; this.max = max; - this.widget = new Slider(0, 0, INPUT_FIELD_WIDTH, ConfigListWidget.this.itemHeight, Text.of(String.valueOf(value)), min, max, (double) (this.value - min) / (max - min)); + this.widget = new Slider(0, 0, INPUT_FIELD_WIDTH, ConfigListWidget.this.itemHeight, Component.of(String.valueOf(value)), min, max, (double) (this.value - min) / (max - min)); this.widget.setTooltip(this.tooltip); } @@ -217,7 +217,7 @@ public class Slider extends SliderWidget { private final double min; private final double max; - public Slider(int x, int y, int width, int height, Text message, double min, double max, double value) { + public Slider(int x, int y, int width, int height, Component message, double min, double max, double value) { super(x, y, width, height, message, value); this.min = min; this.max = max; @@ -225,7 +225,7 @@ public Slider(int x, int y, int width, int height, Text message, double min, dou @Override protected void updateMessage() { - this.setMessage(Text.of(String.valueOf((int) this.getValue()))); + this.setMessage(Component.of(String.valueOf((int) this.getValue()))); } @Override @@ -253,7 +253,7 @@ class TextFieldEntry extends ConfigEntry { super(label, value, defaultValue, saveCallback); this.filter = filter; - var textWidget = new TextFieldWidget(ConfigListWidget.this.client.textRenderer, 0, 0, INPUT_FIELD_WIDTH, 20, Text.empty()) { + var textWidget = new TextFieldWidget(ConfigListWidget.this.client.textRenderer, 0, 0, INPUT_FIELD_WIDTH, 20, Component.empty()) { @Override public boolean charTyped(char chr, int modifiers) { if (TextFieldEntry.this.filter.test(chr)) { diff --git a/src/main/java/dev/notalpha/dashloader/config/Option.java b/src/main/java/dev/notalpha/dashloader/config/Option.java index 5b9b36e9..8a849843 100644 --- a/src/main/java/dev/notalpha/dashloader/config/Option.java +++ b/src/main/java/dev/notalpha/dashloader/config/Option.java @@ -11,7 +11,7 @@ public enum Option { FAST_MODEL_IDENTIFIER_EQUALS("misc.ModelIdentifierMixin"), // Use a much faster .equals() on ModelIdentifiers FAST_WALL_BLOCK("WallBlockMixin"), // Caches the two most common blockstates for wall blocks - UNSAFE_MIPMAP_GENERATION("misc.MipmapHelper"); // Speeds up get/set pixel operations when generating mipmaps by skipping redundant safety checks + UNSAFE_MIPMAP_GENERATION("misc.MipmapGenerator"); // Speeds up get/set pixel operations when generating mipmaps by skipping redundant safety checks public final String mixinContains; diff --git a/src/main/java/dev/notalpha/dashloader/io/Serializer.java b/src/main/java/dev/notalpha/dashloader/io/Serializer.java index cc4bd217..e5708dcd 100644 --- a/src/main/java/dev/notalpha/dashloader/io/Serializer.java +++ b/src/main/java/dev/notalpha/dashloader/io/Serializer.java @@ -9,7 +9,7 @@ import dev.notalpha.hyphen.io.ByteBufferIO; import dev.notalpha.hyphen.scan.annotations.DataSubclasses; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.font.UnihexFont; +import net.minecraft.client.gui.font.providers.UnihexProvider; // TODO: verify Mojang name import org.jetbrains.annotations.NotNull; import java.io.IOException; diff --git a/src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java b/src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java index b6e9af3c..e94cb401 100644 --- a/src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java +++ b/src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.misc; -import net.minecraft.client.texture.NativeImage; +import com.mojang.blaze3d.platform.NativeImage; import org.apache.commons.lang3.builder.MultilineRecursiveToStringStyle; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; diff --git a/src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java b/src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java index 55433774..2c543c4a 100644 --- a/src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java +++ b/src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java @@ -1,7 +1,7 @@ package dev.notalpha.dashloader.misc; -import net.minecraft.client.MinecraftClient; -import net.minecraft.util.Language; +import net.minecraft.client.Minecraft; +import net.minecraft.locale.Language; import java.util.HashMap; import java.util.Objects; @@ -16,7 +16,7 @@ private TranslationHelper() { } public static TranslationHelper getInstance() { - var langCode = MinecraftClient.getInstance().getLanguageManager().getLanguage(); + var langCode = Minecraft.getInstance().getLanguageManager().getLanguage(); if (!Objects.equals(INSTANCE.langCode, langCode)) { INSTANCE.langCode = langCode; INSTANCE.loadLang(langCode); diff --git a/src/main/java/dev/notalpha/dashloader/misc/UnsafeImage.java b/src/main/java/dev/notalpha/dashloader/misc/UnsafeImage.java index edd854df..6ced1d2c 100644 --- a/src/main/java/dev/notalpha/dashloader/misc/UnsafeImage.java +++ b/src/main/java/dev/notalpha/dashloader/misc/UnsafeImage.java @@ -1,7 +1,7 @@ package dev.notalpha.dashloader.misc; import dev.notalpha.dashloader.mixin.accessor.NativeImageAccessor; -import net.minecraft.client.texture.NativeImage; +import com.mojang.blaze3d.platform.NativeImage; import org.lwjgl.system.MemoryUtil; public final class UnsafeImage { diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java index 5d347906..ea87e42c 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java @@ -1,7 +1,7 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.render.model.json.AndMultipartModelSelector; -import net.minecraft.client.render.model.json.MultipartModelSelector; +import net.minecraft.client.renderer.block.model.multipart.AndCondition; +import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java index 4da6647c..b752a93d 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java @@ -1,12 +1,12 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.render.model.BasicBakedModel; -import net.minecraft.client.render.model.json.ModelTransformation; -import net.minecraft.client.texture.Sprite; +import net.minecraft.client.renderer.block.model.SimpleBakedModel; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(BasicBakedModel.class) +@Mixin(SimpleBakedModel.class) public interface BasicBakedModelAccessor { @Accessor boolean getUsesAo(); @@ -18,8 +18,8 @@ public interface BasicBakedModelAccessor { boolean getIsSideLit(); @Accessor - Sprite getSprite(); + TextureAtlasSprite getSprite(); @Accessor - ModelTransformation getTransformation(); + ItemTransforms getTransformation(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java index 6d19242c..4781441b 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java @@ -1,8 +1,8 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.font.BitmapFont; -import net.minecraft.client.font.GlyphContainer; -import net.minecraft.client.texture.NativeImage; +import net.minecraft.client.gui.font.providers.BitmapProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name +import com.mojang.blaze3d.platform.NativeImage; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java index 9c89bee1..8d9bb7f6 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java @@ -1,7 +1,7 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.font.BitmapFont; -import net.minecraft.client.texture.NativeImage; +import net.minecraft.client.gui.font.providers.BitmapProvider; // TODO: verify Mojang name +import com.mojang.blaze3d.platform.NativeImage; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java index 2e5ae442..cab6d21f 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.font.FontFilterType; +import net.minecraft.client.gui.font.FontSet; // TODO: verify Mojang name (FontFilterType) import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java index 0d8cad43..c2352b0c 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java @@ -1,8 +1,8 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.font.Font; -import net.minecraft.client.font.FontManager; -import net.minecraft.util.Identifier; +import net.minecraft.client.gui.font.GlyphProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.FontManager; // TODO: verify Mojang name +import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; @@ -12,7 +12,7 @@ @Mixin(FontManager.ProviderIndex.class) public interface FontManagerProviderIndexAccessor { @Invoker("") - static FontManager.ProviderIndex create(Map> providers, List allProviders) { + static FontManager.ProviderIndex create(Map> providers, List allProviders) { throw new AssertionError(); } } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java index 0e54eb9f..bf8d5330 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gl.GlUniform; +import net.minecraft.client.gl.GlUniform; // TODO: verify Mojang name (was GlUniform) import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/IdentifierAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/IdentifierAccessor.java index d4e98632..9e2a87a6 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/IdentifierAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/IdentifierAccessor.java @@ -1,13 +1,13 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.util.Identifier; +import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(Identifier.class) +@Mixin(ResourceLocation.class) public interface IdentifierAccessor { @Invoker("") - static Identifier init(String namespace, String path) { + static ResourceLocation init(String namespace, String path) { throw new AssertionError(); } } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java index a84feaed..1a75b2f5 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java @@ -1,11 +1,11 @@ package dev.notalpha.dashloader.mixin.accessor; import dev.notalpha.hyphen.thr.HyphenException; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.model.BlockStatesLoader; -import net.minecraft.state.StateManager; -import net.minecraft.util.Identifier; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.block.model.BlockStatesLoader; // TODO: verify Mojang name +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -14,12 +14,12 @@ @Mixin(BlockStatesLoader.class) public interface ModelLoaderAccessor { @Accessor("ITEM_FRAME_STATE_MANAGER") - static StateManager getTheItemFrameThing() { + static StateDefinition getTheItemFrameThing() { throw new HyphenException("froge", "your dad"); } @Accessor("STATIC_DEFINITIONS") - static Map> getStaticDefinitions() { + static Map> getStaticDefinitions() { throw new HyphenException("froge", "your dad"); } } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java index 5f1ceebb..896cf455 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java @@ -1,7 +1,7 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.model.MultipartBakedModel; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.block.model.MultiPartBakedModel; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; @@ -10,10 +10,10 @@ import java.util.List; import java.util.Map; -@Mixin(MultipartBakedModel.class) +@Mixin(MultiPartBakedModel.class) public interface MultipartBakedModelAccessor { @Accessor - List getSelectors(); + List getSelectors(); @Accessor Map getStateCache(); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java index 3893b3a4..fc15d7bf 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java @@ -1,7 +1,7 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.render.model.json.MultipartModelComponent; -import net.minecraft.client.render.model.json.MultipartModelSelector; +import net.minecraft.client.renderer.block.model.multipart.Selector; +import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java index 7a1cc013..8501009e 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.texture.NativeImage; +import com.mojang.blaze3d.platform.NativeImage; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java index 73f042eb..28df4a8f 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java @@ -1,7 +1,7 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.render.model.json.MultipartModelSelector; -import net.minecraft.client.render.model.json.OrMultipartModelSelector; +import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.client.renderer.block.model.multipart.OrCondition; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java index 9bb4751c..3379f341 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java @@ -2,9 +2,9 @@ import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2IntMap; -import net.minecraft.client.gl.GlUniform; -import net.minecraft.client.gl.ShaderProgram; -import net.minecraft.client.gl.ShaderProgramDefinition; +import net.minecraft.client.gl.GlUniform; // TODO: verify Mojang name (was GlUniform) +import net.minecraft.client.gl.ShaderProgram; // TODO: verify Mojang name (ShaderProgram) +import net.minecraft.client.gl.ShaderProgramDefinition; // TODO: verify Mojang name import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java index 1b906e07..850120ce 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.render.model.json.SimpleMultipartModelSelector; +import net.minecraft.client.renderer.block.model.multipart.KeyValueCondition; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java index 1961b7b7..5177e046 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java @@ -1,21 +1,21 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.texture.SpriteContents; +import net.minecraft.client.renderer.texture.SpriteContents; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; import java.util.List; -@Mixin(SpriteContents.Animation.class) +@Mixin(SpriteContents.AnimatedTexture.class) public interface SpriteAnimationAccessor { @Invoker("") - static SpriteContents.Animation init(SpriteContents parent, List frames, int frameCount, boolean interpolation) { + static SpriteContents.AnimatedTexture init(SpriteContents parent, List frames, int frameCount, boolean interpolation) { throw new AssertionError(); } @Accessor - List getFrames(); + List getFrames(); @Accessor int getFrameCount(); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java index 6d0e11c6..e14ffd09 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java @@ -1,14 +1,14 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.texture.SpriteContents; +import net.minecraft.client.renderer.texture.SpriteContents; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(SpriteContents.AnimationFrame.class) +@Mixin(SpriteContents.FrameInfo.class) public interface SpriteAnimationFrameAccessor { @Invoker("") - static SpriteContents.AnimationFrame newSpriteFrame(int index, int time) { + static SpriteContents.FrameInfo newSpriteFrame(int index, int time) { throw new AssertionError(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java index a0d96ed9..51035e55 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java @@ -1,9 +1,9 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.texture.NativeImage; -import net.minecraft.client.texture.SpriteContents; -import net.minecraft.resource.metadata.ResourceMetadata; -import net.minecraft.util.Identifier; +import com.mojang.blaze3d.platform.NativeImage; +import net.minecraft.client.renderer.texture.SpriteContents; +import net.minecraft.server.packs.metadata.MetadataSectionSerializer; // TODO: verify Mojang name (ResourceMetadata) +import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; @@ -18,11 +18,11 @@ public interface SpriteContentsAccessor { void setImage(NativeImage image); @Accessor - SpriteContents.Animation getAnimation(); + SpriteContents.AnimatedTexture getAnimation(); @Accessor @Mutable - void setAnimation(SpriteContents.Animation animation); + void setAnimation(SpriteContents.AnimatedTexture animation); @Accessor @Mutable @@ -30,7 +30,7 @@ public interface SpriteContentsAccessor { @Accessor @Mutable - void setId(Identifier id); + void setId(ResourceLocation id); @Accessor @Mutable diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java index 99f47b3c..6c680c69 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java @@ -1,7 +1,7 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.font.GlyphContainer; -import net.minecraft.client.font.TrueTypeFont; +import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name +import net.minecraft.client.gui.font.providers.TrueTypeGlyphProviderBuilder; // TODO: verify Mojang name import org.lwjgl.util.freetype.FT_Face; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java index 2d4b027b..825dd71a 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java @@ -1,7 +1,7 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.font.GlyphContainer; -import net.minecraft.client.font.UnihexFont; +import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name +import net.minecraft.client.gui.font.providers.UnihexProvider; // TODO: verify Mojang name import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java index 022df755..69f56540 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java @@ -1,8 +1,8 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.WeightedBakedModel; -import net.minecraft.util.collection.DataPool; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.block.model.WeightedBakedModel; // TODO: verify Mojang name +import net.minecraft.util.random.WeightedRandomList; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java index b7a348de..fc849c50 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java @@ -1,11 +1,11 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.resource.ZipResourcePack; +import net.minecraft.server.packs.FilePackResources; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(ZipResourcePack.class) +@Mixin(FilePackResources.class) public interface ZipResourcePackAccessor { @Accessor - ZipResourcePack.ZipFileWrapper getZipFile(); + FilePackResources.ZipFileWrapper getZipFile(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java index 027d8077..bde43dc5 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java @@ -1,12 +1,12 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.resource.ZipResourcePack; +import net.minecraft.server.packs.FilePackResources; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import java.io.File; -@Mixin(ZipResourcePack.ZipFileWrapper.class) +@Mixin(FilePackResources.ZipFileWrapper.class) public interface ZipWrapperResourcePackAccessor { @Accessor File getFile(); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java index 090d44ad..5596cc8e 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java @@ -2,7 +2,7 @@ import dev.notalpha.dashloader.DashLoader; import dev.notalpha.dashloader.misc.ProfilerUtil; -import net.minecraft.Bootstrap; +import net.minecraft.server.Bootstrap; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java index 86f981a4..48e6a872 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java @@ -3,7 +3,7 @@ import dev.notalpha.dashloader.DashLoader; import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.DashLoaderClient; -import net.minecraft.client.Keyboard; +import net.minecraft.client.KeyboardHandler; import org.lwjgl.glfw.GLFW; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -15,7 +15,7 @@ /** * Makes f3 + t reset the cache. Also makes shift + f3 + t not reset it. */ -@Mixin(Keyboard.class) +@Mixin(KeyboardHandler.class) public class KeyboardMixin { @Unique private boolean shiftHeld = false; @@ -24,7 +24,7 @@ public class KeyboardMixin { method = "processF3", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/MinecraftClient;reloadResources()Ljava/util/concurrent/CompletableFuture;", + target = "Lnet/minecraft/client/Minecraft;reloadResources()Ljava/util/concurrent/CompletableFuture;", shift = At.Shift.BEFORE ) ) diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java index e43178c8..655b1474 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java @@ -2,7 +2,7 @@ import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.DashLoaderClient; -import net.minecraft.client.MinecraftClient; +import net.minecraft.client.Minecraft; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -11,19 +11,19 @@ import java.util.concurrent.CompletableFuture; -@Mixin(MinecraftClient.class) +@Mixin(Minecraft.class) public abstract class MinecraftClientMixin { @Shadow protected abstract void render(boolean tick); @Inject(method = "reloadResources()Ljava/util/concurrent/CompletableFuture;", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;reloadResources(ZLnet/minecraft/client/MinecraftClient$LoadingContext;)Ljava/util/concurrent/CompletableFuture;")) + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;reloadResources(ZLnet/minecraft/client/Minecraft$LoadingContext;)Ljava/util/concurrent/CompletableFuture;")) private void requestReload(CallbackInfoReturnable> cir) { DashLoaderClient.NEEDS_RELOAD = true; } - @Inject(method = "reloadResources(ZLnet/minecraft/client/MinecraftClient$LoadingContext;)Ljava/util/concurrent/CompletableFuture;", at = @At(value = "RETURN")) - private void reloadComplete(boolean force, MinecraftClient.LoadingContext loadingContext, CallbackInfoReturnable> cir) { + @Inject(method = "reloadResources(ZLnet/minecraft/client/Minecraft$LoadingContext;)Ljava/util/concurrent/CompletableFuture;", at = @At(value = "RETURN")) + private void reloadComplete(boolean force, Minecraft.LoadingContext loadingContext, CallbackInfoReturnable> cir) { cir.getReturnValue().thenRun(() -> { // If the state is SAVE, then this will reset before the caching process can initialize from the splash screen. if (DashLoaderClient.CACHE.getStatus() != CacheStatus.SAVE) { diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java index eb0bb9da..2339525d 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java @@ -5,8 +5,8 @@ import dev.notalpha.dashloader.misc.ProfilerUtil; import dev.notalpha.dashloader.mixin.accessor.ZipResourcePackAccessor; import dev.notalpha.dashloader.mixin.accessor.ZipWrapperResourcePackAccessor; -import net.minecraft.client.MinecraftClient; -import net.minecraft.resource.*; +import net.minecraft.client.Minecraft; +import net.minecraft.server.packs.resources.*; import net.minecraft.util.Unit; import org.apache.commons.codec.digest.DigestUtils; import org.spongepowered.asm.mixin.Mixin; @@ -25,15 +25,15 @@ public class ReloadableResourceManagerImplMixin { @Inject(method = "reload", at = @At(value = "RETURN", shift = At.Shift.BEFORE)) - private void reloadDash(Executor prepareExecutor, Executor applyExecutor, CompletableFuture initialStage, List packs, CallbackInfoReturnable cir) { + private void reloadDash(Executor prepareExecutor, Executor applyExecutor, CompletableFuture initialStage, List packs, CallbackInfoReturnable cir) { ProfilerUtil.RELOAD_START = System.currentTimeMillis(); - ResourcePackManager manager = MinecraftClient.getInstance().getResourcePackManager(); + ResourcePackManager manager = Minecraft.getInstance().getResourcePackManager(); List values = new ArrayList<>(); // Use server resource pack display name to differentiate them across each-other for (ResourcePack pack : packs) { if (Objects.equals(pack.getId(), "server")) { - if (pack instanceof ZipResourcePack zipResourcePack) { + if (pack instanceof FilePackResources zipResourcePack) { ZipResourcePackAccessor zipPack = (ZipResourcePackAccessor) zipResourcePack; Path path = ((ZipWrapperResourcePackAccessor) zipPack.getZipFile()).getFile().toPath(); values.add(path.toString()); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java index 0b4d405e..011214da 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java @@ -10,12 +10,12 @@ import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.misc.ProfilerUtil; import dev.notalpha.taski.builtin.StaticTask; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.SplashOverlay; -import net.minecraft.client.gui.screen.TitleScreen; -import net.minecraft.client.toast.Toast; -import net.minecraft.resource.ResourceReload; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.SplashScreen; +import net.minecraft.client.gui.screens.TitleScreen; +import net.minecraft.client.gui.components.toasts.Toast; +import net.minecraft.server.packs.resources.PreparableReloadListener; // TODO: verify Mojang name (ResourceReload) import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; @@ -24,16 +24,16 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(value = SplashOverlay.class, priority = 69420) +@Mixin(value = SplashScreen.class, priority = 69420) public class SplashScreenMixin { @Shadow @Final - private MinecraftClient client; + private Minecraft client; @Shadow private long reloadCompleteTime; @Shadow @Final - private ResourceReload reload; + private PreparableReloadListener reload; // TODO: verify Mojang name @Mutable @Shadow @Final @@ -43,7 +43,7 @@ public class SplashScreenMixin { method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J", shift = At.Shift.BEFORE, ordinal = 1) ) - private void done(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + private void done(GuiGraphics context, int mouseX, int mouseY, float delta, CallbackInfo ci) { this.client.setOverlay(null); if (this.client.currentScreen != null) { if (this.client.currentScreen instanceof TitleScreen) { @@ -95,9 +95,9 @@ private void done(DrawContext context, int mouseX, int mouseY, float delta, Call @Inject( method = "render", - at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/ResourceReload;isComplete()Z", shift = At.Shift.BEFORE) + at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/PreparableReloadListener;isComplete()Z // TODO: verify Mojang name", shift = At.Shift.BEFORE) ) - private void removeMinimumTime(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + private void removeMinimumTime(GuiGraphics context, int mouseX, int mouseY, float delta, CallbackInfo ci) { if (this.reloadCompleteTime == -1L && this.reload.isComplete()) { this.reloading = false; } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java index ed86d5ce..5c26ccfa 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java @@ -1,14 +1,14 @@ package dev.notalpha.dashloader.mixin.option; import com.google.common.collect.ImmutableMap; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.WallBlock; -import net.minecraft.block.Waterloggable; -import net.minecraft.block.enums.WallShape; -import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.EnumProperty; -import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.WallBlock; +import net.minecraft.world.level.block.SimpleWaterloggedBlock; +import net.minecraft.world.level.block.state.properties.WallSide; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.phys.shapes.VoxelShape; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -20,24 +20,24 @@ import java.util.Map; @Mixin(WallBlock.class) -public abstract class WallBlockMixin extends Block implements Waterloggable { +public abstract class WallBlockMixin extends Block implements SimpleWaterloggedBlock { @Unique - private static final int LENGTH = WallShape.values().length; + private static final int LENGTH = WallSide.values().length; @Shadow @Final public static BooleanProperty UP; @Shadow @Final - public static EnumProperty EAST_SHAPE; + public static EnumProperty EAST_SHAPE; @Shadow @Final - public static EnumProperty NORTH_SHAPE; + public static EnumProperty NORTH_SHAPE; @Shadow @Final - public static EnumProperty WEST_SHAPE; + public static EnumProperty WEST_SHAPE; @Shadow @Final - public static EnumProperty SOUTH_SHAPE; + public static EnumProperty SOUTH_SHAPE; @Shadow @Final public static BooleanProperty WATERLOGGED; @@ -89,10 +89,10 @@ private ImmutableMap createFromCache(VoxelShape[][][][][ ImmutableMap.Builder builder = ImmutableMap.builder(); for (Boolean up : UP.getValues()) { VoxelShape[][][][] cache = up ? rawCache[1] : rawCache[0]; - for (WallShape east : EAST_SHAPE.getValues()) { - for (WallShape north : NORTH_SHAPE.getValues()) { - for (WallShape west : WEST_SHAPE.getValues()) { - for (WallShape south : SOUTH_SHAPE.getValues()) { + for (WallSide east : EAST_SHAPE.getValues()) { + for (WallSide north : NORTH_SHAPE.getValues()) { + for (WallSide west : WEST_SHAPE.getValues()) { + for (WallSide south : SOUTH_SHAPE.getValues()) { final VoxelShape cached = this.getCached(cache, east, north, west, south); BlockState blockState = this.getDefaultState() @@ -116,10 +116,10 @@ private ImmutableMap createFromCache(VoxelShape[][][][][ private void createCache(VoxelShape[][][][][] rawCache, Map map) { for (Boolean up : UP.getValues()) { VoxelShape[][][][] cache = up ? rawCache[1] : rawCache[0]; - for (WallShape east : EAST_SHAPE.getValues()) { - for (WallShape north : NORTH_SHAPE.getValues()) { - for (WallShape west : WEST_SHAPE.getValues()) { - for (WallShape south : SOUTH_SHAPE.getValues()) { + for (WallSide east : EAST_SHAPE.getValues()) { + for (WallSide north : NORTH_SHAPE.getValues()) { + for (WallSide west : WEST_SHAPE.getValues()) { + for (WallSide south : SOUTH_SHAPE.getValues()) { BlockState blockState = this.getDefaultState() .with(UP, up) @@ -155,12 +155,12 @@ private boolean isCommon(float f, float g, float i) { } @Unique - private VoxelShape getCached(VoxelShape[][][][] cache, WallShape east, WallShape north, WallShape west, WallShape south) { + private VoxelShape getCached(VoxelShape[][][][] cache, WallSide east, WallSide north, WallSide west, WallSide south) { return cache[east.ordinal()][north.ordinal()][west.ordinal()][south.ordinal()]; } @Unique - private void setCached(VoxelShape[][][][] cache, WallShape east, WallShape north, WallShape west, WallShape south, VoxelShape shape) { + private void setCached(VoxelShape[][][][] cache, WallSide east, WallSide north, WallSide west, WallSide south, VoxelShape shape) { cache[east.ordinal()][north.ordinal()][west.ordinal()][south.ordinal()] = shape; } } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java index d5dcd763..a82bcc2b 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java @@ -2,9 +2,9 @@ import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.splash.SplashModule; -import net.minecraft.client.resource.SplashTextResourceSupplier; -import net.minecraft.resource.ResourceManager; -import net.minecraft.util.profiler.Profiler; +import net.minecraft.client.resources.SplashManager; // TODO: verify Mojang name (SplashTextResourceSupplier) +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.util.profiling.ProfilerFiller; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -15,19 +15,19 @@ @Mixin(SplashTextResourceSupplier.class) public class SplashTextResourceSupplierMixin { @Inject( - method = "prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Ljava/util/List;", + method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiler/ProfilerFiller;)Ljava/util/List;", at = @At(value = "HEAD"), cancellable = true ) - private void applySplashCache(ResourceManager resourceManager, Profiler profiler, CallbackInfoReturnable> cir) { + private void applySplashCache(ResourceManager resourceManager, ProfilerFiller profiler, CallbackInfoReturnable> cir) { SplashModule.TEXTS.visit(CacheStatus.LOAD, cir::setReturnValue); } @Inject( - method = "prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Ljava/util/List;", + method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiler/ProfilerFiller;)Ljava/util/List;", at = @At(value = "RETURN") ) - private void stealSplashCache(ResourceManager resourceManager, Profiler profiler, CallbackInfoReturnable> cir) { + private void stealSplashCache(ResourceManager resourceManager, ProfilerFiller profiler, CallbackInfoReturnable> cir) { SplashModule.TEXTS.visit(CacheStatus.SAVE, strings -> { strings.clear(); strings.addAll(cir.getReturnValue()); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java index 9220f3d3..2a541e9e 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java @@ -6,8 +6,8 @@ import com.mojang.blaze3d.platform.GlStateManager; import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.atlas.AtlasModule; -import net.minecraft.client.texture.*; -import net.minecraft.util.Identifier; +import net.minecraft.client.renderer.texture.*; +import net.minecraft.resources.ResourceLocation; import org.apache.commons.codec.digest.DigestUtils; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -20,11 +20,11 @@ import java.nio.file.Files; import java.util.concurrent.ExecutionException; -@Mixin(SpriteAtlasTexture.class) +@Mixin(TextureAtlas.class) public abstract class SpriteAtlasTextureMixin extends AbstractTexture { @Final @Shadow - private Identifier id; + private ResourceLocation id; @Shadow private int mipLevel; @Shadow @@ -61,8 +61,8 @@ private void uploadCached(SpriteLoader.StitchResult stitchResult, CallbackInfo c }); } - @WrapWithCondition(method = "upload", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/Sprite;upload()V")) - private boolean shouldBuildAtlas(Sprite instance, @Share("cached") LocalRef cached) { + @WrapWithCondition(method = "upload", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;upload()V")) + private boolean shouldBuildAtlas(TextureAtlasSprite instance, @Share("cached") LocalRef cached) { return !cached.get(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java index f2b6e9f7..fdcc4b86 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java @@ -4,9 +4,9 @@ import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.font.FontModule; import dev.notalpha.dashloader.mixin.accessor.FontManagerProviderIndexAccessor; -import net.minecraft.client.font.FontManager; -import net.minecraft.resource.ResourceManager; -import net.minecraft.util.profiler.Profiler; +import net.minecraft.client.gui.font.FontManager; // TODO: verify Mojang name +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.util.profiling.ProfilerFiller; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -31,10 +31,10 @@ private void loadFonts(ResourceManager resourceManager, Executor executor, Callb } @Inject( - method = "reload(Lnet/minecraft/client/font/FontManager$ProviderIndex;Lnet/minecraft/util/profiler/Profiler;)V", + method = "reload(Lnet/minecraft/client/gui/font/FontManager$ProviderIndex;Lnet/minecraft/util/profiler/ProfilerFiller;)V", at = @At(value = "HEAD") ) - private void saveFonts(FontManager.ProviderIndex index, Profiler profiler, CallbackInfo ci) { + private void saveFonts(FontManager.ProviderIndex index, ProfilerFiller profiler, CallbackInfo ci) { if (FontModule.DATA.active(CacheStatus.SAVE)) { DashLoader.LOG.info("Saving fonts"); FontModule.DATA.set(CacheStatus.SAVE, new FontModule.ProviderIndex(index.fontSets(), index.allProviders())); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java index 430cda56..6b2ca759 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java @@ -4,10 +4,10 @@ import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.font.DashTrueTypeFont; import dev.notalpha.dashloader.client.font.FontModule; -import net.minecraft.client.font.Font; -import net.minecraft.client.font.TrueTypeFontLoader; -import net.minecraft.resource.ResourceManager; -import net.minecraft.util.Identifier; +import net.minecraft.client.gui.font.GlyphProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.providers.TrueTypeGlyphProviderBuilder; // TODO: verify Mojang name +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.resources.ResourceLocation; import org.lwjgl.util.freetype.FT_Face; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -15,20 +15,20 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(TrueTypeFontLoader.class) +@Mixin(TrueTypeFontLoader.class) // TODO: verify Mojang class name (was TrueTypeFontLoader) public abstract class TrueTypeFontLoaderMixin { @Shadow public abstract float size(); @Shadow - public abstract Identifier location(); + public abstract ResourceLocation location(); @Shadow public abstract String skip(); @Inject( method = "load", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/TrueTypeFont;(Ljava/nio/ByteBuffer;Lorg/lwjgl/util/freetype/FT_Face;FFFFLjava/lang/String;)V") + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/font/providers/TrueTypeGlyphProviderBuilder;(Ljava/nio/ByteBuffer;Lorg/lwjgl/util/freetype/FT_Face;FFFFLjava/lang/String;)V") ) private void loadInject(ResourceManager resourceManager, CallbackInfoReturnable cir, @Local FT_Face ft_face) { FontModule.FONT_TO_DATA.visit(CacheStatus.SAVE, map -> map.put(ft_face, new DashTrueTypeFont.FontPrams(location(), size(), skip()))); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java index 446fd3a6..45657a73 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java @@ -5,13 +5,13 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.model.ModelModule; -import net.minecraft.client.render.model.BakedModelManager; -import net.minecraft.client.render.model.ModelBaker; -import net.minecraft.client.render.model.UnbakedModel; -import net.minecraft.resource.Resource; -import net.minecraft.resource.ResourceFinder; -import net.minecraft.resource.ResourceManager; -import net.minecraft.util.Identifier; +import net.minecraft.client.renderer.block.model.BakedModelManager; // TODO: verify Mojang name +import net.minecraft.client.renderer.block.model.ModelBaker; // TODO: verify Mojang name +import net.minecraft.client.resources.model.UnbakedModel; // TODO: verify Mojang name +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceProvider; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -21,7 +21,7 @@ @Mixin(value = BakedModelManager.class, priority = 69420) public abstract class BakedModelManagerOverride { - @WrapOperation(method = "bake", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/model/ModelBaker;bake(Lnet/minecraft/client/render/model/ModelBaker$ErrorCollectingSpriteGetter;)Lnet/minecraft/client/render/model/ModelBaker$BakedModels;")) + @WrapOperation(method = "bake", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/model/ModelBaker; // TODO: verifybake(Lnet/minecraft/client/renderer/block/model/ModelBaker$ErrorCollectingSpriteGetter; // TODO: verify)Lnet/minecraft/client/renderer/block/model/ModelBaker$BakedModels; // TODO: verify")) private static ModelBaker.BakedModels yoinkBakedModels(ModelBaker instance, ModelBaker.ErrorCollectingSpriteGetter spriteGetter, Operation original) { var bakedModels = original.call(instance, spriteGetter); // ModelModule.ITEM_MODELS_SAVE.visit(CacheStatus.SAVE, map -> map.putAll(bakedModels.itemStackModels())); @@ -32,7 +32,7 @@ private static ModelBaker.BakedModels yoinkBakedModels(ModelBaker instance, Mode } @ModifyReturnValue(method = "method_45899", at = @At(value = "RETURN")) - private static CompletionStage injectModels(CompletionStage> original) { + private static CompletionStage injectModels(CompletionStage> original) { var models = ModelModule.MODEL_PARTS.get(CacheStatus.LOAD); if (models != null) { return original.thenApply(unbakedModels -> { @@ -47,11 +47,11 @@ private static CompletionStage injectModels(CompletionStage loadMissingModels(ResourceFinder instance, ResourceManager resourceManager, Operation> original) { + @WrapOperation(method = "method_62663", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/ResourceProvider;findResources(Lnet/minecraft/server/packs/resources/ResourceManager;)Ljava/util/Map;")) + private static Map loadMissingModels(ResourceProvider instance, ResourceManager resourceManager, Operation> original) { var modelIds = ModelModule.MISSING_MODEL_PARTS.get(CacheStatus.LOAD); if (modelIds != null) { - var out = new HashMap(modelIds.size()); + var out = new HashMap(modelIds.size()); modelIds.forEach(id -> resourceManager.getResource(id).ifPresent(resource -> out.put(id, resource))); return out; } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java index 0fc766cd..d71dedaf 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java @@ -3,9 +3,9 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.model.ModelModule; -import net.minecraft.client.render.model.BlockStatesLoader; -import net.minecraft.resource.Resource; -import net.minecraft.util.Identifier; +import net.minecraft.client.renderer.block.model.BlockStatesLoader; // TODO: verify Mojang name +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -22,7 +22,7 @@ private static BlockStatesLoader.BlockStateDefinition inject(BlockStatesLoader.B } @ModifyReturnValue(method = "method_65717", at = @At("TAIL")) - private static Map> loadMissing(Map> original) { + private static Map> loadMissing(Map> original) { ModelModule.MISSING_BLOCK_MODELS.visit(CacheStatus.LOAD, original.keySet()::retainAll); return original; } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java index a18a1989..a9275a75 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java @@ -2,9 +2,9 @@ import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.model.ModelModule; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.Baker; -import net.minecraft.client.render.model.MultipartUnbakedModel; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.block.model.Baker; // TODO: verify Mojang name +import net.minecraft.client.renderer.block.model.MultipartUnbakedModel; // TODO: verify Mojang name import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java index 02aa0bae..58ec988f 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java @@ -2,11 +2,11 @@ import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.model.ModelModule; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.model.MultipartUnbakedModel; -import net.minecraft.client.render.model.json.MultipartModelComponent; -import net.minecraft.state.StateManager; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.block.model.MultipartUnbakedModel; // TODO: verify Mojang name +import net.minecraft.client.renderer.block.model.multipart.Selector; +import net.minecraft.world.level.block.state.StateDefinition; import org.apache.commons.lang3.tuple.Pair; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -24,7 +24,7 @@ public abstract class MultipartUnbakedModelSerializedMixin { private List selectors; @Inject(method = "toModel", at = @At(value = "RETURN")) - private void thing(StateManager stateManager, CallbackInfoReturnable cir) { + private void thing(StateDefinition stateManager, CallbackInfoReturnable cir) { ModelModule.MULTIPART_PREDICATES.visit(CacheStatus.SAVE, map -> { map.put(cir.getReturnValue(), Pair.of(selectors, stateManager)); }); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java index ece38c06..b2e98ae0 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java @@ -7,12 +7,12 @@ import com.llamalad7.mixinextras.sugar.Local; import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.shader.ShaderModule; -import net.minecraft.client.gl.ShaderLoader; -import net.minecraft.client.gl.ShaderProgramDefinition; -import net.minecraft.resource.Resource; -import net.minecraft.resource.ResourceManager; -import net.minecraft.util.Identifier; -import net.minecraft.util.profiler.Profiler; +import net.minecraft.client.gl.ShaderLoader; // TODO: verify Mojang name +import net.minecraft.client.gl.ShaderProgramDefinition; // TODO: verify Mojang name +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.profiling.ProfilerFiller; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -22,13 +22,13 @@ @Mixin(ShaderLoader.class) public abstract class ShaderLoaderMixin { @WrapOperation( - method = "prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;", + method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiler/ProfilerFiller;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;", at = @At( value = "INVOKE", - target = "Lnet/minecraft/resource/ResourceManager;findResources(Ljava/lang/String;Ljava/util/function/Predicate;)Ljava/util/Map;" + target = "Lnet/minecraft/server/packs/resources/ResourceManager;findResources(Ljava/lang/String;Ljava/util/function/Predicate;)Ljava/util/Map;" ) ) - private Map skipCached(ResourceManager instance, String s, Predicate identifierPredicate, Operation> original, @Local(ordinal = 0) ImmutableMap.Builder builder, @Local(ordinal = 1) ImmutableMap.Builder builder2) { + private Map skipCached(ResourceManager instance, String s, Predicate identifierPredicate, Operation> original, @Local(ordinal = 0) ImmutableMap.Builder builder, @Local(ordinal = 1) ImmutableMap.Builder builder2) { var sources = ShaderModule.SHADER_SOURCES.get(CacheStatus.LOAD); var definitions = ShaderModule.SHADER_DEFINITIONS.get(CacheStatus.LOAD); if (sources != null && definitions != null) { @@ -41,13 +41,13 @@ private Map skipCached(ResourceManager instance, String s, } // @WrapOperation( -// method = "prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;", +// method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiler/ProfilerFiller;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;", // at = @At( // value = "INVOKE", -// target = "Lnet/minecraft/resource/ResourceFinder;findResources(Lnet/minecraft/resource/ResourceManager;)Ljava/util/Map;" +// target = "Lnet/minecraft/resource/ResourceProvider;findResources(Lnet/minecraft/server/packs/resources/ResourceManager;)Ljava/util/Map;" // ) // ) -// private Map thing(ResourceFinder instance, ResourceManager resourceManager, Operation> original, @Local(ordinal = 2) ImmutableMap.Builder builder3) { +// private Map thing(ResourceProvider instance, ResourceManager resourceManager, Operation> original, @Local(ordinal = 2) ImmutableMap.Builder builder3) { // var post = ShaderModule.POST_EFFECTS.get(CacheStatus.LOAD); // if (post != null) { // builder3.putAll(post); @@ -56,8 +56,8 @@ private Map skipCached(ResourceManager instance, String s, // return original.call(instance, resourceManager); // } - @WrapMethod(method = "prepare(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;") - private ShaderLoader.Definitions thing(ResourceManager resourceManager, Profiler profiler, Operation original) { + @WrapMethod(method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiler/ProfilerFiller;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;") + private ShaderLoader.Definitions thing(ResourceManager resourceManager, ProfilerFiller profiler, Operation original) { var og = original.call(resourceManager, profiler); ShaderModule.SHADER_SOURCES.visit(CacheStatus.SAVE, map -> map.putAll(og.shaderSources())); ShaderModule.SHADER_DEFINITIONS.visit(CacheStatus.SAVE, map -> map.putAll(og.programs())); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java index ffe04cd1..50c35450 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java @@ -3,12 +3,12 @@ import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.sprite.content.SpriteContentModule; import dev.notalpha.dashloader.mixin.accessor.SpriteContentsAccessor; -import net.minecraft.client.texture.SpriteContents; -import net.minecraft.client.texture.SpriteOpener; -import net.minecraft.resource.Resource; -import net.minecraft.resource.metadata.ResourceMetadata; -import net.minecraft.resource.metadata.ResourceMetadataSerializer; -import net.minecraft.util.Identifier; +import net.minecraft.client.renderer.texture.SpriteContents; +import net.minecraft.client.renderer.texture.SpriteOpener; // TODO: verify Mojang name +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.metadata.MetadataSectionSerializer; // TODO: verify Mojang name (ResourceMetadata) +import net.minecraft.server.packs.metadata.MetadataSectionSerializer; // TODO: verify Mojang name +import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -23,9 +23,9 @@ public interface SpriteOpenerMixin { method = "method_52851", cancellable = true, locals = LocalCapture.CAPTURE_FAILEXCEPTION, - at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/Resource;getInputStream()Ljava/io/InputStream;", shift = At.Shift.BEFORE) + at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/Resource;getInputStream()Ljava/io/InputStream;", shift = At.Shift.BEFORE) ) - private static void dashloaderLoad(Collection> metadatas, Identifier id, Resource resource, CallbackInfoReturnable cir, ResourceMetadata resourceMetadata) { + private static void dashloaderLoad(Collection> metadatas, ResourceLocation id, Resource resource, CallbackInfoReturnable cir, ResourceMetadata resourceMetadata) { var dashSpriteData = SpriteContentModule.SOURCE.get(CacheStatus.LOAD); if (dashSpriteData != null) { SpriteContents spriteContents = dashSpriteData.get(id); @@ -40,7 +40,7 @@ private static void dashloaderLoad(Collection> met method = "method_52851", at = @At(value = "RETURN") ) - private static void dashloaderSave(Collection collection, Identifier id, Resource resource, CallbackInfoReturnable cir) { + private static void dashloaderSave(Collection collection, ResourceLocation id, Resource resource, CallbackInfoReturnable cir) { var dashSpriteData = SpriteContentModule.SOURCE.get(CacheStatus.SAVE); if (dashSpriteData != null) { if (dashSpriteData.containsKey(id)) { // filter out sprites with the same id diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java index 91b479f2..c59064c1 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java @@ -5,10 +5,10 @@ import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.sprite.stitch.DashTextureStitcher; import dev.notalpha.dashloader.client.sprite.stitch.SpriteStitcherModule; -import net.minecraft.client.texture.SpriteContents; -import net.minecraft.client.texture.SpriteLoader; -import net.minecraft.client.texture.TextureStitcher; -import net.minecraft.util.Identifier; +import net.minecraft.client.renderer.texture.SpriteContents; +import net.minecraft.client.renderer.texture.SpriteLoader; // TODO: verify Mojang name +import net.minecraft.client.renderer.texture.Stitcher; // TODO: verify Mojang name (Stitcher) +import net.minecraft.resources.ResourceLocation; import org.apache.commons.lang3.tuple.Pair; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -25,13 +25,13 @@ public final class StitchSpriteLoaderMixin { @Shadow @Final - private Identifier id; + private ResourceLocation id; @WrapOperation( method = "stitch", - at = @At(value = "NEW", target = "(III)Lnet/minecraft/client/texture/TextureStitcher;") + at = @At(value = "NEW", target = "(III)Lnet/minecraft/client/renderer/texture/Stitcher;") ) - private TextureStitcher dashloaderStitcherLoad(int maxWidth, int maxHeight, int mipLevel, Operation> original) { + private Stitcher dashloaderStitcherLoad(int maxWidth, int maxHeight, int mipLevel, Operation> original) { var map = SpriteStitcherModule.STITCHERS_LOAD.get(CacheStatus.LOAD); if (map != null) { var data = map.get(id); @@ -48,7 +48,7 @@ private TextureStitcher dashloaderStitcherLoad(int maxWidth, int maxHeight, i at = @At(value = "RETURN"), locals = LocalCapture.CAPTURE_FAILSOFT ) - private void dashloaderStitcherSave(List sprites, int mipLevel, Executor executor, CallbackInfoReturnable cir, int i, TextureStitcher textureStitcher) { + private void dashloaderStitcherSave(List sprites, int mipLevel, Executor executor, CallbackInfoReturnable cir, int i, Stitcher textureStitcher) { SpriteStitcherModule.STITCHERS_SAVE.visit(CacheStatus.SAVE, map -> map.add(Pair.of(id, textureStitcher))); } } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java index d70ce5f3..ec83beb2 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.mixin.option.misc; -import net.minecraft.util.math.AffineTransformation; +import com.mojang.math.ItemTransform; import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -8,7 +8,7 @@ import java.util.Objects; -@Mixin(value = AffineTransformation.class, priority = 999) +@Mixin(value = Transformation.class, priority = 999) public class AffineTransformationMixin { @Shadow @Final diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/MipmapHelperMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/MipmapHelperMixin.java index 2d92f831..13c9c698 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/MipmapHelperMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/MipmapHelperMixin.java @@ -1,19 +1,19 @@ package dev.notalpha.dashloader.mixin.option.misc; import dev.notalpha.dashloader.mixin.accessor.NativeImageAccessor; -import net.minecraft.client.texture.MipmapHelper; -import net.minecraft.client.texture.NativeImage; +import net.minecraft.client.renderer.texture.MipmapGenerator; +import com.mojang.blaze3d.platform.NativeImage; import org.lwjgl.system.MemoryUtil; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(MipmapHelper.class) +@Mixin(MipmapGenerator.class) public abstract class MipmapHelperMixin { // not using wrapOperation because this is just replacing the call @Redirect( method = {"hasAlpha", "getMipmapLevelsImages"}, - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/NativeImage;getColorArgb(II)I") + at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/NativeImage;getColorArgb(II)I") ) private static int getColor(NativeImage instance, int x, int y) { return MemoryUtil.memGetInt(((NativeImageAccessor) (Object) instance).getPointer() + ((long) x + (long) y * (long) instance.getWidth()) * 4L); @@ -21,7 +21,7 @@ private static int getColor(NativeImage instance, int x, int y) { @Redirect( method = "getMipmapLevelsImages", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/NativeImage;setColorArgb(III)V") + at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/NativeImage;setColorArgb(III)V") ) private static void setColor(NativeImage instance, int x, int y, int color) { MemoryUtil.memPutInt(((NativeImageAccessor) (Object) instance).getPointer() + ((long) x + (long) y * (long) instance.getWidth()) * 4L, color); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java index 3c49cbca..6d22a3d1 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java @@ -1,18 +1,18 @@ package dev.notalpha.dashloader.mixin.option.misc; -import net.minecraft.client.util.ModelIdentifier; -import net.minecraft.util.Identifier; +import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import java.util.Objects; -@Mixin(value = ModelIdentifier.class, priority = 999) +@Mixin(value = ModelResourceLocation.class, priority = 999) public abstract class ModelIdentifierMixin { @Shadow @Final - private Identifier id; + private ResourceLocation id; @Shadow @Final private String variant; @@ -22,7 +22,7 @@ public boolean equals(Object o) { if (this == o) { return true; } - if (!(o instanceof ModelIdentifier that)) { + if (!(o instanceof ModelResourceLocation that)) { return false; } if (!this.id.equals(that.id())) { diff --git a/src/main/resources/dashloader.accesswidener b/src/main/resources/dashloader.accesswidener index f20367e9..9328521f 100644 --- a/src/main/resources/dashloader.accesswidener +++ b/src/main/resources/dashloader.accesswidener @@ -1,42 +1,69 @@ accessWidener v1 named -accessible class net/minecraft/client/texture/SpriteContents$Interpolation -accessible class net/minecraft/client/texture/SpriteContents$Animation -accessible class net/minecraft/client/texture/SpriteContents$AnimationFrame +accessible class net/minecraft/client/renderer/texture/SpriteContents$Interpolation +accessible class net/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture +accessible class net/minecraft/client/renderer/texture/SpriteContents$FrameInfo +# TODO: verify Mojang name for ParticleManager$SimpleSpriteProvider accessible class net/minecraft/client/particle/ParticleManager$SimpleSpriteProvider -accessible class net/minecraft/client/font/BitmapFont$BitmapFontGlyph -accessible class net/minecraft/client/render/model/BakedModelManager$BakingResult -accessible class net/minecraft/client/render/model/ModelBaker$BakedModelCacheKey -accessible class net/minecraft/client/render/model/ModelBaker$BakerImpl -accessible class net/minecraft/client/render/model/MultipartUnbakedModel$Selector -accessible class net/minecraft/client/font/TrueTypeFont$LazyGlyph -accessible class net/minecraft/client/font/UnihexFont$UnicodeTextureGlyph -accessible class net/minecraft/client/font/UnihexFont$FontImage16x16 -accessible class net/minecraft/client/font/UnihexFont$FontImage8x16 -accessible class net/minecraft/client/font/UnihexFont$FontImage32x16 -accessible class net/minecraft/client/font/FontStorage$GlyphPair -accessible class net/minecraft/client/font/FontManager$ProviderIndex +# TODO: verify Mojang name for BitmapFont$BitmapFontGlyph +accessible class net/minecraft/client/gui/font/providers/BitmapProvider$BitmapFontGlyph +# TODO: verify Mojang name for BakedModelManager$BakingResult +accessible class net/minecraft/client/renderer/block/model/BakedModelManager$BakingResult +# TODO: verify Mojang name for ModelBaker$BakedModelCacheKey +accessible class net/minecraft/client/renderer/block/model/ModelBaker$BakedModelCacheKey +# TODO: verify Mojang name for ModelBaker$BakerImpl +accessible class net/minecraft/client/renderer/block/model/ModelBaker$BakerImpl +# TODO: verify Mojang name for MultipartUnbakedModel$Selector +accessible class net/minecraft/client/renderer/block/model/MultipartUnbakedModel$Selector +# TODO: verify Mojang name for TrueTypeFont$LazyGlyph +accessible class net/minecraft/client/gui/font/TrueTypeFont$LazyGlyph +# TODO: verify Mojang name for UnihexFont$UnicodeTextureGlyph +accessible class net/minecraft/client/gui/font/UnihexFont$UnicodeTextureGlyph +# TODO: verify Mojang name for UnihexFont$FontImage16x16 +accessible class net/minecraft/client/gui/font/UnihexFont$FontImage16x16 +# TODO: verify Mojang name for UnihexFont$FontImage8x16 +accessible class net/minecraft/client/gui/font/UnihexFont$FontImage8x16 +# TODO: verify Mojang name for UnihexFont$FontImage32x16 +accessible class net/minecraft/client/gui/font/UnihexFont$FontImage32x16 +# TODO: verify Mojang name for FontSet$GlyphPair (was FontStorage$GlyphPair) +accessible class net/minecraft/client/gui/font/FontSet$GlyphPair +# TODO: verify Mojang name for FontManager$ProviderIndex +accessible class net/minecraft/client/gui/font/FontManager$ProviderIndex +# TODO: verify Mojang name for ShaderLoader$Cache accessible class net/minecraft/client/gl/ShaderLoader$Cache +# TODO: verify Mojang name for ShaderLoader$ShaderSourceKey accessible class net/minecraft/client/gl/ShaderLoader$ShaderSourceKey -accessible field net/minecraft/client/gui/DrawContext vertexConsumers Lnet/minecraft/client/render/VertexConsumerProvider$Immediate; -accessible class net/minecraft/resource/ZipResourcePack$ZipFileWrapper -accessible class net/minecraft/client/MinecraftClient$LoadingContext +# TODO: verify VertexConsumerProvider$Immediate equivalent in Mojang (was DrawContext.vertexConsumers) +accessible field net/minecraft/client/gui/GuiGraphics vertexConsumers Lcom/mojang/blaze3d/vertex/VertexConsumer; +# TODO: verify Mojang name for ZipFileWrapper (was ZipResourcePack$ZipFileWrapper) +accessible class net/minecraft/server/packs/FilePackResources$SharedZipFileAccess +accessible class net/minecraft/client/Minecraft$LoadingContext +# TODO: verify Mojang name for ShaderLoader$Cache.shaderPrograms accessible field net/minecraft/client/gl/ShaderLoader$Cache shaderPrograms Ljava/util/Map; -accessible field net/minecraft/client/render/model/json/ModelTransformation thirdPersonLeftHand Lnet/minecraft/client/render/model/json/Transformation; -accessible field net/minecraft/client/render/model/json/ModelTransformation thirdPersonRightHand Lnet/minecraft/client/render/model/json/Transformation; -accessible field net/minecraft/client/render/model/json/ModelTransformation firstPersonLeftHand Lnet/minecraft/client/render/model/json/Transformation; -accessible field net/minecraft/client/render/model/json/ModelTransformation firstPersonRightHand Lnet/minecraft/client/render/model/json/Transformation; -accessible field net/minecraft/client/render/model/json/ModelTransformation head Lnet/minecraft/client/render/model/json/Transformation; -accessible field net/minecraft/client/render/model/json/ModelTransformation gui Lnet/minecraft/client/render/model/json/Transformation; -accessible field net/minecraft/client/render/model/json/ModelTransformation ground Lnet/minecraft/client/render/model/json/Transformation; -accessible field net/minecraft/client/render/model/json/ModelTransformation fixed Lnet/minecraft/client/render/model/json/Transformation; -accessible field net/minecraft/client/render/model/ModelBaker bakedModelCache Ljava/util/Map; -accessible field net/minecraft/client/render/model/WrapperBakedModel wrapped Lnet/minecraft/client/render/model/BakedModel; -accessible method net/minecraft/client/font/TrueTypeFont$LazyGlyph (I)V -accessible method net/minecraft/client/font/UnihexFont$FontImage8x16 ([B)V -accessible method net/minecraft/client/font/UnihexFont$FontImage16x16 ([S)V -accessible method net/minecraft/client/font/UnihexFont$FontImage32x16 ([II)V -accessible method net/minecraft/client/font/UnihexFont$UnicodeTextureGlyph (Lnet/minecraft/client/font/UnihexFont$BitmapGlyph;II)V -accessible method net/minecraft/client/gl/ShaderLoader$ShaderSourceKey (Lnet/minecraft/util/Identifier;Lnet/minecraft/client/gl/CompiledShader$Type;)V +accessible field net/minecraft/client/renderer/block/model/ItemTransforms thirdPersonLeftHand Lnet/minecraft/client/renderer/block/model/ItemTransform; +accessible field net/minecraft/client/renderer/block/model/ItemTransforms thirdPersonRightHand Lnet/minecraft/client/renderer/block/model/ItemTransform; +accessible field net/minecraft/client/renderer/block/model/ItemTransforms firstPersonLeftHand Lnet/minecraft/client/renderer/block/model/ItemTransform; +accessible field net/minecraft/client/renderer/block/model/ItemTransforms firstPersonRightHand Lnet/minecraft/client/renderer/block/model/ItemTransform; +accessible field net/minecraft/client/renderer/block/model/ItemTransforms head Lnet/minecraft/client/renderer/block/model/ItemTransform; +accessible field net/minecraft/client/renderer/block/model/ItemTransforms gui Lnet/minecraft/client/renderer/block/model/ItemTransform; +accessible field net/minecraft/client/renderer/block/model/ItemTransforms ground Lnet/minecraft/client/renderer/block/model/ItemTransform; +accessible field net/minecraft/client/renderer/block/model/ItemTransforms fixed Lnet/minecraft/client/renderer/block/model/ItemTransform; +# TODO: verify Mojang name for ModelBaker.bakedModelCache +accessible field net/minecraft/client/renderer/block/model/ModelBaker bakedModelCache Ljava/util/Map; +# TODO: verify Mojang name for WrapperBakedModel.wrapped +accessible field net/minecraft/client/renderer/block/model/WrapperBakedModel wrapped Lnet/minecraft/client/resources/model/BakedModel; +# TODO: verify Mojang name for TrueTypeFont$LazyGlyph. +accessible method net/minecraft/client/gui/font/TrueTypeFont$LazyGlyph (I)V +# TODO: verify Mojang name for UnihexFont$FontImage8x16. +accessible method net/minecraft/client/gui/font/UnihexFont$FontImage8x16 ([B)V +# TODO: verify Mojang name for UnihexFont$FontImage16x16. +accessible method net/minecraft/client/gui/font/UnihexFont$FontImage16x16 ([S)V +# TODO: verify Mojang name for UnihexFont$FontImage32x16. +accessible method net/minecraft/client/gui/font/UnihexFont$FontImage32x16 ([II)V +# TODO: verify Mojang name for UnihexFont$UnicodeTextureGlyph. and UnihexFont$BitmapGlyph +accessible method net/minecraft/client/gui/font/UnihexFont$UnicodeTextureGlyph (Lnet/minecraft/client/gui/font/UnihexFont$BitmapGlyph;II)V +# TODO: verify Mojang name for ShaderLoader$ShaderSourceKey. and CompiledShader$Type +accessible method net/minecraft/client/gl/ShaderLoader$ShaderSourceKey (Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/gl/CompiledShader$Type;)V +# TODO: verify Mojang name for ShaderProgram and GlUniform (ShaderInstance/Uniform in Mojang?) mutable field net/minecraft/client/gl/ShaderProgram modelViewMat Lnet/minecraft/client/gl/GlUniform; mutable field net/minecraft/client/gl/ShaderProgram projectionMat Lnet/minecraft/client/gl/GlUniform; mutable field net/minecraft/client/gl/ShaderProgram textureMat Lnet/minecraft/client/gl/GlUniform; diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index a837d8dd..2490f1f5 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -30,7 +30,7 @@ ], "depends": { "fabricloader": ">=0.11.3", - "minecraft": "1.21.4", + "minecraft": "~1.21.10", "java": ">=21" }, "custom": { From 5f5c19133d98ab17f7632aa97a6cf672497656b8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 16:54:53 +0000 Subject: [PATCH 04/14] Fix modmenu version to 16.0.0-rc.1 for Minecraft 1.21.10 Co-authored-by: Darker935 <70950705+Darker935@users.noreply.github.com> --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index bc8d1686..ff32c5c5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,8 +9,8 @@ loom_version=1.14-SNAPSHOT fabric_version=0.138.3+1.21.10 # Dependencies -# ModMenu 16.0.0 targets 1.21.9 and 1.21.10 -modmenu_version=16.0.0 +# ModMenu 16.0.0-rc.1 targets 1.21.10 (17.0.0-alpha.1 also supports 1.21.10 and 1.21.11) +modmenu_version=16.0.0-rc.1 # Mod Properties mod_version=5.1.0-beta.8+1.21.10 From 03254f0f5c2b3fa7eb442c4d1f544171dec32803 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:02:03 +0000 Subject: [PATCH 05/14] =?UTF-8?q?Fix=20Mojang=20class=20names:=20SpriteIde?= =?UTF-8?q?ntifier=E2=86=92Material,=20BakedModelManager=E2=86=92ModelBake?= =?UTF-8?q?ry,=20clean=20up=20Dazy=20types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Darker935 <70950705+Darker935@users.noreply.github.com> --- .../dashloader/client/DashLoaderClient.java | 2 ++ .../dev/notalpha/dashloader/client/Dazy.java | 8 +++++--- .../client/identifier/DashSpriteIdentifier.java | 14 +++++++------- .../client/sprite/content/DashSprite.java | 14 +++++++------- .../cache/model/BakedModelManagerOverride.java | 10 +++++----- src/main/resources/dashloader.accesswidener | 16 ++++++++-------- 6 files changed, 34 insertions(+), 30 deletions(-) diff --git a/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java b/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java index 9fdf4a37..fff09f53 100644 --- a/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java +++ b/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java @@ -31,6 +31,7 @@ import net.minecraft.client.renderer.block.model.multipart.OrCondition; import net.minecraft.client.renderer.block.model.multipart.KeyValueCondition; import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.Material; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.resources.ResourceLocation; @@ -63,6 +64,7 @@ public void onDashLoaderInit(CacheFactory factory) { factory.addMissingHandler(ResourceLocation.class, (identifier, registryWriter) -> new DashIdentifier(identifier)); factory.addMissingHandler(ModelResourceLocation.class, (moduleIdentifier, registryWriter) -> new DashModelIdentifier(moduleIdentifier)); + factory.addMissingHandler(Material.class, DashSpriteIdentifier::new); factory.addMissingHandler( TextureAtlasSprite.class, diff --git a/src/main/java/dev/notalpha/dashloader/client/Dazy.java b/src/main/java/dev/notalpha/dashloader/client/Dazy.java index cf3f3d3a..cf9d2a87 100644 --- a/src/main/java/dev/notalpha/dashloader/client/Dazy.java +++ b/src/main/java/dev/notalpha/dashloader/client/Dazy.java @@ -1,6 +1,8 @@ package dev.notalpha.dashloader.client; -import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import java.util.function.Function; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.Material; import org.jetbrains.annotations.Nullable; // its lazy, but dash! Used for resolution of sprites. @@ -8,9 +10,9 @@ public abstract class Dazy { @Nullable private transient V loaded; - protected abstract V resolve(Function /* TODO: verify replacement */ spriteLoader); + protected abstract V resolve(Function spriteLoader); - public V get(Function /* TODO: verify replacement */ spriteLoader) { + public V get(Function spriteLoader) { if (loaded != null) { return loaded; } diff --git a/src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java b/src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java index 7eb8e5d1..ffecd704 100644 --- a/src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java +++ b/src/main/java/dev/notalpha/dashloader/client/identifier/DashSpriteIdentifier.java @@ -3,9 +3,9 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.renderer.texture.SpriteIdentifier; // TODO: verify Mojang name +import net.minecraft.client.resources.model.Material; -public class DashSpriteIdentifier implements DashObject { +public class DashSpriteIdentifier implements DashObject { public final int atlas; public final int texture; @@ -14,13 +14,13 @@ public DashSpriteIdentifier(int atlas, int texture) { this.texture = texture; } - public DashSpriteIdentifier(SpriteIdentifier identifier, RegistryWriter writer) { - this.atlas = writer.add(identifier.getAtlasId()); - this.texture = writer.add(identifier.getTextureId()); + public DashSpriteIdentifier(Material identifier, RegistryWriter writer) { + this.atlas = writer.add(identifier.atlasLocation()); + this.texture = writer.add(identifier.texture()); } @Override - public SpriteIdentifier export(RegistryReader reader) { - return new SpriteIdentifier(reader.get(atlas), reader.get(texture)); + public Material export(RegistryReader reader) { + return new Material(reader.get(atlas), reader.get(texture)); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java index 349c5a88..8eaaa6fd 100644 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java +++ b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java @@ -4,9 +4,9 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.client.Dazy; -import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import java.util.function.Function; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.texture.SpriteIdentifier; // TODO: verify Mojang name +import net.minecraft.client.resources.model.Material; public class DashSprite implements DashObject { public final int id; @@ -16,7 +16,7 @@ public DashSprite(int id) { } public DashSprite(TextureAtlasSprite sprite, RegistryWriter writer) { - this.id = writer.add(new SpriteIdentifier(sprite.getAtlasId(), sprite.getContents().getId())); + this.id = writer.add(new Material(sprite.atlasLocation(), sprite.getContents().name())); } @Override @@ -40,15 +40,15 @@ public int hashCode() { } public static class DazyImpl extends Dazy { - public final SpriteIdentifier location; + public final Material location; - public DazyImpl(SpriteIdentifier location) { + public DazyImpl(Material location) { this.location = location; } @Override - protected TextureAtlasSprite resolve(Function /* TODO: verify replacement */ spriteLoader) { - return spriteLoader.get(location); + protected TextureAtlasSprite resolve(Function spriteLoader) { + return spriteLoader.apply(location); } } } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java index 45657a73..2af37c79 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java @@ -5,9 +5,9 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.model.ModelModule; -import net.minecraft.client.renderer.block.model.BakedModelManager; // TODO: verify Mojang name -import net.minecraft.client.renderer.block.model.ModelBaker; // TODO: verify Mojang name -import net.minecraft.client.resources.model.UnbakedModel; // TODO: verify Mojang name +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelBaker; +import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceProvider; import net.minecraft.server.packs.resources.ResourceManager; @@ -19,9 +19,9 @@ import java.util.Map; import java.util.concurrent.CompletionStage; -@Mixin(value = BakedModelManager.class, priority = 69420) +@Mixin(value = ModelBakery.class, priority = 69420) public abstract class BakedModelManagerOverride { - @WrapOperation(method = "bake", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/model/ModelBaker; // TODO: verifybake(Lnet/minecraft/client/renderer/block/model/ModelBaker$ErrorCollectingSpriteGetter; // TODO: verify)Lnet/minecraft/client/renderer/block/model/ModelBaker$BakedModels; // TODO: verify")) + @WrapOperation(method = "bake", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/model/ModelBaker;bake(Lnet/minecraft/client/resources/model/ModelBaker$ErrorCollectingSpriteGetter;)Lnet/minecraft/client/resources/model/ModelBaker$BakedModels;")) private static ModelBaker.BakedModels yoinkBakedModels(ModelBaker instance, ModelBaker.ErrorCollectingSpriteGetter spriteGetter, Operation original) { var bakedModels = original.call(instance, spriteGetter); // ModelModule.ITEM_MODELS_SAVE.visit(CacheStatus.SAVE, map -> map.putAll(bakedModels.itemStackModels())); diff --git a/src/main/resources/dashloader.accesswidener b/src/main/resources/dashloader.accesswidener index 9328521f..0c3090ff 100644 --- a/src/main/resources/dashloader.accesswidener +++ b/src/main/resources/dashloader.accesswidener @@ -6,12 +6,12 @@ accessible class net/minecraft/client/renderer/texture/SpriteContents$FrameInfo accessible class net/minecraft/client/particle/ParticleManager$SimpleSpriteProvider # TODO: verify Mojang name for BitmapFont$BitmapFontGlyph accessible class net/minecraft/client/gui/font/providers/BitmapProvider$BitmapFontGlyph -# TODO: verify Mojang name for BakedModelManager$BakingResult -accessible class net/minecraft/client/renderer/block/model/BakedModelManager$BakingResult -# TODO: verify Mojang name for ModelBaker$BakedModelCacheKey -accessible class net/minecraft/client/renderer/block/model/ModelBaker$BakedModelCacheKey -# TODO: verify Mojang name for ModelBaker$BakerImpl -accessible class net/minecraft/client/renderer/block/model/ModelBaker$BakerImpl +# BakedModelManager (YARN) = ModelBakery (Mojang) in net.minecraft.client.resources.model +accessible class net/minecraft/client/resources/model/ModelBakery$BakingResult +# ModelBaker (YARN) = ModelBaker (Mojang) in net.minecraft.client.resources.model +accessible class net/minecraft/client/resources/model/ModelBaker$BakedModelCacheKey +# TODO: verify Mojang inner class name for BakerImpl +accessible class net/minecraft/client/resources/model/ModelBaker$BakerImpl # TODO: verify Mojang name for MultipartUnbakedModel$Selector accessible class net/minecraft/client/renderer/block/model/MultipartUnbakedModel$Selector # TODO: verify Mojang name for TrueTypeFont$LazyGlyph @@ -47,8 +47,8 @@ accessible field net/minecraft/client/renderer/block/model/ItemTransforms head L accessible field net/minecraft/client/renderer/block/model/ItemTransforms gui Lnet/minecraft/client/renderer/block/model/ItemTransform; accessible field net/minecraft/client/renderer/block/model/ItemTransforms ground Lnet/minecraft/client/renderer/block/model/ItemTransform; accessible field net/minecraft/client/renderer/block/model/ItemTransforms fixed Lnet/minecraft/client/renderer/block/model/ItemTransform; -# TODO: verify Mojang name for ModelBaker.bakedModelCache -accessible field net/minecraft/client/renderer/block/model/ModelBaker bakedModelCache Ljava/util/Map; +# ModelBaker.bakedModelCache (Mojang) in net.minecraft.client.resources.model +accessible field net/minecraft/client/resources/model/ModelBaker bakedModelCache Ljava/util/Map; # TODO: verify Mojang name for WrapperBakedModel.wrapped accessible field net/minecraft/client/renderer/block/model/WrapperBakedModel wrapped Lnet/minecraft/client/resources/model/BakedModel; # TODO: verify Mojang name for TrueTypeFont$LazyGlyph. From bdc7167cbc52402148828a7f141ce71270c510d1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:17:33 +0000 Subject: [PATCH 06/14] Fix build: downgrade loom_version from 1.14-SNAPSHOT to 1.11-SNAPSHOT (Gradle 8.11 compat) Co-authored-by: Darker935 <70950705+Darker935@users.noreply.github.com> --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index ff32c5c5..8caf7d8f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.jvmargs=-Xmx2560m minecraft_version=1.21.10 # Using Mojang official mappings (loom.officialMojangMappings()) instead of YARN loader_version=0.17.3 -loom_version=1.14-SNAPSHOT +loom_version=1.11-SNAPSHOT fabric_version=0.138.3+1.21.10 # Dependencies From a55366bf54d3e3eabb88fd2cc31f3c3f7ca71712 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:44:21 +0000 Subject: [PATCH 07/14] Fix Gradle wrapper to 9.3.0 and loom_version to 1.15-SNAPSHOT Co-authored-by: Darker935 <70950705+Darker935@users.noreply.github.com> --- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8caf7d8f..df091068 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.jvmargs=-Xmx2560m minecraft_version=1.21.10 # Using Mojang official mappings (loom.officialMojangMappings()) instead of YARN loader_version=0.17.3 -loom_version=1.11-SNAPSHOT +loom_version=1.15-SNAPSHOT fabric_version=0.138.3+1.21.10 # Dependencies diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e48eca57..0e25f1aa 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 852f5010365dd2da1bbbe214eae5adb0b6d4f01d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 18:01:07 +0000 Subject: [PATCH 08/14] =?UTF-8?q?Fix=20YARN=20=E2=86=92=20Mojang=20class?= =?UTF-8?q?=20mapping=20compilation=20errors=20for=201.21.10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - BitmapFont → BitmapProvider (net.minecraft.client.gui.font.providers) - TrueTypeFont/UnihexFont/GlyphContainer → net.minecraft.client.gui.font.* - Font (interface)/Font.FontFilterPair → GlyphProvider/GlyphProvider.FilterPair - BlankFont/SpaceFont → BlankProvider/SpaceProvider - Glyph → GlyphInfo - FontManager/FontFilterType → net.minecraft.client.gui.font.* - MultipartModelSelector → Condition - And/Or/SimpleMultipartModelSelector → And/Or/KeyValueCondition - MultipartModelComponent → MultipartUnbakedModel.Selector - DataPool → net.minecraft.util.random.DataPool - ResourceMetadata → net.minecraft.server.packs.resources.ResourceMetadata - SplashTextResourceSupplier → SplashManager - Fix SplashScreenMixin inject target string (removed embedded TODO) - Fix SpriteOpenerMixin duplicate import - Remove TODO comments from verified imports Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../dashloader/client/DashLoaderClient.java | 14 +- .../client/font/DashBitmapFont.java | 48 ++--- .../client/font/DashBitmapFontGlyph.java | 66 +++---- .../dashloader/client/font/DashBlankFont.java | 12 +- .../client/font/DashFontFilterPair.java | 42 ++-- .../dashloader/client/font/DashSpaceFont.java | 52 ++--- .../client/font/DashTrueTypeFont.java | 7 +- .../client/font/DashUnihexFont.java | 4 +- .../dashloader/client/font/FontModule.java | 186 +++++++++--------- .../client/model/DashMultipartBakedModel.java | 4 +- .../dashloader/client/model/ModelModule.java | 6 +- .../model/predicates/BooleanSelector.java | 26 +-- .../model/predicates/DashAndPredicate.java | 96 ++++----- .../model/predicates/DashOrPredicate.java | 96 ++++----- .../model/predicates/DashSimplePredicate.java | 74 +++---- .../model/predicates/DashStaticPredicate.java | 44 ++--- .../notalpha/dashloader/io/Serializer.java | 2 +- .../AndMultipartModelSelectorAccessor.java | 8 +- .../mixin/accessor/BitmapFontAccessor.java | 22 +-- .../accessor/BitmapFontGlyphAccessor.java | 44 ++--- .../mixin/accessor/FilterMapAccessor.java | 6 +- .../FontManagerProviderIndexAccessor.java | 12 +- .../mixin/accessor/GlUniformAccessor.java | 2 +- .../MultipartModelComponentAccessor.java | 10 +- .../OrMultipartModelSelectorAccessor.java | 8 +- .../mixin/accessor/ShaderProgramAccessor.java | 6 +- .../SimpleMultipartModelSelectorAccessor.java | 10 +- .../accessor/SpriteContentsAccessor.java | 2 +- .../mixin/accessor/TrueTypeFontAccessor.java | 36 ++-- .../mixin/accessor/UnihexFontAccessor.java | 16 +- .../accessor/WeightedBakedModelAccessor.java | 8 +- .../mixin/main/SplashScreenMixin.java | 6 +- .../SplashTextResourceSupplierMixin.java | 40 ++-- .../cache/font/FontManagerOverride.java | 3 +- .../cache/font/TrueTypeFontLoaderMixin.java | 32 +-- .../MultipartUnbakedModelSerializedMixin.java | 5 +- .../sprite/content/SpriteOpenerMixin.java | 66 +++---- src/main/resources/dashloader.accesswidener | 1 - 38 files changed, 560 insertions(+), 562 deletions(-) diff --git a/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java b/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java index fff09f53..c8b7788b 100644 --- a/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java +++ b/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java @@ -27,7 +27,7 @@ import dev.notalpha.dashloader.client.sprite.stitch.SpriteStitcherModule; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.renderer.block.model.multipart.AndCondition; -import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.client.renderer.block.model.multipart.Condition; import net.minecraft.client.renderer.block.model.multipart.OrCondition; import net.minecraft.client.renderer.block.model.multipart.KeyValueCondition; import net.minecraft.client.renderer.texture.TextureAtlasSprite; @@ -71,17 +71,17 @@ public void onDashLoaderInit(CacheFactory factory) { DashSprite::new ); factory.addMissingHandler( - MultipartModelSelector.class, + Condition.class, (selector, writer) -> { - if (selector == MultipartModelSelector.TRUE) { + if (selector == Condition.TRUE) { return new DashStaticPredicate(true); - } else if (selector == MultipartModelSelector.FALSE) { + } else if (selector == Condition.FALSE) { return new DashStaticPredicate(false); - } else if (selector instanceof AndMultipartModelSelector s) { + } else if (selector instanceof AndCondition s) { return new DashAndPredicate(s, writer); - } else if (selector instanceof OrMultipartModelSelector s) { + } else if (selector instanceof OrCondition s) { return new DashOrPredicate(s, writer); - } else if (selector instanceof SimpleMultipartModelSelector s) { + } else if (selector instanceof KeyValueCondition s) { return new DashSimplePredicate(s); } else if (selector instanceof BooleanSelector s) { return new DashStaticPredicate(s.selector); diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java index 01bff982..72b56043 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java @@ -5,34 +5,34 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.BitmapFontAccessor; -import net.minecraft.client.gui.font.providers.BitmapProvider; // TODO: verify Mojang name -import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name +import net.minecraft.client.gui.font.GlyphContainer; +import net.minecraft.client.gui.font.providers.BitmapProvider; import java.util.ArrayList; -public final class DashBitmapFont implements DashObject { - public final int image; - public final IntObjectList glyphs; +public final class DashBitmapFont implements DashObject { +public final int image; +public final IntObjectList glyphs; - public DashBitmapFont(int image, - IntObjectList glyphs) { - this.image = image; - this.glyphs = glyphs; - } +public DashBitmapFont(int image, + IntObjectList glyphs) { +this.image = image; +this.glyphs = glyphs; +} - public DashBitmapFont(BitmapFont bitmapFont, RegistryWriter writer) { - BitmapFontAccessor font = ((BitmapFontAccessor) bitmapFont); - this.image = writer.add(font.getImage()); - this.glyphs = new IntObjectList<>(new ArrayList<>()); - font.getGlyphs().forEachGlyph((integer, bitmapFontGlyph) -> this.glyphs.put(integer, new DashBitmapFontGlyph(bitmapFontGlyph, writer))); - } +public DashBitmapFont(BitmapProvider bitmapFont, RegistryWriter writer) { +BitmapFontAccessor font = ((BitmapFontAccessor) bitmapFont); +this.image = writer.add(font.getImage()); +this.glyphs = new IntObjectList<>(new ArrayList<>()); +font.getGlyphs().forEachGlyph((integer, bitmapFontGlyph) -> this.glyphs.put(integer, new DashBitmapFontGlyph(bitmapFontGlyph, writer))); +} - public BitmapFont export(RegistryReader reader) { - GlyphContainer out = new GlyphContainer<>( - BitmapFont.BitmapFontGlyph[]::new, - BitmapFont.BitmapFontGlyph[][]::new - ); - this.glyphs.forEach((key, value) -> out.put(key, value.export(reader))); - return BitmapFontAccessor.init(reader.get(this.image), out); - } +public BitmapProvider export(RegistryReader reader) { +GlyphContainer out = new GlyphContainer<>( +BitmapProvider.BitmapFontGlyph[]::new, +BitmapProvider.BitmapFontGlyph[][]::new +); +this.glyphs.forEach((key, value) -> out.put(key, value.export(reader))); +return BitmapFontAccessor.init(reader.get(this.image), out); +} } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java index db30761e..4b9bd2da 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java @@ -3,42 +3,42 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.BitmapFontGlyphAccessor; -import net.minecraft.client.gui.font.providers.BitmapProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.providers.BitmapProvider; public final class DashBitmapFontGlyph { - public final float scaleFactor; - public final int image; - public final int x; - public final int y; - public final int width; - public final int height; - public final int advance; - public final int ascent; +public final float scaleFactor; +public final int image; +public final int x; +public final int y; +public final int width; +public final int height; +public final int advance; +public final int ascent; - public DashBitmapFontGlyph(float scaleFactor, int image, int x, int y, int width, int height, int advance, int ascent) { - this.scaleFactor = scaleFactor; - this.image = image; - this.x = x; - this.y = y; - this.width = width; - this.height = height; - this.advance = advance; - this.ascent = ascent; - } +public DashBitmapFontGlyph(float scaleFactor, int image, int x, int y, int width, int height, int advance, int ascent) { +this.scaleFactor = scaleFactor; +this.image = image; +this.x = x; +this.y = y; +this.width = width; +this.height = height; +this.advance = advance; +this.ascent = ascent; +} - public DashBitmapFontGlyph(BitmapFont.BitmapFontGlyph bitmapFontGlyph, RegistryWriter writer) { - BitmapFontGlyphAccessor font = ((BitmapFontGlyphAccessor) (Object) bitmapFontGlyph); - this.scaleFactor = font.getScaleFactor(); - this.image = writer.add(font.getImage()); - this.x = font.getX(); - this.y = font.getY(); - this.width = font.getWidth(); - this.height = font.getHeight(); - this.advance = font.getAdvance(); - this.ascent = font.getAscent(); - } +public DashBitmapFontGlyph(BitmapProvider.BitmapFontGlyph bitmapFontGlyph, RegistryWriter writer) { +BitmapFontGlyphAccessor font = ((BitmapFontGlyphAccessor) (Object) bitmapFontGlyph); +this.scaleFactor = font.getScaleFactor(); +this.image = writer.add(font.getImage()); +this.x = font.getX(); +this.y = font.getY(); +this.width = font.getWidth(); +this.height = font.getHeight(); +this.advance = font.getAdvance(); +this.ascent = font.getAscent(); +} - public BitmapFont.BitmapFontGlyph export(RegistryReader handler) { - return BitmapFontGlyphAccessor.init(this.scaleFactor, handler.get(this.image), this.x, this.y, this.width, this.height, this.advance, this.ascent); - } +public BitmapProvider.BitmapFontGlyph export(RegistryReader handler) { +return BitmapFontGlyphAccessor.init(this.scaleFactor, handler.get(this.image), this.x, this.y, this.width, this.height, this.advance, this.ascent); +} } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java index 4df81144..8c440f89 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java @@ -2,11 +2,11 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; -import net.minecraft.client.gui.font.providers.BlankProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.providers.BlankProvider; -public final class DashBlankFont implements DashObject { - @Override - public BlankFont export(RegistryReader exportHandler) { - return new BlankFont(); - } +public final class DashBlankFont implements DashObject { +@Override +public BlankProvider export(RegistryReader exportHandler) { +return new BlankProvider(); +} } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java b/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java index 3fa1e419..b66de726 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java @@ -5,33 +5,33 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.FilterMapAccessor; -import net.minecraft.client.gui.font.GlyphProvider; // TODO: verify Mojang name -import net.minecraft.client.gui.font.FontSet; // TODO: verify Mojang name (FontFilterType) +import net.minecraft.client.gui.font.FontFilterType; +import net.minecraft.client.gui.font.providers.GlyphProvider; import java.util.HashMap; import java.util.Map; -public class DashFontFilterPair implements DashObject { - public final int provider; - public final IntIntList filter; +public class DashFontFilterPair implements DashObject { +public final int provider; +public final IntIntList filter; - public DashFontFilterPair(int provider, IntIntList filter) { - this.provider = provider; - this.filter = filter; - } +public DashFontFilterPair(int provider, IntIntList filter) { +this.provider = provider; +this.filter = filter; +} - public DashFontFilterPair(Font.FontFilterPair fontFilterPair, RegistryWriter writer) { - this.provider = writer.add(fontFilterPair.provider()); +public DashFontFilterPair(GlyphProvider.FilterPair fontFilterPair, RegistryWriter writer) { +this.provider = writer.add(fontFilterPair.provider()); - filter = new IntIntList(); - ((FilterMapAccessor) fontFilterPair.filter()).getActiveFilters().forEach( - (key, value) -> filter.put(key.ordinal(), value ? 1 : 0)); - } +filter = new IntIntList(); +((FilterMapAccessor) fontFilterPair.filter()).getActiveFilters().forEach( +(key, value) -> filter.put(key.ordinal(), value ? 1 : 0)); +} - @Override - public Font.FontFilterPair export(RegistryReader reader) { - Map activeFilters = new HashMap<>(); - filter.forEach((key, value) -> activeFilters.put(FontFilterType.values()[key], value == 1)); - return new Font.FontFilterPair(reader.get(provider), new FontFilterType.FilterMap(activeFilters)); - } +@Override +public GlyphProvider.FilterPair export(RegistryReader reader) { +Map activeFilters = new HashMap<>(); +filter.forEach((key, value) -> activeFilters.put(FontFilterType.values()[key], value == 1)); +return new GlyphProvider.FilterPair(reader.get(provider), new FontFilterType.FilterMap(activeFilters)); +} } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java index 772a6f7a..2352d0f3 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java @@ -4,34 +4,34 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import it.unimi.dsi.fastutil.ints.Int2FloatArrayMap; import it.unimi.dsi.fastutil.ints.IntSet; -import net.minecraft.client.gui.font.glyphs.BakedGlyph; // TODO: verify Mojang name (Glyph) -import net.minecraft.client.gui.font.providers.SpaceProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.glyphs.GlyphInfo; +import net.minecraft.client.gui.font.providers.SpaceProvider; -public final class DashSpaceFont implements DashObject { - public final int[] ints; - public final float[] floats; +public final class DashSpaceFont implements DashObject { +public final int[] ints; +public final float[] floats; - public DashSpaceFont(int[] ints, float[] floats) { - this.ints = ints; - this.floats = floats; - } +public DashSpaceFont(int[] ints, float[] floats) { +this.ints = ints; +this.floats = floats; +} - public DashSpaceFont(SpaceFont font) { - IntSet glyphs = font.getProvidedGlyphs(); - this.ints = new int[glyphs.size()]; - this.floats = new float[glyphs.size()]; - int i = 0; - for (Integer providedGlyph : glyphs) { - Glyph glyph = font.getGlyph(providedGlyph); - assert glyph != null; - this.ints[i] = providedGlyph; - this.floats[i] = glyph.getAdvance(); - i++; - } - } +public DashSpaceFont(SpaceProvider font) { +IntSet glyphs = font.getProvidedGlyphs(); +this.ints = new int[glyphs.size()]; +this.floats = new float[glyphs.size()]; +int i = 0; +for (Integer providedGlyph : glyphs) { +GlyphInfo glyph = font.getGlyph(providedGlyph); +assert glyph != null; +this.ints[i] = providedGlyph; +this.floats[i] = glyph.getAdvance(); +i++; +} +} - @Override - public SpaceFont export(RegistryReader exportHandler) { - return new SpaceFont(new Int2FloatArrayMap(ints, floats)); - } +@Override +public SpaceProvider export(RegistryReader exportHandler) { +return new SpaceProvider(new Int2FloatArrayMap(ints, floats)); +} } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java index d97913c0..146ba7ad 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java @@ -8,10 +8,9 @@ import dev.notalpha.dashloader.mixin.accessor.TrueTypeFontAccessor; import it.unimi.dsi.fastutil.ints.IntArraySet; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.font.FreeTypeUtil; // TODO: verify Mojang name -import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name -import net.minecraft.client.gui.font.providers.TrueTypeGlyphProviderBuilder; // TODO: verify Mojang name -import net.minecraft.server.packs.resources.Resource; +import net.minecraft.client.gui.font.FreeTypeUtil; +import net.minecraft.client.gui.font.GlyphContainer; +import net.minecraft.client.gui.font.TrueTypeFont; import net.minecraft.resources.ResourceLocation; import org.lwjgl.PointerBuffer; import org.lwjgl.system.MemoryStack; diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java index d381b3f6..b0f33a4f 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java @@ -5,8 +5,8 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.UnihexFontAccessor; -import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name -import net.minecraft.client.gui.font.providers.UnihexProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.GlyphContainer; +import net.minecraft.client.gui.font.UnihexFont; public final class DashUnihexFont implements DashObject { public final IntObjectList glyphs; diff --git a/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java b/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java index 3d58e4b1..651fce68 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java @@ -10,7 +10,7 @@ import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.config.Option; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.gui.font.GlyphProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.providers.GlyphProvider; import net.minecraft.resources.ResourceLocation; import org.lwjgl.util.freetype.FT_Face; @@ -20,96 +20,96 @@ import java.util.Map; public class FontModule implements DashModule { - public static final CachingData DATA = new CachingData<>(); - public static final CachingData> FONT_TO_DATA = new CachingData<>(); - - @Override - public void reset(Cache cache) { - DATA.reset(cache, new ProviderIndex(new HashMap<>(), new ArrayList<>())); - FONT_TO_DATA.reset(cache, new HashMap<>()); - } - - @Override - public Data save(RegistryWriter factory, StepTask task) { - ProviderIndex providerIndex = DATA.get(CacheStatus.SAVE); - assert providerIndex != null; - - int taskSize = 0; - for (List value : providerIndex.providers.values()) { - taskSize += value.size(); - } - taskSize += providerIndex.allProviders.size(); - task.reset(taskSize); - - var providers = new IntObjectList>(); - providerIndex.providers.forEach((identifier, fontFilterPairs) -> { - var values = new ArrayList(); - for (Font.FontFilterPair fontFilterPair : fontFilterPairs) { - values.add(factory.add(fontFilterPair)); - task.next(); - } - providers.put(factory.add(identifier), values); - }); - - var allProviders = new ArrayList(); - for (Font allProvider : providerIndex.allProviders) { - allProviders.add(factory.add(allProvider)); - task.next(); - } - - return new Data(new DashProviderIndex(providers, allProviders)); - } - - @Override - public void load(Data data, RegistryReader reader, StepTask task) { - ProviderIndex index = new ProviderIndex(new HashMap<>(), new ArrayList<>()); - data.fontMap.providers.forEach((key, value) -> { - var fonts = new ArrayList(); - for (Integer i : value) { - fonts.add(reader.get(i)); - } - index.providers.put(reader.get(key), fonts); - }); - - data.fontMap.allProviders.forEach((value) -> index.allProviders.add(reader.get(value))); - DATA.set(CacheStatus.LOAD, index); - } - - @Override - public Class getDataClass() { - return Data.class; - } - - @Override - public boolean isActive() { - return ConfigHandler.optionActive(Option.CACHE_FONT); - } - - public static final class Data { - public final DashProviderIndex fontMap; - - public Data(DashProviderIndex fontMap) { - this.fontMap = fontMap; - } - } - - public static final class DashProviderIndex { - public final IntObjectList> providers; - public final List allProviders; - - public DashProviderIndex(IntObjectList> providers, List allProviders) { - this.providers = providers; - this.allProviders = allProviders; - } - } - - public static final class ProviderIndex { - public final Map> providers; - public final List allProviders; - - public ProviderIndex(Map> providers, List allProviders) { - this.providers = providers; - this.allProviders = allProviders; - } - } +public static final CachingData DATA = new CachingData<>(); +public static final CachingData> FONT_TO_DATA = new CachingData<>(); + +@Override +public void reset(Cache cache) { +DATA.reset(cache, new ProviderIndex(new HashMap<>(), new ArrayList<>())); +FONT_TO_DATA.reset(cache, new HashMap<>()); +} + +@Override +public Data save(RegistryWriter factory, StepTask task) { +ProviderIndex providerIndex = DATA.get(CacheStatus.SAVE); +assert providerIndex != null; + +int taskSize = 0; +for (List value : providerIndex.providers.values()) { +taskSize += value.size(); +} +taskSize += providerIndex.allProviders.size(); +task.reset(taskSize); + +var providers = new IntObjectList>(); +providerIndex.providers.forEach((identifier, fontFilterPairs) -> { +var values = new ArrayList(); +for (GlyphProvider.FilterPair fontFilterPair : fontFilterPairs) { +values.add(factory.add(fontFilterPair)); +task.next(); +} +providers.put(factory.add(identifier), values); +}); + +var allProviders = new ArrayList(); +for (GlyphProvider allProvider : providerIndex.allProviders) { +allProviders.add(factory.add(allProvider)); +task.next(); +} + +return new Data(new DashProviderIndex(providers, allProviders)); +} + +@Override +public void load(Data data, RegistryReader reader, StepTask task) { +ProviderIndex index = new ProviderIndex(new HashMap<>(), new ArrayList<>()); +data.fontMap.providers.forEach((key, value) -> { +var fonts = new ArrayList(); +for (Integer i : value) { +fonts.add(reader.get(i)); +} +index.providers.put(reader.get(key), fonts); +}); + +data.fontMap.allProviders.forEach((value) -> index.allProviders.add(reader.get(value))); +DATA.set(CacheStatus.LOAD, index); +} + +@Override +public Class getDataClass() { +return Data.class; +} + +@Override +public boolean isActive() { +return ConfigHandler.optionActive(Option.CACHE_FONT); +} + +public static final class Data { +public final DashProviderIndex fontMap; + +public Data(DashProviderIndex fontMap) { +this.fontMap = fontMap; +} +} + +public static final class DashProviderIndex { +public final IntObjectList> providers; +public final List allProviders; + +public DashProviderIndex(IntObjectList> providers, List allProviders) { +this.providers = providers; +this.allProviders = allProviders; +} +} + +public static final class ProviderIndex { +public final Map> providers; +public final List allProviders; + +public ProviderIndex(Map> providers, List allProviders) { +this.providers = providers; +this.allProviders = allProviders; +} +} } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java index 4bbd016a..4444be8e 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java @@ -11,7 +11,7 @@ import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.renderer.block.model.MultiPartBakedModel; -import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.client.renderer.block.model.multipart.Condition; import net.minecraft.resources.ResourceLocation; import java.util.ArrayList; @@ -55,7 +55,7 @@ public DazyImpl export(RegistryReader reader) { this.components.forEach(component -> { Dazy compModel = reader.get(component.model); ResourceLocation compIdentifier = reader.get(component.identifier); - MultipartModelSelector compSelector = reader.get(component.selector); + Condition compSelector = reader.get(component.selector); Predicate predicate = compSelector.getPredicate(ModelModule.getStateManager(compIdentifier)); componentsOut.add(new DazyImpl.Component(compModel, predicate)); }); diff --git a/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java b/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java index 1508d65d..ec24130a 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java @@ -24,8 +24,8 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.client.renderer.block.model.*; // TODO: verify Mojang package -import net.minecraft.client.renderer.block.model.multipart.Selector; +import net.minecraft.client.renderer.block.model.*; +import net.minecraft.client.renderer.block.model.multipart.Condition; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.world.level.block.state.StateDefinition; @@ -57,7 +57,7 @@ public class ModelModule implements DashModule { // public static final CachingData> MISSING_ITEM_MODELS = new CachingData<>(CacheStatus.LOAD); - public static final CachingData, StateDefinition>>> MULTIPART_PREDICATES = new CachingData<>(CacheStatus.SAVE); + public static final CachingData, StateDefinition>>> MULTIPART_PREDICATES = new CachingData<>(CacheStatus.SAVE); public static final CachingData> UNBAKED_TO_BAKED_MULTIPART_MODELS = new CachingData<>(CacheStatus.SAVE); public static StateDefinition getStateManager(ResourceLocation identifier) { diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java index 35b2471b..6502ebbd 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java @@ -2,24 +2,24 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.client.renderer.block.model.multipart.Condition; import net.minecraft.world.level.block.state.StateDefinition; import java.util.function.Predicate; -public class BooleanSelector implements MultipartModelSelector { - public final boolean selector; +public class BooleanSelector implements Condition { +public final boolean selector; - public BooleanSelector(boolean selector) { - this.selector = selector; - } +public BooleanSelector(boolean selector) { +this.selector = selector; +} - public BooleanSelector(MultipartModelSelector selector) { - this.selector = selector == MultipartModelSelector.TRUE; - } +public BooleanSelector(Condition selector) { +this.selector = selector == Condition.TRUE; +} - @Override - public Predicate getPredicate(StateDefinition stateFactory) { - return blockState -> selector; - } +@Override +public Predicate getPredicate(StateDefinition stateFactory) { +return blockState -> selector; +} } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java index 154ad544..1d70d0e8 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java @@ -5,57 +5,57 @@ import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.AndMultipartModelSelectorAccessor; import net.minecraft.client.renderer.block.model.multipart.AndCondition; -import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.client.renderer.block.model.multipart.Condition; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -public final class DashAndPredicate implements DashObject { - public final int[] selectors; - - public DashAndPredicate(int[] selectors) { - this.selectors = selectors; - } - - public DashAndPredicate(AndMultipartModelSelector selector, RegistryWriter writer) { - AndMultipartModelSelectorAccessor access = ((AndMultipartModelSelectorAccessor) selector); - - Iterable accessSelectors = access.getSelectors(); - int count = 0; - for (MultipartModelSelector ignored : accessSelectors) { - count += 1; - } - this.selectors = new int[count]; - - int i = 0; - for (MultipartModelSelector accessSelector : accessSelectors) { - this.selectors[i++] = writer.add(accessSelector); - } - } - - @Override - public AndMultipartModelSelector export(RegistryReader handler) { - final List selectors = new ArrayList<>(this.selectors.length); - for (int accessSelector : this.selectors) { - selectors.add(handler.get(accessSelector)); - } - - return new AndMultipartModelSelector(selectors); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashAndPredicate that = (DashAndPredicate) o; - - return Arrays.equals(selectors, that.selectors); - } - - @Override - public int hashCode() { - return Arrays.hashCode(selectors); - } +public final class DashAndPredicate implements DashObject { +public final int[] selectors; + +public DashAndPredicate(int[] selectors) { +this.selectors = selectors; +} + +public DashAndPredicate(AndCondition selector, RegistryWriter writer) { +AndMultipartModelSelectorAccessor access = ((AndMultipartModelSelectorAccessor) selector); + +Iterable accessSelectors = access.getSelectors(); +int count = 0; +for (Condition ignored : accessSelectors) { +count += 1; +} +this.selectors = new int[count]; + +int i = 0; +for (Condition accessSelector : accessSelectors) { +this.selectors[i++] = writer.add(accessSelector); +} +} + +@Override +public AndCondition export(RegistryReader handler) { +final List selectors = new ArrayList<>(this.selectors.length); +for (int accessSelector : this.selectors) { +selectors.add(handler.get(accessSelector)); +} + +return new AndCondition(selectors); +} + +@Override +public boolean equals(Object o) { +if (this == o) return true; +if (o == null || getClass() != o.getClass()) return false; + +DashAndPredicate that = (DashAndPredicate) o; + +return Arrays.equals(selectors, that.selectors); +} + +@Override +public int hashCode() { +return Arrays.hashCode(selectors); +} } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java index 042e86f1..021bb99e 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java @@ -4,58 +4,58 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.OrMultipartModelSelectorAccessor; -import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.client.renderer.block.model.multipart.Condition; import net.minecraft.client.renderer.block.model.multipart.OrCondition; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -public final class DashOrPredicate implements DashObject { - public final int[] selectors; - - public DashOrPredicate(int[] selectors) { - this.selectors = selectors; - } - - public DashOrPredicate(OrMultipartModelSelector selector, RegistryWriter writer) { - OrMultipartModelSelectorAccessor access = ((OrMultipartModelSelectorAccessor) selector); - - Iterable accessSelectors = access.getSelectors(); - int count = 0; - for (MultipartModelSelector ignored : accessSelectors) { - count += 1; - } - this.selectors = new int[count]; - - int i = 0; - for (MultipartModelSelector accessSelector : accessSelectors) { - this.selectors[i++] = writer.add(accessSelector); - } - } - - @Override - public OrMultipartModelSelector export(RegistryReader handler) { - final List selectors = new ArrayList<>(this.selectors.length); - for (int accessSelector : this.selectors) { - selectors.add(handler.get(accessSelector)); - } - - return new OrMultipartModelSelector(selectors); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashOrPredicate that = (DashOrPredicate) o; - - return Arrays.equals(selectors, that.selectors); - } - - @Override - public int hashCode() { - return Arrays.hashCode(selectors); - } +public final class DashOrPredicate implements DashObject { +public final int[] selectors; + +public DashOrPredicate(int[] selectors) { +this.selectors = selectors; +} + +public DashOrPredicate(OrCondition selector, RegistryWriter writer) { +OrMultipartModelSelectorAccessor access = ((OrMultipartModelSelectorAccessor) selector); + +Iterable accessSelectors = access.getSelectors(); +int count = 0; +for (Condition ignored : accessSelectors) { +count += 1; +} +this.selectors = new int[count]; + +int i = 0; +for (Condition accessSelector : accessSelectors) { +this.selectors[i++] = writer.add(accessSelector); +} +} + +@Override +public OrCondition export(RegistryReader handler) { +final List selectors = new ArrayList<>(this.selectors.length); +for (int accessSelector : this.selectors) { +selectors.add(handler.get(accessSelector)); +} + +return new OrCondition(selectors); +} + +@Override +public boolean equals(Object o) { +if (this == o) return true; +if (o == null || getClass() != o.getClass()) return false; + +DashOrPredicate that = (DashOrPredicate) o; + +return Arrays.equals(selectors, that.selectors); +} + +@Override +public int hashCode() { +return Arrays.hashCode(selectors); +} } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java index 9426ca0b..42ec0d34 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java @@ -5,41 +5,41 @@ import dev.notalpha.dashloader.mixin.accessor.SimpleMultipartModelSelectorAccessor; import net.minecraft.client.renderer.block.model.multipart.KeyValueCondition; -public final class DashSimplePredicate implements DashObject { - public final String key; - public final String valueString; - - public DashSimplePredicate(String key, String valueString) { - this.key = key; - this.valueString = valueString; - } - - public DashSimplePredicate(SimpleMultipartModelSelector simpleMultipartModelSelector) { - var access = ((SimpleMultipartModelSelectorAccessor) simpleMultipartModelSelector); - this.key = access.getKey(); - this.valueString = access.getValueString(); - } - - @Override - public SimpleMultipartModelSelector export(RegistryReader handler) { - return new SimpleMultipartModelSelector(this.key, this.valueString); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashSimplePredicate that = (DashSimplePredicate) o; - - if (!key.equals(that.key)) return false; - return valueString.equals(that.valueString); - } - - @Override - public int hashCode() { - int result = key.hashCode(); - result = 31 * result + valueString.hashCode(); - return result; - } +public final class DashSimplePredicate implements DashObject { +public final String key; +public final String valueString; + +public DashSimplePredicate(String key, String valueString) { +this.key = key; +this.valueString = valueString; +} + +public DashSimplePredicate(KeyValueCondition simpleMultipartModelSelector) { +var access = ((SimpleMultipartModelSelectorAccessor) simpleMultipartModelSelector); +this.key = access.getKey(); +this.valueString = access.getValueString(); +} + +@Override +public KeyValueCondition export(RegistryReader handler) { +return new KeyValueCondition(this.key, this.valueString); +} + +@Override +public boolean equals(Object o) { +if (this == o) return true; +if (o == null || getClass() != o.getClass()) return false; + +DashSimplePredicate that = (DashSimplePredicate) o; + +if (!key.equals(that.key)) return false; +return valueString.equals(that.valueString); +} + +@Override +public int hashCode() { +int result = key.hashCode(); +result = 31 * result + valueString.hashCode(); +return result; +} } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashStaticPredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashStaticPredicate.java index f4419be8..7803d11c 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashStaticPredicate.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashStaticPredicate.java @@ -4,33 +4,33 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; public final class DashStaticPredicate implements DashObject { - public final boolean value; +public final boolean value; - public DashStaticPredicate(boolean value) { - this.value = value; - } +public DashStaticPredicate(boolean value) { +this.value = value; +} - public DashStaticPredicate(BooleanSelector multipartModelSelector) { - this.value = multipartModelSelector.selector; - } +public DashStaticPredicate(BooleanSelector multipartModelSelector) { +this.value = multipartModelSelector.selector; +} - @Override - public BooleanSelector export(RegistryReader exportHandler) { - return new BooleanSelector(value); - } +@Override +public BooleanSelector export(RegistryReader exportHandler) { +return new BooleanSelector(value); +} - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; +@Override +public boolean equals(Object o) { +if (this == o) return true; +if (o == null || getClass() != o.getClass()) return false; - DashStaticPredicate that = (DashStaticPredicate) o; +DashStaticPredicate that = (DashStaticPredicate) o; - return value == that.value; - } +return value == that.value; +} - @Override - public int hashCode() { - return (value ? 1 : 0); - } +@Override +public int hashCode() { +return (value ? 1 : 0); +} } diff --git a/src/main/java/dev/notalpha/dashloader/io/Serializer.java b/src/main/java/dev/notalpha/dashloader/io/Serializer.java index e5708dcd..c86414c0 100644 --- a/src/main/java/dev/notalpha/dashloader/io/Serializer.java +++ b/src/main/java/dev/notalpha/dashloader/io/Serializer.java @@ -9,7 +9,7 @@ import dev.notalpha.hyphen.io.ByteBufferIO; import dev.notalpha.hyphen.scan.annotations.DataSubclasses; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.gui.font.providers.UnihexProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.UnihexFont; import org.jetbrains.annotations.NotNull; import java.io.IOException; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java index ea87e42c..3cb7c484 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java @@ -1,12 +1,12 @@ package dev.notalpha.dashloader.mixin.accessor; import net.minecraft.client.renderer.block.model.multipart.AndCondition; -import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.client.renderer.block.model.multipart.Condition; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(AndMultipartModelSelector.class) +@Mixin(AndCondition.class) public interface AndMultipartModelSelectorAccessor { - @Accessor - Iterable getSelectors(); +@Accessor +Iterable getSelectors(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java index 4781441b..9954fa3b 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java @@ -1,22 +1,22 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gui.font.providers.BitmapProvider; // TODO: verify Mojang name -import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name +import net.minecraft.client.gui.font.GlyphContainer; +import net.minecraft.client.gui.font.providers.BitmapProvider; import com.mojang.blaze3d.platform.NativeImage; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(BitmapFont.class) +@Mixin(BitmapProvider.class) public interface BitmapFontAccessor { - @Invoker("") - static BitmapFont init(NativeImage image, GlyphContainer glyphs) { - throw new AssertionError(); - } +@Invoker("") +static BitmapProvider init(NativeImage image, GlyphContainer glyphs) { +throw new AssertionError(); +} - @Accessor - GlyphContainer getGlyphs(); +@Accessor +GlyphContainer getGlyphs(); - @Accessor - NativeImage getImage(); +@Accessor +NativeImage getImage(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java index 8d9bb7f6..85b0efc5 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java @@ -1,39 +1,39 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gui.font.providers.BitmapProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.providers.BitmapProvider; import com.mojang.blaze3d.platform.NativeImage; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(BitmapFont.BitmapFontGlyph.class) +@Mixin(BitmapProvider.BitmapFontGlyph.class) public interface BitmapFontGlyphAccessor { - @Invoker("") - static BitmapFont.BitmapFontGlyph init(float scaleFactor, NativeImage image, int x, int y, int width, int height, int advance, int ascent) { - throw new AssertionError(); - } +@Invoker("") +static BitmapProvider.BitmapFontGlyph init(float scaleFactor, NativeImage image, int x, int y, int width, int height, int advance, int ascent) { +throw new AssertionError(); +} - @Accessor - NativeImage getImage(); +@Accessor +NativeImage getImage(); - @Accessor("x") - int getX(); +@Accessor("x") +int getX(); - @Accessor("y") - int getY(); +@Accessor("y") +int getY(); - @Accessor - float getScaleFactor(); +@Accessor +float getScaleFactor(); - @Accessor - int getWidth(); +@Accessor +int getWidth(); - @Accessor - int getHeight(); +@Accessor +int getHeight(); - @Accessor - int getAdvance(); +@Accessor +int getAdvance(); - @Accessor - int getAscent(); +@Accessor +int getAscent(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java index cab6d21f..89ee0c9a 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gui.font.FontSet; // TODO: verify Mojang name (FontFilterType) +import net.minecraft.client.gui.font.FontFilterType; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -8,6 +8,6 @@ @Mixin(FontFilterType.FilterMap.class) public interface FilterMapAccessor { - @Accessor - Map getActiveFilters(); +@Accessor +Map getActiveFilters(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java index c2352b0c..6362dc35 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java @@ -1,7 +1,7 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gui.font.GlyphProvider; // TODO: verify Mojang name -import net.minecraft.client.gui.font.FontManager; // TODO: verify Mojang name +import net.minecraft.client.gui.font.FontManager; +import net.minecraft.client.gui.font.providers.GlyphProvider; import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; @@ -11,8 +11,8 @@ @Mixin(FontManager.ProviderIndex.class) public interface FontManagerProviderIndexAccessor { - @Invoker("") - static FontManager.ProviderIndex create(Map> providers, List allProviders) { - throw new AssertionError(); - } +@Invoker("") +static FontManager.ProviderIndex create(Map> providers, List allProviders) { +throw new AssertionError(); +} } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java index bf8d5330..0e54eb9f 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gl.GlUniform; // TODO: verify Mojang name (was GlUniform) +import net.minecraft.client.gl.GlUniform; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java index fc15d7bf..0954e087 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java @@ -1,12 +1,12 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.renderer.block.model.multipart.Selector; -import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.client.renderer.block.model.MultipartUnbakedModel; +import net.minecraft.client.renderer.block.model.multipart.Condition; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(MultipartModelComponent.class) +@Mixin(MultipartUnbakedModel.Selector.class) public interface MultipartModelComponentAccessor { - @Accessor() - MultipartModelSelector getSelector(); +@Accessor() +Condition getSelector(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java index 28df4a8f..e43dabaf 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java @@ -1,12 +1,12 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.renderer.block.model.multipart.Condition; // TODO: verify Mojang name (MultipartModelSelector) +import net.minecraft.client.renderer.block.model.multipart.Condition; import net.minecraft.client.renderer.block.model.multipart.OrCondition; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(OrMultipartModelSelector.class) +@Mixin(OrCondition.class) public interface OrMultipartModelSelectorAccessor { - @Accessor - Iterable getSelectors(); +@Accessor +Iterable getSelectors(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java index 3379f341..9bb4751c 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java @@ -2,9 +2,9 @@ import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2IntMap; -import net.minecraft.client.gl.GlUniform; // TODO: verify Mojang name (was GlUniform) -import net.minecraft.client.gl.ShaderProgram; // TODO: verify Mojang name (ShaderProgram) -import net.minecraft.client.gl.ShaderProgramDefinition; // TODO: verify Mojang name +import net.minecraft.client.gl.GlUniform; +import net.minecraft.client.gl.ShaderProgram; +import net.minecraft.client.gl.ShaderProgramDefinition; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java index 850120ce..94fee3d3 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java @@ -4,11 +4,11 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(SimpleMultipartModelSelector.class) +@Mixin(KeyValueCondition.class) public interface SimpleMultipartModelSelectorAccessor { - @Accessor - String getKey(); +@Accessor +String getKey(); - @Accessor - String getValueString(); +@Accessor +String getValueString(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java index 51035e55..8b9f144b 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java @@ -2,7 +2,7 @@ import com.mojang.blaze3d.platform.NativeImage; import net.minecraft.client.renderer.texture.SpriteContents; -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; // TODO: verify Mojang name (ResourceMetadata) +import net.minecraft.server.packs.resources.ResourceMetadata; import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java index 6c680c69..a5d442ff 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java @@ -1,7 +1,7 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name -import net.minecraft.client.gui.font.providers.TrueTypeGlyphProviderBuilder; // TODO: verify Mojang name +import net.minecraft.client.gui.font.GlyphContainer; +import net.minecraft.client.gui.font.TrueTypeFont; import org.lwjgl.util.freetype.FT_Face; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; @@ -11,25 +11,25 @@ @Mixin(TrueTypeFont.class) public interface TrueTypeFontAccessor { - @Accessor - @Mutable - void setBuffer(ByteBuffer thing); +@Accessor +@Mutable +void setBuffer(ByteBuffer thing); - @Accessor - FT_Face getFace(); +@Accessor +FT_Face getFace(); - @Accessor - @Mutable - void setFace(FT_Face thing); +@Accessor +@Mutable +void setFace(FT_Face thing); - @Accessor - float getOversample(); +@Accessor +float getOversample(); - @Accessor - @Mutable - void setOversample(float thing); +@Accessor +@Mutable +void setOversample(float thing); - @Accessor - @Mutable - void setContainer(GlyphContainer container); +@Accessor +@Mutable +void setContainer(GlyphContainer container); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java index 825dd71a..178b394a 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java @@ -1,18 +1,18 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gui.font.GlyphContainer; // TODO: verify Mojang name -import net.minecraft.client.gui.font.providers.UnihexProvider; // TODO: verify Mojang name +import net.minecraft.client.gui.font.GlyphContainer; +import net.minecraft.client.gui.font.UnihexFont; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(UnihexFont.class) public interface UnihexFontAccessor { - @Invoker("") - static UnihexFont create(GlyphContainer glyphs) { - throw new AssertionError(); - } +@Invoker("") +static UnihexFont create(GlyphContainer glyphs) { +throw new AssertionError(); +} - @Accessor - GlyphContainer getGlyphs(); +@Accessor +GlyphContainer getGlyphs(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java index 69f56540..8c9bcce8 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java @@ -1,13 +1,13 @@ package dev.notalpha.dashloader.mixin.accessor; import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.renderer.block.model.WeightedBakedModel; // TODO: verify Mojang name -import net.minecraft.util.random.WeightedRandomList; +import net.minecraft.client.renderer.block.model.WeightedBakedModel; +import net.minecraft.util.random.DataPool; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(WeightedBakedModel.class) public interface WeightedBakedModelAccessor { - @Accessor - DataPool getModels(); +@Accessor +DataPool getModels(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java index 011214da..db99e6ff 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java @@ -15,7 +15,7 @@ import net.minecraft.client.gui.screens.SplashScreen; import net.minecraft.client.gui.screens.TitleScreen; import net.minecraft.client.gui.components.toasts.Toast; -import net.minecraft.server.packs.resources.PreparableReloadListener; // TODO: verify Mojang name (ResourceReload) +import net.minecraft.server.packs.resources.PreparableReloadListener; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; @@ -33,7 +33,7 @@ public class SplashScreenMixin { private long reloadCompleteTime; @Shadow @Final - private PreparableReloadListener reload; // TODO: verify Mojang name + private PreparableReloadListener reload; @Mutable @Shadow @Final @@ -95,7 +95,7 @@ private void done(GuiGraphics context, int mouseX, int mouseY, float delta, Call @Inject( method = "render", - at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/PreparableReloadListener;isComplete()Z // TODO: verify Mojang name", shift = At.Shift.BEFORE) + at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/PreparableReloadListener;isComplete()Z", shift = At.Shift.BEFORE) ) private void removeMinimumTime(GuiGraphics context, int mouseX, int mouseY, float delta, CallbackInfo ci) { if (this.reloadCompleteTime == -1L && this.reload.isComplete()) { diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java index a82bcc2b..c3154b1a 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SplashTextResourceSupplierMixin.java @@ -2,7 +2,7 @@ import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.splash.SplashModule; -import net.minecraft.client.resources.SplashManager; // TODO: verify Mojang name (SplashTextResourceSupplier) +import net.minecraft.client.resources.SplashManager; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.profiling.ProfilerFiller; import org.spongepowered.asm.mixin.Mixin; @@ -12,25 +12,25 @@ import java.util.List; -@Mixin(SplashTextResourceSupplier.class) +@Mixin(SplashManager.class) public class SplashTextResourceSupplierMixin { - @Inject( - method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiler/ProfilerFiller;)Ljava/util/List;", - at = @At(value = "HEAD"), - cancellable = true - ) - private void applySplashCache(ResourceManager resourceManager, ProfilerFiller profiler, CallbackInfoReturnable> cir) { - SplashModule.TEXTS.visit(CacheStatus.LOAD, cir::setReturnValue); - } +@Inject( +method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Ljava/util/List;", +at = @At(value = "HEAD"), +cancellable = true +) +private void applySplashCache(ResourceManager resourceManager, ProfilerFiller profiler, CallbackInfoReturnable> cir) { +SplashModule.TEXTS.visit(CacheStatus.LOAD, cir::setReturnValue); +} - @Inject( - method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiler/ProfilerFiller;)Ljava/util/List;", - at = @At(value = "RETURN") - ) - private void stealSplashCache(ResourceManager resourceManager, ProfilerFiller profiler, CallbackInfoReturnable> cir) { - SplashModule.TEXTS.visit(CacheStatus.SAVE, strings -> { - strings.clear(); - strings.addAll(cir.getReturnValue()); - }); - } +@Inject( +method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Ljava/util/List;", +at = @At(value = "RETURN") +) +private void stealSplashCache(ResourceManager resourceManager, ProfilerFiller profiler, CallbackInfoReturnable> cir) { +SplashModule.TEXTS.visit(CacheStatus.SAVE, strings -> { +strings.clear(); +strings.addAll(cir.getReturnValue()); +}); +} } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java index fdcc4b86..2454e66e 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java @@ -4,7 +4,8 @@ import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.font.FontModule; import dev.notalpha.dashloader.mixin.accessor.FontManagerProviderIndexAccessor; -import net.minecraft.client.gui.font.FontManager; // TODO: verify Mojang name +import net.minecraft.client.gui.font.FontManager; +import net.minecraft.client.gui.font.providers.GlyphProvider; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.profiling.ProfilerFiller; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java index 6b2ca759..4efc32da 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java @@ -4,8 +4,8 @@ import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.font.DashTrueTypeFont; import dev.notalpha.dashloader.client.font.FontModule; -import net.minecraft.client.gui.font.GlyphProvider; // TODO: verify Mojang name -import net.minecraft.client.gui.font.providers.TrueTypeGlyphProviderBuilder; // TODO: verify Mojang name +import net.minecraft.client.gui.font.providers.GlyphProvider; +import net.minecraft.client.gui.font.providers.TrueTypeFontLoader; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.resources.ResourceLocation; import org.lwjgl.util.freetype.FT_Face; @@ -15,22 +15,22 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(TrueTypeFontLoader.class) // TODO: verify Mojang class name (was TrueTypeFontLoader) +@Mixin(TrueTypeFontLoader.class) public abstract class TrueTypeFontLoaderMixin { - @Shadow - public abstract float size(); +@Shadow +public abstract float size(); - @Shadow - public abstract ResourceLocation location(); +@Shadow +public abstract ResourceLocation location(); - @Shadow - public abstract String skip(); +@Shadow +public abstract String skip(); - @Inject( - method = "load", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/font/providers/TrueTypeGlyphProviderBuilder;(Ljava/nio/ByteBuffer;Lorg/lwjgl/util/freetype/FT_Face;FFFFLjava/lang/String;)V") - ) - private void loadInject(ResourceManager resourceManager, CallbackInfoReturnable cir, @Local FT_Face ft_face) { - FontModule.FONT_TO_DATA.visit(CacheStatus.SAVE, map -> map.put(ft_face, new DashTrueTypeFont.FontPrams(location(), size(), skip()))); - } +@Inject( +method = "load", +at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/font/TrueTypeFont;(Ljava/nio/ByteBuffer;Lorg/lwjgl/util/freetype/FT_Face;FFFFLjava/lang/String;)V") +) +private void loadInject(ResourceManager resourceManager, CallbackInfoReturnable cir, @Local FT_Face ft_face) { +FontModule.FONT_TO_DATA.visit(CacheStatus.SAVE, map -> map.put(ft_face, new DashTrueTypeFont.FontPrams(location(), size(), skip()))); +} } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java index 58ec988f..40532dde 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java @@ -4,8 +4,7 @@ import dev.notalpha.dashloader.client.model.ModelModule; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.client.renderer.block.model.MultipartUnbakedModel; // TODO: verify Mojang name -import net.minecraft.client.renderer.block.model.multipart.Selector; +import net.minecraft.client.renderer.block.model.MultipartUnbakedModel; import net.minecraft.world.level.block.state.StateDefinition; import org.apache.commons.lang3.tuple.Pair; import org.spongepowered.asm.mixin.Final; @@ -21,7 +20,7 @@ public abstract class MultipartUnbakedModelSerializedMixin { @Shadow @Final - private List selectors; + private List selectors; @Inject(method = "toModel", at = @At(value = "RETURN")) private void thing(StateDefinition stateManager, CallbackInfoReturnable cir) { diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java index 50c35450..6f598184 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java @@ -4,10 +4,10 @@ import dev.notalpha.dashloader.client.sprite.content.SpriteContentModule; import dev.notalpha.dashloader.mixin.accessor.SpriteContentsAccessor; import net.minecraft.client.renderer.texture.SpriteContents; -import net.minecraft.client.renderer.texture.SpriteOpener; // TODO: verify Mojang name +import net.minecraft.client.renderer.texture.SpriteOpener; import net.minecraft.server.packs.resources.Resource; -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; // TODO: verify Mojang name (ResourceMetadata) -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; // TODO: verify Mojang name +import net.minecraft.server.packs.resources.ResourceMetadata; +import net.minecraft.server.packs.metadata.MetadataSectionSerializer; import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -19,35 +19,35 @@ @Mixin(SpriteOpener.class) public interface SpriteOpenerMixin { - @Inject( - method = "method_52851", - cancellable = true, - locals = LocalCapture.CAPTURE_FAILEXCEPTION, - at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/Resource;getInputStream()Ljava/io/InputStream;", shift = At.Shift.BEFORE) - ) - private static void dashloaderLoad(Collection> metadatas, ResourceLocation id, Resource resource, CallbackInfoReturnable cir, ResourceMetadata resourceMetadata) { - var dashSpriteData = SpriteContentModule.SOURCE.get(CacheStatus.LOAD); - if (dashSpriteData != null) { - SpriteContents spriteContents = dashSpriteData.get(id); - if (spriteContents != null) { - ((SpriteContentsAccessor) spriteContents).setMetadata(resourceMetadata); - cir.setReturnValue(spriteContents); - } - } - } +@Inject( +method = "method_52851", +cancellable = true, +locals = LocalCapture.CAPTURE_FAILEXCEPTION, +at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/Resource;getInputStream()Ljava/io/InputStream;", shift = At.Shift.BEFORE) +) +private static void dashloaderLoad(Collection> metadatas, ResourceLocation id, Resource resource, CallbackInfoReturnable cir, ResourceMetadata resourceMetadata) { +var dashSpriteData = SpriteContentModule.SOURCE.get(CacheStatus.LOAD); +if (dashSpriteData != null) { +SpriteContents spriteContents = dashSpriteData.get(id); +if (spriteContents != null) { +((SpriteContentsAccessor) spriteContents).setMetadata(resourceMetadata); +cir.setReturnValue(spriteContents); +} +} +} - @Inject( - method = "method_52851", - at = @At(value = "RETURN") - ) - private static void dashloaderSave(Collection collection, ResourceLocation id, Resource resource, CallbackInfoReturnable cir) { - var dashSpriteData = SpriteContentModule.SOURCE.get(CacheStatus.SAVE); - if (dashSpriteData != null) { - if (dashSpriteData.containsKey(id)) { // filter out sprites with the same id - dashSpriteData.put(id, null); - return; - } - dashSpriteData.put(id, cir.getReturnValue()); - } - } +@Inject( +method = "method_52851", +at = @At(value = "RETURN") +) +private static void dashloaderSave(Collection collection, ResourceLocation id, Resource resource, CallbackInfoReturnable cir) { +var dashSpriteData = SpriteContentModule.SOURCE.get(CacheStatus.SAVE); +if (dashSpriteData != null) { +if (dashSpriteData.containsKey(id)) { +dashSpriteData.put(id, null); +return; +} +dashSpriteData.put(id, cir.getReturnValue()); +} +} } diff --git a/src/main/resources/dashloader.accesswidener b/src/main/resources/dashloader.accesswidener index 0c3090ff..f4b00e40 100644 --- a/src/main/resources/dashloader.accesswidener +++ b/src/main/resources/dashloader.accesswidener @@ -4,7 +4,6 @@ accessible class net/minecraft/client/renderer/texture/SpriteContents$AnimatedTe accessible class net/minecraft/client/renderer/texture/SpriteContents$FrameInfo # TODO: verify Mojang name for ParticleManager$SimpleSpriteProvider accessible class net/minecraft/client/particle/ParticleManager$SimpleSpriteProvider -# TODO: verify Mojang name for BitmapFont$BitmapFontGlyph accessible class net/minecraft/client/gui/font/providers/BitmapProvider$BitmapFontGlyph # BakedModelManager (YARN) = ModelBakery (Mojang) in net.minecraft.client.resources.model accessible class net/minecraft/client/resources/model/ModelBakery$BakingResult From aa65515cf53c97239f2626255769bf774a43161a Mon Sep 17 00:00:00 2001 From: Darker935 Date: Fri, 27 Feb 2026 15:20:55 -0300 Subject: [PATCH 09/14] Fix Gradle distribution URL to include the correct version 9.3.0 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0e25f1aa..5dc98dbc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From a890c25a0c0647da422d3a09e2cce92da74cc25f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 18:45:14 +0000 Subject: [PATCH 10/14] =?UTF-8?q?Fix=20YARN=E2=86=92Mojang=20mapping=20iss?= =?UTF-8?q?ues:=20shader=20classes,=20Dazy=20subclasses,=20AffineTransform?= =?UTF-8?q?ationMixin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Darker935 <70950705+Darker935@users.noreply.github.com> --- .../client/model/DashBasicBakedModel.java | 5 ++-- .../client/model/DashMultipartBakedModel.java | 6 ++-- .../client/model/DashWeightedBakedModel.java | 10 ++++--- .../model/components/DashBakedQuad.java | 5 ++-- .../components/DashBakedQuadCollection.java | 6 ++-- .../components/DashModelBakeSettings.java | 4 +-- .../fallback/MultiUnbakedBakedModel.java | 3 +- .../model/fallback/UnbakedBakedModel.java | 3 +- .../dashloader/client/shader/DashDefines.java | 2 +- .../client/shader/DashPostEffectPipeline.java | 2 +- .../shader/DashShaderProgramDefinition.java | 16 +++++----- .../DashShaderProgramDefinitionUniform.java | 10 +++---- .../client/shader/DashShaderProgramKey.java | 4 +-- .../client/shader/DashShaderSourceKey.java | 12 ++++---- .../client/shader/ShaderModule.java | 14 ++++----- .../mixin/accessor/GlUniformAccessor.java | 4 +-- .../mixin/accessor/ShaderProgramAccessor.java | 22 +++++++------- .../cache/shader/ShaderLoaderMixin.java | 14 ++++----- .../misc/AffineTransformationMixin.java | 2 +- src/main/resources/dashloader.accesswidener | 29 +++++-------------- 20 files changed, 83 insertions(+), 90 deletions(-) diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java index f90e4b37..b23bf0eb 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java @@ -11,11 +11,12 @@ import dev.notalpha.dashloader.client.sprite.content.DashSprite; import dev.notalpha.dashloader.mixin.accessor.BasicBakedModelAccessor; import dev.notalpha.hyphen.scan.annotations.DataNullable; -import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import java.util.function.Function; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.SimpleBakedModel; import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.Material; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; @@ -141,7 +142,7 @@ public DazyImpl(DashBakedQuadCollection.DazyImpl quads, } @Override - protected SimpleBakedModel resolve(Function /* TODO: verify replacement */ spriteLoader) { + protected SimpleBakedModel resolve(Function spriteLoader) { List quads = this.quads.get(spriteLoader); var faceQuadsOut = new HashMap>(); this.faceQuads.forEach((direction, dazy) -> faceQuadsOut.put(direction, dazy.get(spriteLoader))); diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java index 4444be8e..beda9696 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java @@ -8,10 +8,12 @@ import dev.notalpha.dashloader.mixin.accessor.MultipartBakedModelAccessor; import dev.notalpha.dashloader.mixin.accessor.MultipartModelComponentAccessor; import net.minecraft.world.level.block.state.BlockState; -import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import java.util.function.Function; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.renderer.block.model.MultiPartBakedModel; import net.minecraft.client.renderer.block.model.multipart.Condition; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.Material; import net.minecraft.resources.ResourceLocation; import java.util.ArrayList; @@ -117,7 +119,7 @@ public DazyImpl(List components) { } @Override - protected MultiPartBakedModel resolve(Function /* TODO: verify replacement */ spriteLoader) { + protected MultiPartBakedModel resolve(Function spriteLoader) { List componentsOut = new ArrayList<>(this.components.size()); for (Component component : components) { diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java index 6c8ff712..dc540b5f 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java @@ -6,10 +6,12 @@ import dev.notalpha.dashloader.client.Dazy; import dev.notalpha.dashloader.client.model.components.DashWeightedModelEntry; import dev.notalpha.dashloader.mixin.accessor.WeightedBakedModelAccessor; -import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import java.util.function.Function; import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.renderer.block.model.WeightedBakedModel; // TODO: verify Mojang name -import net.minecraft.util.random.WeightedRandomList; +import net.minecraft.client.renderer.block.model.WeightedBakedModel; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.Material; +import net.minecraft.util.random.DataPool; import java.util.ArrayList; import java.util.List; @@ -60,7 +62,7 @@ public DazyImpl(List entries) { } @Override - protected WeightedBakedModel resolve(Function /* TODO: verify replacement */ spriteLoader) { + protected WeightedBakedModel resolve(Function spriteLoader) { DataPool.Builder models = DataPool.builder(); for (Entry entry : this.entries) { BakedModel model = entry.model.get(spriteLoader); diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java index 0191ab37..3884939d 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java @@ -5,9 +5,10 @@ import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.client.Dazy; import dev.notalpha.dashloader.client.sprite.content.DashSprite; -import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import java.util.function.Function; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.Material; import net.minecraft.core.Direction; import java.util.Arrays; @@ -80,7 +81,7 @@ public DazyImpl(int[] vertexData, int colorIndex, Direction face, boolean shade, } @Override - protected BakedQuad resolve(Function /* TODO: verify replacement */ spriteLoader) { + protected BakedQuad resolve(Function spriteLoader) { TextureAtlasSprite sprite = this.sprite.get(spriteLoader); return new BakedQuad(vertexData, colorIndex, face, sprite, shade, lightEmission); } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java index 8e950364..45421d49 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java @@ -4,8 +4,10 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.client.Dazy; -import java.util.function.Function; // TODO: was SpriteGetter - verify replacement with Function or equivalent +import java.util.function.Function; import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.Material; import java.util.ArrayList; import java.util.List; @@ -56,7 +58,7 @@ public DazyImpl(List quads) { } @Override - protected List resolve(Function /* TODO: verify replacement */ spriteLoader) { + protected List resolve(Function spriteLoader) { var out = new ArrayList(quads.size()); quads.forEach( dazyBakedQuad -> out.add(dazyBakedQuad.get(spriteLoader)) diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java index f3c7969b..51777d10 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java @@ -3,8 +3,8 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.resources.model.ModelState; // TODO: verify Mojang name -import com.mojang.math.ItemTransform; +import com.mojang.math.Transformation; +import net.minecraft.client.resources.model.ModelState; import org.joml.Matrix4f; import java.util.Arrays; diff --git a/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java index af12f4a8..80d06b2b 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java @@ -2,8 +2,9 @@ import dev.notalpha.dashloader.client.Dazy; import dev.notalpha.dashloader.client.model.components.DashModelBakeSettings; -import net.minecraft.client.renderer.block.model.*; // TODO: verify Mojang package +import net.minecraft.client.renderer.block.model.*; import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.resources.model.BakedModel; import java.util.Map; diff --git a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java index dea78ecc..2e332cdc 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java @@ -1,8 +1,9 @@ package dev.notalpha.dashloader.client.model.fallback; import dev.notalpha.dashloader.client.Dazy; -import net.minecraft.client.renderer.block.model.*; // TODO: verify Mojang package +import net.minecraft.client.renderer.block.model.*; import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.resources.model.BakedModel; /** * An unbaked model which holds a baked model, used for fallback to reuse cached models. diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java index 4dbc7c94..eb39fc88 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java @@ -3,7 +3,7 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.collection.ObjectObjectList; import dev.notalpha.dashloader.api.registry.RegistryReader; -import net.minecraft.client.gl.Defines; // TODO: verify Mojang name +import net.minecraft.client.renderer.Defines; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java index 9f0ac6b1..a778ed28 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java @@ -4,7 +4,7 @@ import dev.notalpha.dashloader.api.collection.IntIntList; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.gl.PostEffectPipeline; // TODO: verify Mojang name +import net.minecraft.client.renderer.PostEffectPipeline; import net.minecraft.resources.ResourceLocation; import java.util.ArrayList; diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java index 9564b7a9..2ab33a87 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java @@ -3,18 +3,18 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.gl.ShaderProgramDefinition; // TODO: verify Mojang name +import net.minecraft.client.renderer.ShaderProgramConfig; import java.util.ArrayList; -public class DashShaderProgramDefinition implements DashObject { +public class DashShaderProgramDefinition implements DashObject { public final int vertex; public final int fragment; public final String[] samplers; public final int[] uniforms; public final int defines; - public DashShaderProgramDefinition(ShaderProgramDefinition thing, RegistryWriter writer) { + public DashShaderProgramDefinition(ShaderProgramConfig thing, RegistryWriter writer) { this.vertex = writer.add(thing.vertex()); this.fragment = writer.add(thing.fragment()); this.samplers = new String[thing.samplers().size()]; @@ -37,18 +37,18 @@ public DashShaderProgramDefinition(int vertex, int fragment, String[] samplers, } @Override - public ShaderProgramDefinition export(RegistryReader reader) { - var samplers = new ArrayList(this.samplers.length); - var uniforms = new ArrayList(this.uniforms.length); + public ShaderProgramConfig export(RegistryReader reader) { + var samplers = new ArrayList(this.samplers.length); + var uniforms = new ArrayList(this.uniforms.length); for (String sampler : this.samplers) { - samplers.add(new ShaderProgramDefinition.Sampler(sampler)); + samplers.add(new ShaderProgramConfig.Sampler(sampler)); } for (int uniform : this.uniforms) { uniforms.add(reader.get(uniform)); } - return new ShaderProgramDefinition(reader.get(this.vertex), reader.get(this.fragment), + return new ShaderProgramConfig(reader.get(this.vertex), reader.get(this.fragment), samplers, uniforms, reader.get(this.defines)); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java index d64e352d..a354cea1 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java @@ -2,19 +2,19 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; -import net.minecraft.client.gl.ShaderProgramDefinition; // TODO: verify Mojang name +import net.minecraft.client.renderer.ShaderProgramConfig; import java.util.ArrayList; import java.util.List; -public class DashShaderProgramDefinitionUniform implements DashObject { +public class DashShaderProgramDefinitionUniform implements DashObject { public final String name; public final String type; public final int count; public final float[] values; - public DashShaderProgramDefinitionUniform(ShaderProgramDefinition.Uniform uniform) { + public DashShaderProgramDefinitionUniform(ShaderProgramConfig.Uniform uniform) { this.name = uniform.name(); this.type = uniform.type(); this.count = uniform.count(); @@ -32,11 +32,11 @@ public DashShaderProgramDefinitionUniform(String name, String type, int count, f } @Override - public ShaderProgramDefinition.Uniform export(RegistryReader reader) { + public ShaderProgramConfig.Uniform export(RegistryReader reader) { List values = new ArrayList<>(this.values.length); for (float f : this.values) { values.add(f); } - return new ShaderProgramDefinition.Uniform(this.name, this.type, this.count, values); + return new ShaderProgramConfig.Uniform(this.name, this.type, this.count, values); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java index c6e0cdfa..08b49f2f 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java @@ -3,8 +3,8 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.gl.Defines; // TODO: verify Mojang name -import net.minecraft.client.gl.ShaderProgramKey; // TODO: verify Mojang name +import net.minecraft.client.renderer.Defines; +import net.minecraft.client.renderer.ShaderProgramKey; import java.util.HashSet; import java.util.List; diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java index 2f43cb8c..21b3b7a1 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java @@ -3,14 +3,14 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.gl.CompiledShader; // TODO: verify Mojang name -import net.minecraft.client.gl.ShaderLoader.ShaderSourceKey; // TODO: verify Mojang name +import com.mojang.blaze3d.shaders.ShaderType; +import net.minecraft.client.renderer.ShaderManager; -public class DashShaderSourceKey implements DashObject { +public class DashShaderSourceKey implements DashObject { public final int id; public final int type; - public DashShaderSourceKey(ShaderSourceKey key, RegistryWriter writer) { + public DashShaderSourceKey(ShaderManager.ShaderSourceKey key, RegistryWriter writer) { this.id = writer.add(key.id()); this.type = key.type().ordinal(); } @@ -21,7 +21,7 @@ public DashShaderSourceKey(int id, int type) { } @Override - public ShaderSourceKey export(RegistryReader reader) { - return new ShaderSourceKey(reader.get(this.id), CompiledShader.Type.values()[this.type]); + public ShaderManager.ShaderSourceKey export(RegistryReader reader) { + return new ShaderManager.ShaderSourceKey(reader.get(this.id), ShaderType.values()[this.type]); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java b/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java index 4d25fc05..f7e2e4e3 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java @@ -11,16 +11,16 @@ import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.config.Option; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.gl.ShaderLoader; // TODO: verify Mojang name -import net.minecraft.client.gl.ShaderProgramDefinition; // TODO: verify Mojang name +import net.minecraft.client.renderer.ShaderManager; +import net.minecraft.client.renderer.ShaderProgramConfig; import net.minecraft.resources.ResourceLocation; import java.util.ArrayList; import java.util.HashMap; public class ShaderModule implements DashModule { - public static final CachingData> SHADER_SOURCES = new CachingData<>(); - public static final CachingData> SHADER_DEFINITIONS = new CachingData<>(); + public static final CachingData> SHADER_SOURCES = new CachingData<>(); + public static final CachingData> SHADER_DEFINITIONS = new CachingData<>(); // public static final CachingData> POST_EFFECTS = new CachingData<>(); // TODO @@ -35,7 +35,6 @@ public void reset(Cache cache) { public Data save(RegistryWriter factory, StepTask task) { var data1 = SHADER_SOURCES.get(CacheStatus.SAVE); var data2 = SHADER_DEFINITIONS.get(CacheStatus.SAVE); -// var data3 = POST_EFFECTS.get(CacheStatus.SAVE); if (data1 == null || data2 == null) { return null; @@ -43,7 +42,6 @@ public Data save(RegistryWriter factory, StepTask task) { var out = new IntObjectList(new ArrayList<>(data1.size())); var out2 = new IntIntList(new ArrayList<>(data2.size())); -// var out3 = new IntIntList(new ArrayList<>(data3.size())); data1.forEach((identifier, entry) -> { out.put(factory.add(identifier), entry); @@ -62,8 +60,8 @@ public Data save(RegistryWriter factory, StepTask task) { @Override public void load(Data data, RegistryReader reader, StepTask task) { - var out1 = new HashMap(data.data1.list().size()); - var out2 = new HashMap(data.data2.list().size()); + var out1 = new HashMap(data.data1.list().size()); + var out2 = new HashMap(data.data2.list().size()); // var out3 = new HashMap(data.data3.list().size()); data.data1.forEach((key, value) -> out1.put(reader.get(key), value)); data.data2.forEach((key, value) -> out2.put(reader.get(key), reader.get(value))); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java index 0e54eb9f..4daffb79 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gl.GlUniform; +import com.mojang.blaze3d.shaders.Uniform; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; @@ -8,7 +8,7 @@ import java.nio.FloatBuffer; import java.nio.IntBuffer; -@Mixin(GlUniform.class) +@Mixin(Uniform.class) public interface GlUniformAccessor { @Accessor IntBuffer getIntData(); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java index 9bb4751c..d96f3816 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java @@ -2,9 +2,9 @@ import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2IntMap; -import net.minecraft.client.gl.GlUniform; -import net.minecraft.client.gl.ShaderProgram; -import net.minecraft.client.gl.ShaderProgramDefinition; +import com.mojang.blaze3d.shaders.Uniform; +import net.minecraft.client.renderer.CompiledShaderProgram; +import net.minecraft.client.renderer.ShaderProgramConfig; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; @@ -12,14 +12,14 @@ import java.util.List; import java.util.Map; -@Mixin(ShaderProgram.class) +@Mixin(CompiledShaderProgram.class) public interface ShaderProgramAccessor { @Accessor - List getSamplers(); + List getSamplers(); @Accessor @Mutable - void setSamplers(List samplers); + void setSamplers(List samplers); @Accessor Object2IntMap getSamplerTextures(); @@ -36,22 +36,22 @@ public interface ShaderProgramAccessor { void setSamplerLocations(IntList samplerLocations); @Accessor - List getUniforms(); + List getUniforms(); @Accessor @Mutable - void setUniforms(List uniforms); + void setUniforms(List uniforms); @Accessor - Map getUniformsByName(); + Map getUniformsByName(); @Accessor @Mutable - void setUniformsByName(Map uniformsByName); + void setUniformsByName(Map uniformsByName); @Accessor @Mutable - Map getUniformDefinitionsByName(); + Map getUniformDefinitionsByName(); @Accessor @Mutable diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java index b2e98ae0..1a60b657 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java @@ -7,8 +7,8 @@ import com.llamalad7.mixinextras.sugar.Local; import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.shader.ShaderModule; -import net.minecraft.client.gl.ShaderLoader; // TODO: verify Mojang name -import net.minecraft.client.gl.ShaderProgramDefinition; // TODO: verify Mojang name +import net.minecraft.client.renderer.ShaderManager; +import net.minecraft.client.renderer.ShaderProgramConfig; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.resources.ResourceLocation; @@ -19,16 +19,16 @@ import java.util.Map; import java.util.function.Predicate; -@Mixin(ShaderLoader.class) +@Mixin(ShaderManager.class) public abstract class ShaderLoaderMixin { @WrapOperation( - method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiler/ProfilerFiller;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;", + method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Lnet/minecraft/client/renderer/ShaderManager$Definitions;", at = @At( value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/ResourceManager;findResources(Ljava/lang/String;Ljava/util/function/Predicate;)Ljava/util/Map;" ) ) - private Map skipCached(ResourceManager instance, String s, Predicate identifierPredicate, Operation> original, @Local(ordinal = 0) ImmutableMap.Builder builder, @Local(ordinal = 1) ImmutableMap.Builder builder2) { + private Map skipCached(ResourceManager instance, String s, Predicate identifierPredicate, Operation> original, @Local(ordinal = 0) ImmutableMap.Builder builder, @Local(ordinal = 1) ImmutableMap.Builder builder2) { var sources = ShaderModule.SHADER_SOURCES.get(CacheStatus.LOAD); var definitions = ShaderModule.SHADER_DEFINITIONS.get(CacheStatus.LOAD); if (sources != null && definitions != null) { @@ -56,8 +56,8 @@ private Map skipCached(ResourceManager instance, Str // return original.call(instance, resourceManager); // } - @WrapMethod(method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiler/ProfilerFiller;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;") - private ShaderLoader.Definitions thing(ResourceManager resourceManager, ProfilerFiller profiler, Operation original) { + @WrapMethod(method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Lnet/minecraft/client/renderer/ShaderManager$Definitions;") + private ShaderManager.Definitions thing(ResourceManager resourceManager, ProfilerFiller profiler, Operation original) { var og = original.call(resourceManager, profiler); ShaderModule.SHADER_SOURCES.visit(CacheStatus.SAVE, map -> map.putAll(og.shaderSources())); ShaderModule.SHADER_DEFINITIONS.visit(CacheStatus.SAVE, map -> map.putAll(og.programs())); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java index ec83beb2..4eb27fa3 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/AffineTransformationMixin.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.mixin.option.misc; -import com.mojang.math.ItemTransform; +import com.mojang.math.Transformation; import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/resources/dashloader.accesswidener b/src/main/resources/dashloader.accesswidener index f4b00e40..acf389f3 100644 --- a/src/main/resources/dashloader.accesswidener +++ b/src/main/resources/dashloader.accesswidener @@ -27,17 +27,16 @@ accessible class net/minecraft/client/gui/font/UnihexFont$FontImage32x16 accessible class net/minecraft/client/gui/font/FontSet$GlyphPair # TODO: verify Mojang name for FontManager$ProviderIndex accessible class net/minecraft/client/gui/font/FontManager$ProviderIndex -# TODO: verify Mojang name for ShaderLoader$Cache -accessible class net/minecraft/client/gl/ShaderLoader$Cache -# TODO: verify Mojang name for ShaderLoader$ShaderSourceKey -accessible class net/minecraft/client/gl/ShaderLoader$ShaderSourceKey +# ShaderManager (Mojang) = ShaderLoader (YARN) in net.minecraft.client.renderer +accessible class net/minecraft/client/renderer/ShaderManager$Cache +# ShaderManager.ShaderSourceKey (Mojang) = ShaderLoader.ShaderSourceKey (YARN) +accessible class net/minecraft/client/renderer/ShaderManager$ShaderSourceKey # TODO: verify VertexConsumerProvider$Immediate equivalent in Mojang (was DrawContext.vertexConsumers) accessible field net/minecraft/client/gui/GuiGraphics vertexConsumers Lcom/mojang/blaze3d/vertex/VertexConsumer; # TODO: verify Mojang name for ZipFileWrapper (was ZipResourcePack$ZipFileWrapper) accessible class net/minecraft/server/packs/FilePackResources$SharedZipFileAccess accessible class net/minecraft/client/Minecraft$LoadingContext -# TODO: verify Mojang name for ShaderLoader$Cache.shaderPrograms -accessible field net/minecraft/client/gl/ShaderLoader$Cache shaderPrograms Ljava/util/Map; +accessible field net/minecraft/client/renderer/ShaderManager$Cache shaderPrograms Ljava/util/Map; accessible field net/minecraft/client/renderer/block/model/ItemTransforms thirdPersonLeftHand Lnet/minecraft/client/renderer/block/model/ItemTransform; accessible field net/minecraft/client/renderer/block/model/ItemTransforms thirdPersonRightHand Lnet/minecraft/client/renderer/block/model/ItemTransform; accessible field net/minecraft/client/renderer/block/model/ItemTransforms firstPersonLeftHand Lnet/minecraft/client/renderer/block/model/ItemTransform; @@ -60,19 +59,5 @@ accessible method net/minecraft/client/gui/font/UnihexFont$FontImage16x16 accessible method net/minecraft/client/gui/font/UnihexFont$FontImage32x16 ([II)V # TODO: verify Mojang name for UnihexFont$UnicodeTextureGlyph. and UnihexFont$BitmapGlyph accessible method net/minecraft/client/gui/font/UnihexFont$UnicodeTextureGlyph (Lnet/minecraft/client/gui/font/UnihexFont$BitmapGlyph;II)V -# TODO: verify Mojang name for ShaderLoader$ShaderSourceKey. and CompiledShader$Type -accessible method net/minecraft/client/gl/ShaderLoader$ShaderSourceKey (Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/gl/CompiledShader$Type;)V -# TODO: verify Mojang name for ShaderProgram and GlUniform (ShaderInstance/Uniform in Mojang?) -mutable field net/minecraft/client/gl/ShaderProgram modelViewMat Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram projectionMat Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram textureMat Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram screenSize Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram colorModulator Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram light0Direction Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram light1Direction Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram fogStart Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram fogEnd Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram fogColor Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram fogShape Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram lineWidth Lnet/minecraft/client/gl/GlUniform; -mutable field net/minecraft/client/gl/ShaderProgram gameTime Lnet/minecraft/client/gl/GlUniform; +accessible method net/minecraft/client/renderer/ShaderManager$ShaderSourceKey (Lnet/minecraft/resources/ResourceLocation;Lcom/mojang/blaze3d/shaders/ShaderType;)V + From fdfa330326aeee2d71d76440c9f3137d9a190d33 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 00:23:54 +0000 Subject: [PATCH 11/14] Fix Modrinth plugin version, add CI build workflow Co-authored-by: Darker935 <70950705+Darker935@users.noreply.github.com> --- .github/workflows/build.yml | 35 +++++++++++++++++++++++++++++++++++ build.gradle | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..0543f4ce --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,35 @@ +name: Build + +on: + push: + branches: [ "main", "copilot/**" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Java 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'temurin' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Build with Gradle + run: ./gradlew build --no-daemon + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + if: success() + with: + name: build-artifacts + path: build/libs/*.jar diff --git a/build.gradle b/build.gradle index 645fe9e4..e4a7efab 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { // Publishing id 'com.matthewprenger.cursegradle' version '1.4.0' - id "com.modrinth.minotaur" version "2.+" + id "com.modrinth.minotaur" version "2.8.10" id 'fabric-loom' version "${loom_version}" id 'maven-publish' From 3fb181e590fafa3855a3f0855e885447a8432c23 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 00:34:57 +0000 Subject: [PATCH 12/14] Fix Gradle 9 build error: move sourceCompatibility into java {} block Co-authored-by: Darker935 <70950705+Darker935@users.noreply.github.com> --- build.gradle | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index e4a7efab..acdac489 100644 --- a/build.gradle +++ b/build.gradle @@ -7,9 +7,6 @@ plugins { id 'maven-publish' } -sourceCompatibility = JavaVersion.VERSION_21 -targetCompatibility = JavaVersion.VERSION_21 - archivesBaseName = project.archives_base_name version = project.mod_version group = project.maven_group @@ -92,6 +89,8 @@ tasks.withType(JavaCompile).configureEach { } java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 //include sources in maven publish withSourcesJar() } From ce5d76f01352fd1415c7f414ac2679c5fd082e84 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 00:49:25 +0000 Subject: [PATCH 13/14] Fix Gradle 9 error: replace archivesBaseName with base.archivesName Co-authored-by: Darker935 <70950705+Darker935@users.noreply.github.com> --- build.gradle | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index acdac489..ed87a7c6 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,9 @@ plugins { id 'maven-publish' } -archivesBaseName = project.archives_base_name +base { + archivesName = project.archives_base_name +} version = project.mod_version group = project.maven_group @@ -97,7 +99,7 @@ java { jar { from("LICENSE") { - rename { "${it}_${project.archivesBaseName}" } + rename { "${it}_${project.base.archivesName}" } } } From 5272b224708748fd68e159348a63ea72407941e8 Mon Sep 17 00:00:00 2001 From: Darker935 Date: Sat, 28 Feb 2026 00:15:46 -0300 Subject: [PATCH 14/14] Updated for 1.21.10 (AI made) --- build.gradle | 93 +++--- cfr.jar | Bin 0 -> 2162315 bytes inspect.java | 31 ++ .../dashloader/client/DashLoaderClient.java | 53 +--- .../dashloader/client/ModMenuCompat.java | 3 +- .../dashloader/client/atlas/AtlasModule.java | 2 +- .../client/blockstate/DashBlockState.java | 12 +- .../client/font/DashBitmapFont.java | 9 +- .../client/font/DashBitmapFontGlyph.java | 7 +- .../dashloader/client/font/DashBlankFont.java | 8 +- .../client/font/DashFontFilterPair.java | 18 +- .../dashloader/client/font/DashSpaceFont.java | 18 +- .../client/font/DashTrueTypeFont.java | 118 +++---- .../client/font/DashUnihexFont.java | 128 ++++++-- .../dashloader/client/font/FontModule.java | 12 +- .../identifier/DashModelIdentifier.java | 49 --- .../client/model/DashBasicBakedModel.java | 154 --------- .../client/model/DashMultipartBakedModel.java | 148 --------- .../client/model/DashWeightedBakedModel.java | 84 ----- .../dashloader/client/model/ModelModule.java | 265 +--------------- .../model/components/BakedQuadCollection.java | 13 - .../model/components/DashBakedQuad.java | 89 ------ .../components/DashBakedQuadCollection.java | 69 ---- .../client/model/components/DashMesh.java | 83 ----- .../components/DashModelBakeSettings.java | 66 ---- .../components/DashModelTransformation.java | 133 -------- .../components/DashWeightedModelEntry.java | 43 --- .../fallback/MultiUnbakedBakedModel.java | 30 -- .../fallback/UnbakedBakedGroupableModel.java | 33 -- .../model/fallback/UnbakedBakedModel.java | 26 -- .../model/predicates/BooleanSelector.java | 15 +- .../model/predicates/DashAndPredicate.java | 28 +- .../model/predicates/DashOrPredicate.java | 28 +- .../model/predicates/DashSimplePredicate.java | 32 +- .../dashloader/client/shader/DashDefines.java | 35 -- .../client/shader/DashPostEffectPipeline.java | 44 --- .../shader/DashShaderProgramDefinition.java | 54 ---- .../DashShaderProgramDefinitionUniform.java | 42 --- .../client/shader/DashShaderProgramKey.java | 37 --- .../client/shader/DashShaderSourceKey.java | 27 -- .../client/shader/ShaderModule.java | 61 +--- .../client/sprite/content/DashImage.java | 55 ---- .../client/sprite/content/DashSprite.java | 54 ---- .../sprite/content/DashSpriteAnimation.java | 67 ---- .../content/DashSpriteAnimationFrame.java | 44 --- .../sprite/content/DashSpriteContents.java | 100 ------ .../sprite/content/SpriteContentModule.java | 70 ---- .../sprite/stitch/DashStitchResult.java | 84 ----- .../client/sprite/stitch/DashTextureSlot.java | 18 -- .../sprite/stitch/DashTextureStitcher.java | 155 --------- .../sprite/stitch/SpriteStitcherModule.java | 91 ------ .../notalpha/dashloader/client/ui/Color.java | 45 --- .../dashloader/client/ui/ConfigScreen.java | 78 ----- .../dashloader/client/ui/DrawerUtil.java | 154 --------- .../dashloader/client/ui/toast/DashToast.java | 255 --------------- .../client/ui/toast/DashToastState.java | 113 ------- .../client/ui/toast/DashToastStatus.java | 7 - .../client/ui/widget/ConfigListWidget.java | 298 ------------------ .../notalpha/dashloader/io/Serializer.java | 16 - .../dashloader/misc/ObjectDumper.java | 2 +- .../dashloader/misc/TranslationHelper.java | 6 +- .../AndMultipartModelSelectorAccessor.java | 12 - .../accessor/BasicBakedModelAccessor.java | 25 -- .../mixin/accessor/BitmapFontAccessor.java | 6 +- .../accessor/BitmapFontGlyphAccessor.java | 11 +- .../mixin/accessor/FilterMapAccessor.java | 6 +- .../FontManagerPreparationAccessor.java | 24 ++ .../FontManagerProviderIndexAccessor.java | 18 -- .../mixin/accessor/GlUniformAccessor.java | 30 -- .../mixin/accessor/ModelLoaderAccessor.java | 6 +- .../accessor/MultipartBakedModelAccessor.java | 24 -- .../MultipartModelComponentAccessor.java | 12 - .../mixin/accessor/NativeImageAccessor.java | 4 +- .../OrMultipartModelSelectorAccessor.java | 12 - .../mixin/accessor/ShaderProgramAccessor.java | 61 ---- .../SimpleMultipartModelSelectorAccessor.java | 14 - .../accessor/SpriteAnimationAccessor.java | 25 -- .../SpriteAnimationFrameAccessor.java | 20 -- .../accessor/SpriteContentsAccessor.java | 46 --- .../mixin/accessor/TrueTypeFontAccessor.java | 35 -- .../TrueTypeGlyphProviderAccessor.java | 15 + .../mixin/accessor/UnihexFontAccessor.java | 18 -- .../accessor/UnihexProviderAccessor.java | 18 ++ .../accessor/WeightedBakedModelAccessor.java | 13 - .../accessor/ZipResourcePackAccessor.java | 11 - .../ZipWrapperResourcePackAccessor.java | 13 - .../dashloader/mixin/main/BootstrapMixin.java | 26 -- .../dashloader/mixin/main/KeyboardMixin.java | 47 --- .../mixin/main/MinecraftClientMixin.java | 34 -- .../ReloadableResourceManagerImplMixin.java | 57 ---- .../mixin/main/SplashScreenMixin.java | 105 ------ .../mixin/option/WallBlockMixin.java | 166 ---------- .../option/cache/SpriteAtlasTextureMixin.java | 94 ------ .../cache/font/FontManagerOverride.java | 17 +- .../cache/font/TrueTypeFontLoaderMixin.java | 36 --- .../model/BakedModelManagerOverride.java | 61 ---- .../cache/model/BlockStatesLoaderMixin.java | 29 -- .../model/MultipartUnbakedModelMixin.java | 24 -- .../MultipartUnbakedModelSerializedMixin.java | 31 -- .../cache/shader/ShaderLoaderMixin.java | 68 ---- .../sprite/content/SpriteOpenerMixin.java | 53 ---- .../stitch/StitchSpriteLoaderMixin.java | 54 ---- .../option/misc/ModelIdentifierMixin.java | 39 --- src/main/resources/dashloader.accesswidener | 62 ---- src/main/resources/dashloader.mixins.json | 45 +-- 105 files changed, 415 insertions(+), 5024 deletions(-) create mode 100644 cfr.jar create mode 100644 inspect.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashMesh.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/Color.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastStatus.java delete mode 100644 src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerPreparationAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeGlyphProviderAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java create mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexProviderAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java delete mode 100644 src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java diff --git a/build.gradle b/build.gradle index acdac489..c1ce0b19 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,24 @@ plugins { // Publishing - id 'com.matthewprenger.cursegradle' version '1.4.0' - id "com.modrinth.minotaur" version "2.8.10" + id 'com.matthewprenger.cursegradle' version '1.4.0' apply false + id "com.modrinth.minotaur" version "2.8.10" apply false id 'fabric-loom' version "${loom_version}" id 'maven-publish' } -archivesBaseName = project.archives_base_name +def enablePublishing = providers.gradleProperty("enablePublishing") + .map { it.toBoolean() } + .getOrElse(false) + +if (enablePublishing) { + apply plugin: "com.modrinth.minotaur" + apply plugin: "com.matthewprenger.cursegradle" +} + +base { + archivesName = project.archives_base_name +} version = project.mod_version group = project.maven_group @@ -97,48 +108,56 @@ java { jar { from("LICENSE") { - rename { "${it}_${project.archivesBaseName}" } + rename { "${it}_${project.base.archivesName}" } } } // Publishing -modrinth { - token = project.hasProperty("modrinthApiKey") ? project.modrinthApiKey : "" - projectId = 'ZfQ3kTvR' - changelog = file("changelog.md").getText() - versionNumber = project.version - versionName = "$project.version".split("\\+")[0] + " for $project.minecraft_version" - uploadFile = remapJar - versionType = "beta" - gameVersions = ['1.21.10'] - loaders = ['fabric', 'quilt'] -} +if (enablePublishing) { + modrinth { + token = project.hasProperty("modrinthApiKey") ? project.modrinthApiKey : "" + projectId = 'ZfQ3kTvR' + changelog = file("changelog.md").getText() + versionNumber = project.version + versionName = "$project.version".split("\\+")[0] + " for $project.minecraft_version" + uploadFile = remapJar + versionType = "beta" + gameVersions = ['1.21.10'] + loaders = ['fabric', 'quilt'] + } -curseforge { - apiKey = project.hasProperty("curseForgeApiKey") ? project.curseForgeApiKey : "" - project { - id = '472772' - changelogType = "markdown" - changelog = file("changelog.md") - releaseType = 'beta' - - addGameVersion "1.21.10" - addGameVersion "Fabric" - addGameVersion "Quilt" - addGameVersion "Java 21" - - mainArtifact(remapJar) { - displayName = "$project.version".split("\\+")[0] + " for $project.minecraft_version" + curseforge { + apiKey = project.hasProperty("curseForgeApiKey") ? project.curseForgeApiKey : "" + project { + id = '472772' + changelogType = "markdown" + changelog = file("changelog.md") + releaseType = 'beta' + + addGameVersion "1.21.10" + addGameVersion "Fabric" + addGameVersion "Quilt" + addGameVersion "Java 21" + + mainArtifact(remapJar) { + displayName = "$project.version".split("\\+")[0] + " for $project.minecraft_version" + } + } + options { + forgeGradleIntegration = false } } - options { - forgeGradleIntegration = false - } -} -tasks.register("publishMod") { - dependsOn 'modrinth' - dependsOn 'curseforge' + tasks.register("publishMod") { + dependsOn 'modrinth' + dependsOn 'curseforge' + } +} else { + tasks.register("publishMod") { + doLast { + logger.lifecycle("Publishing disabled. Re-run with -PenablePublishing=true to publish.") + } + } } tasks.register("getVersion") { diff --git a/cfr.jar b/cfr.jar new file mode 100644 index 0000000000000000000000000000000000000000..7f6ddc4c749409f3f444f024d5dc27d84dd5259c GIT binary patch literal 2162315 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

bnrIt-H3qhD5%97;Csb{K+lRqD_akQ#o30d942 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%0D+gKutP%5QdL*+V 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

&ll+5 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

XZ=MkvNp(SF79ILlQ4q(w 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̑fIi_9q2 z8n(UrP)iL>ODrA(e;K@v)faMNr(LrsyMYGD7|X9XSNKx|*DJ6dOKmrMiy85LB$!(Q z+t}?xl{-WkUMGQeS2OE4bhwU$3*pkt)=2I;%om=-bS3^BTyFjYnl}?{8+-@U(Bw%wp^4WIKBm|ks_8>u3z!2A$nP2-5d!?tC z1K42fV4xck6r?0;o0d0?^=Id3Y;0wTMF!CI9=TTYD^0DGLpu`X+t>!6@NyM62jgK; zAVe|(Xk+`TjWRMi*ii1=d4gcJJzVCD&Cf7S&-KIZUiz+fNNr1NiWz23VHujKO=;F% z0Ex}PT#(07Z2V3j|yt}0=x6c7EG)ABnM8GmhHx#f*}Y$0C2x(#8GeMu)QTf&JI zPjDMHWZuuF?-Mqy9zVBg6Ua_xs1>ZD+Pj87b`%lBFEPdsRF;+|+cckqXYE3ao1Z_~ z>*NTnMQ@z$&4qESkbDv5Kb*#@87lLOt3ZW>ptUY8Zx&EjX+Bi3Ov!A}8xB$Txb@&F zbklu_uzPFeU_H-^DEGH@SupI$8@Fgo`F_Y`Y)n4gemJqhVcI>GfyTgY0w*=&qxP@gREpX|- zLu$@d6b`2{&IkHt`X&aQ2vp>_IME%9R@Hkh3t;3_3Q6|SRk$S`9{Myd=WPTX!%#TQ>GNeggGV6 zqB-(p6KM{|#Ka0@>(Vp3>OpxfOmHJ74T85AO@Nz*&7=ySPUK7+Mq-oGFXpWFV0D_A zf8Mk;=nIgq7sj9{A=GdS2^1J{gr7-5l3dtLQq-@K%k#VnJ4R%8(2)ioJTB?kj$Af1 z-zq9%b72#SFxY`=o9rOB4*Vgzr3mDePQ`KpwPrbyXdla~IK>oj$J~I`3e|*ZPpM`) z@o4wwaRzS1g=_=fozg4idORw!K4C!jPV~g+2kTX-8;b_p6w2M@Sth0{_J6!&ILI=;vm}EF%ZO=}P@3M+{9LVD`vcD?qfN9Ue5$sNPDvxOD-MB6?6gn(D(T_RO0sKI)G zeJkeQ{(TMc`PFEsC)Jw@#tm7AH)qztzl|FEh0DWT28~ez5bj-^vK_{O?7KA19XXyc)4(b7zlPM-=`iLhOKfW5uvKG&k)#6SL~5>#c~4a zp-_N_@gVpX&o3M9G93NBB2a*b^}x(yI3s(aE)$;^`P(rDIp4Q@mNqb_;25^kpAGf{ z-4muW+7-sbKM}5rJT>*_0Ve5jr%*vIpfOViajOQG(?PQwX0^wEdw%`P?{--U>@&p2a^`vf z6)$hw@&Ua1a4$KO-*%qM!Ce*O!yZ_k-U=1sa-VhV$En)@7##=ESNIoo@oS{kSNZHV zj7RJjZQZTUS{=j3OjC0p$*vJ^y$=BjENY>BEn$|M7##})XuocyJ&nCyuVh;0R&#Q# zlY&k}A?)!!#}r`}XMB71&KE>;X=1s?Gs?XQ6K{3YPCQ`V^S+Mi|QIw9iZDP?M+EP)^RuL3CbOjWk4TV)Zx{^ zKsV`nAr971&#&5k7fUMoh8KN6w$WTYeV4>>FUlza#XW{NEY`V5C$BcQ*>AU_PGOp{ z73R^?!K^K~JnHwUF3-C5O_msHxE7aG62B`Ryw z2$01e)mF6u_e&}mjEWw$XXC+=K|dIh8C1;6xa@nCbeegI)3_kiSm3&gB70s_=e|`* zcsx=I>t$aMf}Cr3dK#qhbUS5p^Ss`tuR$X34xBWv?Q*6nr8FT+M_nXx@P>1r8z#v+ zI1wr?wQqK^-Yvpu)-`wgSPL3TTF;y5Iu@r5nT+fka3n~TT0|`yiZ=*vEkT0%l*8i< zl3C0NG`xfeZ>6ttdHXa)^0EQy&X5Zf4Z|@PD2xKACnct?d0XBp?Tm!u*AMUAG~a>a zY3Z&XTa7MVf?28W-MP2^%&;}xWlZ-YE^~93sybFKvs7w##&0&4Hy1VO50)Q2@O?-m zLZ7?c|HN@i05y=!BZ71E;p@zZik-UoT(l#@_VLXLidbkCJPh~q;R);(`MV>%?f^S%rQBo)d$REbY<7(Ys1i1kkzn653`6;yW`?ahKcPy$fSzw&8j3IKaoN zM`>7wg%{?K1Lz*w&Dhch503N?MAXTYCa|@D_D_>m+Hu^_$JBBuw?>_CT*o~#h4wGc zzoZ@1x@%*0lI=KyzXlA3>1$uqdaAEU4ZR#h*^R&4-3{E&Vjw|UbiT$D9|e{%inwqu z_#qsY&r|zn?&mg0JZ`S3tS_le4_dZ^I_)862b(W%+{Vtg-tj)y9#~BX(7pi~{TAy6 z+Ea=5`Z>@uZ%083vOB-goS$?}C)=J21>REgN2Ob5l;?6IwYTRL6(lcWEL6Xu)B^(m zU)HNiQJ?OmJ+=&Hv`>AY52!xMDX27W1zQF#Cozb#2*+o|^~R}=t!v8?h0b25=7vNip;u!2-@R4Q$vvlSurAG z4?fN!fQw;s2%5J)-P}aQ3mzapvEfg&VAkDq8%0#WF7Z$qVUY4YAQhe#qvc-Pt+ntw zT5Ooc{?;1esS>%_%p#9*;gk}+6B6~>(=vU+KWc*4>sG`Y2yl5fEH#_P5HjY1%`0!p z?#gTT=89o>{EaD@W_V}{G~Co|3Tu!L!`1B!M8@vuvLjTYZ&8dmC?2S`V1o(5zM5`% zBw{~?$uvBH6O;&`*$P)=%40_PEuV!pcsj++L>ECa<;BFOKJh{Djsmk6<-+6%)MUbs z;=J@xNq&|cY@$DhJ^p3N87VZ8ttLSq`P)oPP3bDe0WEV-KFb(!SEbl7f`cS{gw>^r z!eq&XS)`7;H^SQ9g)2~S9*!A4Q%?q<5uO0mU<5=nrO=>M#UHHB>4!SS*g)-~$?BIp zRc0cNatyJme6&zfr&Vcs#}^W$g0%$myK0kKG1B$OC5y{%amqYUjYtyF5!o@r0~hOo zVSWPRmuJsLj-kw@DW7&AEVf0%uBp?3ZhPq4DS)~l^hES-oQPQBD`e2i+5X#|18f63 z1y`v*QgJ5y@Wg=9r&5?r7evaGND<0`{Fy!`gd>9xdnJ=yifw;(0lB)sMN8Ia?1$0sO2RM@B z)S&9?DN2elTKAA_gnEFM&zrN9e!KGv7#~ae9kv(pwt)urn?3gKQp+t47#O(YrK#j9 z{rFONsGA6wOkGoL_EpMb9Zuvm;~}+{$-Dv5_Y&=%2TU-U#TOp_9tOO5o+`}1FL4C_ zvJdVe=!5MH>lR|26a4)YlY49*hO$uF4Q5-EHd~77hW*_DmnPrXEg|-~m^JD9Nf%=@M8WZY#lqC`Cfsrib;E##5h_}!)9&_)QL`9jD&u2j5N zQfUT%-*VAPrQe_p`OZBYW_kLFeQtev|6QF%zXSxH(2?tV2I@7D_=b@*9loLt8w(A` zpgf-ojNnbo+}z=zm@iZ=0q^vZ{Zv*ho9`UwYb*yA~=8dk^9o z3kw+C-Lww0sU@gahy?04(C*lYz96<5?!zvKmK6<>$3t?R>H0NV^{t@6 zQ148jn#6%9+316>Xx(Wlr@M`rPinXFv^2`z6NeA+MLQ~ntxZF=>wiU*XF(ZG>L7B( z19Z?iFAEN$Bi9-XvMrUt>X?3cb5j(o7#b0$!u(<3&NU-!Dp+$Gm=7166K_thnhQ5E zi4`NG)4;6b)6!m%rjyjv117rmqAqM|uKKYL4LXz&TlM%-nc5u`Lm#=nZmNiF zOtiIs|>dzeoMkmagWOHg-v$n&S!0AXzz(-*t8v~fLpKsEl*cJD1do_u6A4E!ZCj< zG)$A_gu6;y-3wFR3vDl>;+tT7j5mgjL>des|CqvNB8#{p2d*0lwH1OBON0o!e z;>KN}gX(ewtCOeBJA;!vQrqlRY+65l!G}J z-zSr(PyA1Q!gchDjgfKFann!Sq{|#>QyP*xQ->--v$*iK2i4#o>ZOIQs9-Dhtg5WO zhS272ejXUGTdJ$GN@j7B?MGBFGi3=y@8Ij?--Z*^Y6{l7U1L3IqO_*B=Qn&(bg?#j z^q;?s-!UWQa1E*!qE>{ArgH_L{;;y%D^D#j7I z6=gEAU^Z$11(%O7{MuBDTEf&s;VGIQKW#&Rwa>SXta~=Dx<%`g}Hc6D`_6M`ICF1;8pDx zDto*tdp8qHTAz+GMaq4yTT1lvZ3_4pt&_Y#OS_n|X%Og0WOQN^YwPguy2xQ)k!*N7 zxHOAZ4s_NE#&Gq7Yitf~$J~IoPpzK7=)N4t^KH$EcQ&b8p07`?_W^V2`xgF2OzVd` z0BKk6vn}EK-+y7-OI|~gQ-7a2@qQnJX#IPObwxv4J7Y0(qi>r~6@3SDeFLj+o!5VO z@BEi+_uN%U74>iSsF4g~8>DgGNU1f^kBsLcF->V;6fj`x#2?~fKi1DCC!`(p8C^ZD zrOmt+O`F!1R3#-Xy)Daq3}_&us}JX7wI%-o_q>eq^$iN_+itrPCk}8rorGp}OmnW8?KF+H(h&WX{G+kKC-XQ%gZ5#}iNm;)p^i(y&LIqQMx7 zfQjxKU{|#+1Yn!&v&VG8RErQy5ls)o`z-_G`O{B~>N`yC*AF$&h#BzjJJ!FrN7D`1 z!*`SSr!wcvztj(@q8K!|(C?d|K1H=|HFB6AmrP6~nR+xQH}T9*fy?ZybaPc9c z%bSQkUdh>KG~CS}sqJvQp7shl7)-S^khtGQWsY-n?;mlrSx(*}4x^v$pQnVdHhDM@ z)H2yDu~u~^Yu?~&Q>*3JX12Lgv6*HP*$jhf%Bd0X! zFSFz$NYB#tPL8ghwylb4m^s*b&mAZ%*nGogVjXQ)>W2QsO#iZ3x|5O#Ga!Tl^Gn}2~d?<$`~*qC!v-ORn0HmgIpvI?z<8B-Mw6_nVw)O~$|R&z}$Exi=^Qw6GT)T-*o zUmeP8uYsWTXo*s#T%@qmifZx$FdpTb`ux`!-H5pde>EA609IBLn>TcCD|txJ1;cvn zqLDr$%#Tb|kbX`(g9IbHj#vj@ehnEfi5PVM?ApNFr>0m}bgR$VgW;ySmTlXrlpx4i-JD`UOIETk4OuPln0Ia>LYVvvcgGxQ`Cz6Rt~v-GPjN_0pu)@%L%pMh~%u zTGIrmbvp(kVE!2$a}r4n$&^-O8BU+~3u6t9zoYZ)vI; z*7~?RV*t_w)ji`b0-v<}XNtz;KqHRT%`H90`8i`o78EO2`9cZxfo%Jaam^ZaXtS(&oG4uQf!q_Wd%f zw+GNbsowg@h4kglaw13$rOdGAb@;}H6zUA6K;+=#(9B0t`AUkU+AS+TjJuwDsB=-( zBZ1Ui8C`%i(^P-lW5Pxm@D1x*9j;8OgKIzt22_)NOT(S&18rPpdy$>!q`~QCdMR=o zZtS@OL9B3a3qwL*-h2b7{s1_0hGed|Atn`{?XUF*M$n0d$vBYEVDu0m%JLCJ@`-`s z;}Q^<@I;cWJHHCIILNVCa@ zPJaGfQNE!k3OeSn+-d1CgvSAoRjFhqU(;2#h8TWV!LL`#4Y&?lV-LdEx=K}lE z8-3QYOP_q+yXaTWCDkAU2ZFRn>g}#U+P1Kj{UIKbQ8-sa(ZCjg(#YTVAK44O{Ckv9 zSA{0HK@>O7gUKy}v&LRZD+SA6VV+Zt{76-&U{})5;n#h2LGLQ_#z5BCvGo=TaetvN z3HB23;So0*9_}dKScGe^Nd@3a>i!hE{V=qm9~O*~VPu$MJe*?}F3%OqCiRIpc7F47Ox=-X&@Pjs`(P`W4lLa9ZRxb^Uu=^q~o*@ONac8 z-ozZWTN^mt@+ELUMjWk#){pRd>-p!C&3KKkzi8h&5qJb3AjN;PN*n8285;>&={x=h zUf$T@KZisv2aw$qrg9RzWWgDNOo3+@s8hv3iJ)NoBV6VgH{pKh3hw9m z@g)EVoE0}3qjJg~YW3ky`Y9C3_tOh=Fc+*9tM7$+xNJCqyKbX+iea&qN>i|#Sk`Am zVKlLF?4yZ`%-f4fOt9x?8CMxJr(+zg>Y}NdPcfSdNMLx3ql6UN_l1U{4+`~LAg$=L zv9PpLt+Sy*-w<4gJPy}^vL zXeUB(7iyb~;Y;!3VN;Cp9%fL`{MJ+%iZ*@7a-TgdjCY=lB9Uze#&I=C`_*O|^2>0P z6-voIA?sqP;S~YQ$c}%15KQ9m1kmj(QPNj0CMhaGm_6n zj;i&<+0#n>O!N9v3V%I9CS$T_?ArE4VJ9&QCHrqOC4F_@Ku~}gD^RYx7<2%w}d(dR@cOB%2@*psC1G^H9N|v@O!lp z%LjMPE0kM*GNHBX=oF!D$DGM85dA_(Qzb%`ftsSHM*+Qs&1CVOw_Q8g)!DK z_t-**&$-BKdUoj(m{}PHDIZvW%CMn`w#1;(3J*~qjg`s>rtwp4ptIqe_C!-r+<8zN zsa{5aNU9GDj>4&2qv210hrWP$C(tZ6vHd)oKmD42uoCZpC7zda5ED& z8)aJ_nImaT)L%!&er3JtB6x>nvuZD6jFz1=Fr`Z0E!4zys63(jkGzxYPa4E5lTD$~ zJwFP@&DJ<}!VPf^m~_Rt##u)P{`$Q0B$1UiiZ0}^Amxgd_oh4?vsu=)kSi>aOrS_K za1W%y=X9%pX-&^oc)Ma{d~%srpTZz27i@tTrj(mI%x78UQfEA+UbSAmD)To6bgiIY z#yX37g7w|zSDU%*c=;;jxm#yf1kE7xrzr9lxiA4u zgnUqi#?{byUF}NjlM}N%Fb!an85@C8a_^~ZOqXOB{^4D4gc)l|{Mbz$x!hM(myAx))-FvyyaWP4Ozq)H{gRZTun#h^UqPBk?fv^i$ncWXeqH@=l$lMs$ z7CD1wrHMUEFsbx#h6IH-@a~f&_K@RTh!4V$NPJ(X@#|%f#=s^+S_K z!se9S0GQ-$L8@6l0*aFN<{AGcCmo#IOQJpx!nqgA`~uD}r%~YY5@A@}D@FH>Lw5gA zb78=+){J8ks{%9KP4{`J;!O2b9zPj0SWz3Dpz?O3UxvGtrjRwDK%Om@vv0fG52pbl zFKbf38A+^vz_wstEmf8zTkBWQyLo9ZX;owLzP5sE!wFlHpQ>fTF00@g zzfGVkn>&)A$q3nh7ow%E5L;+#qmy;rdhyAiDcjK|oNuh5wQ?yp^gh43}Vu+6S>r;Pp%cu`tP&Ww=LC3M>;jkn@FY%&5Fj(qB!FPwqFo`Fh z5J;wc?1Nuf7tW$1)weMe`FjBFLMOBKKR#k{(nOo7iXv^Trc~mG2zZ3KLYOfE;}C0{hS1ob>{+^Xm5#a`@i4NdKGN z-2Zq+|Ix>FslK~n4WfQ6r7%Bv)P?W2%CCip`jN{_2++$NAnZY8vX8LVN&iU_U9L#( zn(|Ox)lP3Ml70)Cn?s-ec@n6aH%XTT0>ym%5TrZC@d5ooVkb3ktCDiTEOj9iK# zOx_f!pb{xhzm7nS>^Hc$$U!Y@?>YtdrEwR z*QSFYS7X($X(i@&RN|+VYMd+O+J-A(E;y<%<4$Z?XCv!nOqwZK&96cR8fjM(o_RYs ztZth3@xVH}rQ*nb78)tKkQ8y|O*>dqhFXwKs)-j7{giF*?#D*k&=kBA3s3pn|e@bH5Z-*rvz8U;{!{GHd+I<%Ud5#G!IXg#fBgVJIB&>QGvTr!D>2VaO zAYDjv0TWA%T3aQK(k+qULi-b8m09=uUZXm-l7eY1>0S<}BgFkzWo{T z6U#-0s7RE+LBpTepE-yx46a=Xg-}Np$0v(Mg4WHh+{O4gsa&cv>j?5tC<;E_fF*_v zfcHWsc}BzR#SX(fWl;0+m}X$UL&U;mg`+HJKRh)LR#ifj@Rf3375+RzR0F<#ifs^- zSkE8XpE37-QgOI~3Pn2yf5Y!Z?&U+ovTq`~&68~}U@K}`G>af%*X;%RCtHR2RcSJT z`4(@OKC+(AIJGO-Hff{31a?v}eS%Gmk2zp_hVFrTW^Xh*@o%_bdxr6tKM;NAZU}Rh zzZWG(6xyl%g}bPo<$B%%DYr-CsRt{ZrhXwXSIak;GL#stXN`+?P&JlrAhu8+>ixPm zs<6KOno!MO*MgtCPB0 z_q+%k&i63VPY8>g*zbOx-&RwuY`(DcClvb&mgRAfj0b9-Y4%&13_(#%>zG;$7s+Zg zZ*?4x9mY6G)qtX{GVu)S3#Fm>^C~$JjoP`1A6t__ZS|KaZyA@beX@K;Cfy+o6=1?OBsHh(KnRGf*O_0rL|EDN2xpt5c&!h{=p5V`0p z{1S7HM_T7MKVwXB)76wWrC2bZ$2qhEZ_zqDYTN0?+Q$3~V$xUw3IeX56a7r^TsFwcRnHiyvnch^l>n|rkXdHS)W8N>VNzYVYPRUskHHB<;9?k~` zW~C$-1Oz%`!It5ja11SJ)_w?k)1XPiRKY8(E=$<191`tkU~ewx)mS2)=z9j2e?}VD z$CS_>o}EQ4Jl)uDJ)NsKrJ0vO#YcQn1C3j~yk*IpdT zoqt;9zn}9&q~ecLNtx&kISK~$*t_o_RjXo9g|zzf?YI2cxlLUJ6q$^z#~XA6b`db& zf|T-@=099~U`XTDF9+c^UoL>M5`_?J)PZuXp3_v@C6rPR+EYC+7T=L0neA?b zJDTO3y+TNn3``O53L}Th;!piHHd2MGB13$)Gle`OGsC+4%*x)9&5z$zV|=2h*5`=& zLD59T9vkDt4WQdyb0SQCfx(g?w14YMRk+|5M$AkMzdwx%Idi;v}EUlO&w?t{1*BJK_?v4cOFi7i+OG_|9PF|=)52SLb^-DTaF;=vKd zioe=fflz(kl^Hmst&ohgb!6kG-WBmb zA~6GgPr?5Q*4^vk59j}Rrn++Dj6$K}Xhkxfs72ArC=1si;>p)vtQf|Yd&(0leVS&( z1E9*+WZkCJcZ3{u`d}8~ob@V};&o26kJ$E6jX>$X4=a4>_)9yD;A{!Ge0%746L9<6AJ8M(b4_8N z?&5;A(N3XCYq|PSJBlic+#_yF5GMno`}3j$wU&j0z{7D0invnciN`gRb?d3yF8K{0 zFQe8#t%SA2GPp*W!GE&yBd*jFdlt}GaD67N{zdo;FFeOiMAV=aZZO&Nuh%ngFMhw( zzFSen?>egdZ`M#(b0m6>@F7}6 zfTou2!XsQMEvl|mnX`L}miNlD4^c}yBFy-?w=hnK<+0}BIF&#xX zG;XqHB^{up#D_|yxd{fV z1%;t%TgC%4Gb+J0nq)O-*LH!PUF}$EL+kCsEz)Ji46-4uB+|gH%A^@+TzFvq`Q_8Q za$a-ccp*KEl)r4pe@AFo^ojBJ4DNpJwy;nrV>sU_j|{zpmX_@ zYS$4Hoh6c4(xW04HLEFAAA>7Ass;mIc%Wgiq`B+m2RN`;ao5uV`fu*Oxh;HNF^*C0 z^qpcvvRLR0{OF8_TSlcHnnEE*fbx;r3`!C(Ds>Yzj&tNX-mDys$L^W=xGG`BZFJJ^ zQ<(jxw>q$xXqt`URC@R`$65&z3uq6PhKF_X_(yJY$B`Lu6s$=)z37?|uVQsD<7A?4~9Q?hm(?}Nr1+O4P;24{H$;CM5!9Q6-E9#cNd2GX2tpH8i+1{u@aXIh3 z|5rQsS>o=e{~gMD|0|))_@C>&|GopW(nQyc411=spc_Lvs0uPeK$7}V6oP>#RlJ^$ zqh*r0svfVq!#9hr+KNW%H|=`>Y>7} zZf!vy`Ev`-GYRgEdEB_NI0u2leyMG~@s$AO%8I0!n0H*1VB)V|kiqC;ok-9krU{Us zDI3seokx5lxpp%uYxGL>%+wk;%fWDz&wzP~P!OQ=;D-1qty?&5Y0(T2M)KEJd)>|g zDG*!^(s0UtieF>h2*b&jYIw>ZAVTeT;B*h2VzhRCp zw9Xp-xjB`Dm7M=!D-6ICOiI#cQI>#Fsh_y9T6s3`re|_JJIr?_)QmRjCX@2I1PoO) z8E#@@Wwwe>8{jTH=p8yN5IqE$oVGBCEHxC;;0xl(RkC&aE%p%Jr<(wh#9|WQZ@xnt z9j?m`ZvR)Muvru@rBOgrie54%_=t)Fp8g>(LF#5~;1}q@Fp#9EA4$E`+?(*6XdJ+E zVoVm|T_NC;yq9(Xi;v#HZ}wBse63DLOwO?t+f%!D(XBJ&yzUVUM~Xxy;0#%G*!G`C zoLP`SRK4$*CjDQDX{P^*=}DV!Smsw&p>_f(GYVAFHt>(TKsBLw_QLXCMah)b8fJ2E z8(Gnrt($H{HL2yYf4FXdwLEr##IO;x+);^fe=u~YO9*@B&5f-+PPlzcvgOqE{C)cX z{Uf+BZisXbs@AH%TO6zjI!A?OquFY>OWR)v7|FZy)9=4^-oAorGVah^TMBp%YVPn9 zY4wp^(XzLti}SyXeanaiW9FMPP?aQd(ra-ovInQ4#I_-ACgrD-Aelt!H(@cp&1r%Nr(j9oP5EZEc-e zg1KTcY{&mkhGrAhj`>H1Uj5Guo%N3lP4}Il!&lJP{*j?6iO$etmUeuElGY4_+j8*4 z7HuJ!ZamS-g%{-L2xA2h70u|gvXpK@#|S*ezv%1fxh08)38(h3wTF`46TV~l2LO|- z6km|)JC+^2^|80NAw~D0aIk-Djt>v(;%X#`MEt?MHd`9f1}M51A+WeMYn8YxEZuoPF*(f?h_56`NQuk;fpQiNulFcB(n&@WIRB7Kj8}`7M*8}(0&P42RELt! zfT>jcb3C8pj*_LD;2lln3ddpfll?%qH8*re0^E*dA|d)M?EuoKIH&ebQJ^~wpN^RN z{&7h4fY-p_uUdk+L z;5Q1#`u}>zA#7-6Zs%zHEu8pfjF$e+;N9 zB>_jE;pl)3-_En}jPYkU(T0yq-vzSogZujNjoH(MS4G4KSEP$yx!Ahqb{*SX-<{rv z#sZPvP>0&6aXkDP`^^^05Opl(T@|^IsIIkq8BJ|-7O%n=pArCo;r(1w>@W#_Da6?PA+qu(HO!40$mI=Tea!C5(DC z$~FaLs=m2y{6J>`*8jlC^MphR>9%{t6mX8_nnBr|`6W5RO|!ua=#5 zegxdJH-B;cAcfmw`Q9U}1zGZn3M0Z;i%PSxp6x`NzBR`z>=%+clNnclB2<@4#!#}|8X~cjBcA_eX3+tO}P|Vh#VYalDgGw3Da;1VY>69-y(m~(|}uo>CvR} zF~XdOSI+^CEsM@c)OQayf9a+?V;*TIQQyL4ssR3@R)WaS^au!~4L3n2h<(H?yahMH07SBXJBrn$}cUzoJQ9PS(RO@_`EeOwGG%>!=hv9%6bNP5q9 z3`}S_VHms~k6hu8@~Yy#7?j1_g(W+za{U`m{55k)Yj}xeNNI-j%jmwZIU6nMjNpTkMcfLRLl^2P#OVuZX&1leIC!$5*PQygfJ)BO2{Cuy4MFpYV zIAW(DQI&6E^`*udTz9x-Eeqni?A}~W3E3iikCQ7vWOf-EAxyBxSJ^+S;cIhOvAe)_V~C`*v{A3Q)IogdU4zsw0jCjQt?gAbWvKPC9d(S!oyrn33^_r z^~6q>ge{RE*LtiB_aky66(=SI?7h@5b#=Bk(6Ao@AU%Er9*SM~P@+g5>kGw5P|s52 z#W!kJGY~8M3)m46{-XV!~2qWlB` z5{LcX$^Bn{*^2)?UP$YI&l&&U&s$Z~ab5-CE9OF|dxU_!1r1qjeTFlYkh~ETrcp0} zb&!Ar^2Z$SgBmY8Vf}%GgP_hE-y8IshDnA~F?=@feF5ht5k+$yOEyq(dbrE(+jX}c`M0siz0bNE74*RN($2pl&)!Q zfUQDng@N)QPe|np~X^lp}uEe1Ixrg$KtkZsYMMuDLP=)HVw>~>dzGJ55d(P>p z^p%HzuE&y7@Ns&Kw!sKQ$D&#VFKWm%{n@L{_>E?Dsr5yAcU^z2htx?7S=k0Utp59( z2t4+!v?~nP@e2E$-U=>^E(~itye^yde9vec`II#S@%YbCyWa+DdpZ^Js5VK{UV{v+ zO@rEs)diD$^t(p|b9&R(zD z7hP-uoz^-LiECm52`-&w>bNl^La=F~HkExAz=-4r_zjG%@OpeY^(!vYRVH_Aq8#X)z1~X-;T~d+GK?Zk zN5?3CQR(-tWZJ;lQMO3?LyT&?SazwIWJFh!!42jQa4D0 z8HT(G!hj85)Mg#BZp%9ep%s(;bU2o3>>-W^L1&BEdt@_V=F=39?i;o0!)Q?tZVQ@5 zAWR@STLbq%$RN1=B{QcwM2xcfR7g>O4SD*F)Zb z8W0zz4}_my>4JF;s^b zs-$+Z7*T5{gTfFq7p7+Upc`Z5h=;m244fS zzv(7`9mdSF6pA~-psn`=GF$zGy{PXa?`McOyS!n0h;B8p+|+C+nHW@ow8ETao;at6 zICTrR(LSfjbdC)w?@6>`?5CbM>7KY^10=2+MqVk!Nho=qI)?%N_eN$jCb)gatw^of zuopG*8T>_Q_y|5P=pD*1m1-X`&C1aue&7@-3P##v$lwSEk}c{_f;7-IY|ZXw(~8et6d)yrH| z!M?;~IF7N)fn6L%Sd>TMM|DR=lXDg`@P*2y5DrgjndTejb)T1cHrKXu|K3sg5m<@Z zqn@I9c%cY$k^XLtjXiWw;4LN`5n_l=C$E1Y4ghyxz#0_v!W4#cRHcsvMa?a98_2uD zS{4ur}0}RRc${ zpQ9%2L(nSrs_ZHVwL&V|Xug8ZQKuUpICN4v+#AdsYxWTI>Ri~gwKXkQK)~SLs7gu2MR+11~@GSv@n0*O~s*-XuUt9{%nh&t!(Z z%p%E35vIZDwn1nEsLtkRElQts{XnTC3cV>KW@t>%9%2<9mz6?|q`ad{QKDx0c=heH zgq8W^=NlN?^7Dcj8%F3a2nm#Hyeo<@46CGIIuZGl{A3iuY`+N!!E)1{Qc|X&>~p*<8s`f0XIrYvm0d)#_+hXy7+RE&MT&&yBcl~CWPL#H;>9Yn zO6EIEs}?BhLM$jrUlFWYcj95Zfv2xZ8FC71WcdCOqb$ZHa0p6yRigF?q7t1M5@;-O z3eL%QrrtpPg3SkkTt&Tl2Utt1@!UYRpJJgCgh2`=y@ydGo~RTfs4|`?7SGlgF;sKk zTxQ@;U?9B!*>kQ+Kas={Q|<}b&?y)(s5@PFVS1lD^N1(TCxraSaQ)>Tg?p7m@p8JI3fS*^n5O2u12>nimE_l_A2jP^verMvyf4 zfmx_5zJHwM1QQ@*Z~^ZB2}icmIKaAPkN}=qDZVg9rlZrTztsp%t1=5G7@@HxVRUrDr+2MtMae znXH0{-dKrDACYHWHK$UgvffU&SibpCqk($Jcif#mL7W~Z&N$QF>3aN4hv9kNaO`%R z@_s%{x5edv05VMW$L#b|HNPROZjv*{(XC#x?)sMFaOSx6b4`wrSL)xi6sL4Ds)MRefr>Wd29mw6OJ;5fAXK+!KMe>6@gq zVc7p^^McH@Wj@p~(VFc0sTBC*g^6kDHnxMMc8>@1q2C%4Wv7eMW;qYx+A!hy{_w}w zs~#rx01kI>XzP_es&93#*@oUwHs#fv9`@CdiKo&=MeomzVH!co<{NK5K90OyqLmD= z=iLG{_JCM(CyvryVy`S?yD-Vn*Snv8y%LTep}Rj626fHpv2y3^P;galm(jd1b9Xa{ zwBBG<|E3r}bERDH<6f!b9&o@e?cP&<=?tPPdC3p*rQMR`T#cK25IMe(!J_TwDtieJ zs;aBisNXny2?j>qNW;<&v?zILf`E4y>~&za-q2BYm+*sh7x3eB*Ypy4ZAZ07_$uFm zF!`7bNsxZUgGIlvL4V==&G!%G`cw?WA7>1M*EqSOL*-l2WAXW|Pw|xt`Zqe)f*q4@ zf9`l=hmX=He=im711k0orF%(_#^?W`?VX|{0k>`8*tTsO9d&G1Y}>Xg9oy>IHaoV_ zv2AwT$<01{pL@@~{}}(%-DA{Cje4DPuJx^2bIk$8*trdeGB8d}W(dY$rLs_DXE(S6 z^l}PJBeFA*!>Ej8X-z=>t>;VvKs=MqmFUuoU4Q!5LWT+yW9%peA&M5>26=;8LSdwC znJdcS){F<4CpnxbKT^aSXrsnD&k)H06X6?0gH_0(Og1ewU{;X)7NO^Bm3-4V;ZhnW=$b?r;eFy_FcNnpPCkr4iw^XN< zZGyTm=*l#uB%VQMZhg~5qcOywHmN>D5bCg0;|xtWVe#_LO9#Cp=svwzBTR(SPjkp%V z6q=AC7$AD8lIEdRZj$k9@w$Oe?_(ZBh#^M{Yr&N*c&LwI(%GlXz-Yst$zhhzwG*t^ zEFpD~v9fxdEKO+V(F-+l|Ir?)Ltrj=+ zu8>M9`iM0ooaA&3v{8(+88``}6CI9?Qk~7?F0515_gz>1 zPR|eR1}Brdh#2m9K;rZokI+~;$cJJXMXfo5CA-K3a}LYgie4;YfZ?fwUDI7Mj}PYjpvjy7@x7bX9sM==GJU3X7}pb^P; zOudBZ%P~DXWot0Y6Bdpc(UK-3-X>4bU~2Hm^l~Qq?lLuGWYVYA#Ea=F0Ls;o zc=Jm%kB$`bC?40JY}_EI$Q5IkFWy|O|S~O+RfH7 zJ$g;oHQ{S2SJb)mD3JjwW|dUy>VwaNnJhC7^E1+`B3%(RZhPsVo{#3QQ-^vIb4r5* zfp3GJsYCa6z>vR0;=Y1Y5*_Km@Q?O>d{<5!Sk%f?-(0!`AoduM;}{}nsMc77J4{Ww zrCnVD;B+H*0YQvrNQs#|_@bR+*%Sk-)@G@|k(aTG4j2`WUSWlF7usM9<|!KVlaBWt z=U@dPdeq>kKbuu7pcytaw0qH$zmPdZwt&MJNV;K(6))Wok38YqG|R6q%!l!(#*vrY zD{{Sa@{qbCVG}ZxSHO8!!J~Iq=k%_YwAflPqI`rwOp~PDNrlGb4;g#`1U~Kf;yY6T zo}(I@vDt8)BIv#8R>rBG?$#IsFIw$2W&PE>T#28P?ijU8DDbgA18rnF3B|ciQtxM^ zw%TICH)Zq5bk+3@!>7D+r}nO@0Dmz`We)q}0|k~MBJPyfypJcI`)Ifz^+B0ER)V}; zN)tO5V{ZJcT@Z8AW5%!xcfr*a#l}Un*L5vgl;4lB&S>mweH_*ICX3SbX_G;;>PtzwFCIyx?mm3_xSY|qbMtQ46w0(M7cRd)FlN=tY+-qd+EB@GNryW+utDV$t*vDFu6E{JoKdI6vAYWf$!>+)TV{qYS_bMkJ);<=k65F?y~kl~BS<%9SuLpz{8YlLbmW4V zu869`Q}e>OHz~8=nZ$@0B~2%zgz?F%Z300fWSxG2lj>cnfxj0Fd$UWfq1k~RcfzK9d3E@-FuC(l zWpb%T?f(5rqG2tC>D0&@N8Z&{DTT=a+@YwHfqY|b$Yc+N-BS}&@nlc>7G7peVZNm~ zmfX=2`75IxLJ9j9#;^Gy)xG5k&rGK?+~IQaXjQ-~;t@&mllsVIkfCiN3q9`}a>a8s zQ!eIA{XyRG#I@U^Q(5f9Tnx%Hv+W2gI`he%_}x1X_=M{%bS$X;-o(U(*~ci-k>cJA zjEQ$wXJwSeU?of`QGksGcI~ZYZDXU4Xjgeu>)?8ar({3!y@OPpsCeh^k+fT)1ZV}S8dd%N0>O26$&mHEB$65%uKN z(aw7alg>6#mIkqiIH?;DR5O#y)-4pOr(HYV{^TA4VlkZc`)cjbJ)$mK37oaR^hfSd zCS9MRIJqk{FsGM~J*ehXChX{>)G}NRK?|xp5seu?;$`vXZb9foq<5W=@`re9@icb# zvj2$9T6S?=(hF{}7DS%)8l1X8e1JM!B;ZX=;_=6G$*j zMyleiCMD>&PizpumcYZCcrw`75C$aaa_wP6U9c;Ci#s}Vzrj7`xd&{5;;zIaV!8W{ zGvsBYW6(%3=AhP8Kk(8FRMwO;9h=Z~pD9Kk-gh=}wN7--nYsT`Rl9=?TU)+o;_Q#? zpFXBU^NVons=hYLf!;QFeahR@cDnz<%qDkQVHv64wYoP3svbq-AT1R#?x zkD|^nBzkw`Nw#-eTx)fDa_9Q?oF)2c+eA}TGPOci=vBU?muFXF7thKNV!cb#q#M8mEhW4l`}vv2L^wkwqD zYidbPwlUeXxb&tO;7~(RVzS`V4jiVbf+f~XcDx(Q#Ziz9YcZ$ztB}YI9AgZ_XP(qM zNwL>Dns%9FX0Y+^G`SAr74Fux5f!5!CI`MblLyxPq*pcq1q{ZtyQ~fWkoKE7&8PX6 z$HB~NAIYmn^qhWJ&y6F%n@>yM+1Aq2VXxq&Cysl%d8@eYO3{1#@J!*;l>3#=p>W|^ z(D(XNTJWqymTCnj`iXAX`)C}Uhfwih>N3AB)~6&c{G=-_e$#wy4yHv&o>$uff&h`4 zZpTt+_J9dl+bx6{!5cOY{u=#j?eQY(y{w_e+#Iog)z7n4QM7wAv45D#j;(F=ssjskdJE0+?4>p zGO65ILX!zhsE5us`}{Qb-LB4$-YD{6$K%~ix7de>&SC;;l+!bxQy%$Ud^VD8@99mHt4Om`GlROEShW$>mK*+K}h9+wgh}%1 zTeg$j|4c^}PB@PQvzP54*+!yOh7$gI5IPg=iuQ9CLTSGvCjP( zPh}}(hogV($SS4-@8F@{+-FyYfma+YM}ruV=IIQoI~XK1k$Tq2BI;_8iq-7c)DL|{ z2X^UQ)?D_@kF!vYZgCzFKYVkww8D4L@ z(4bQIJKQETR&yW?-4?XWT$x|I3I`oT`CBgl(15(C_n_PRmI#cfDPA<;&@@Ca?bW0S zbYcM+9xynSP7sC{3`7PsjqnoDGOh__U=@N}@`nguZ&MnNkVOOu5%&>>4QjVuw69ZI zbp_#oL=x79d6189sPq&n(n#YMFHTe+Eu+q5e-ce)EXHg&*C826wU*}vX@|)&6s12{ z(oxkW**3Qh3--3LrhllMIo*c){krKWLyxeN#mQ-52m>{DxtQJON+=>E;;0ReApYv+ z4FhcMZPhmPgpaN(uU68GV`P~(Z^;xBg8nHM6f?5L)R38i z#S@a3W-s&z#>$tOK{zm(SyjRkw>-qc)q*)pIfx@~<(o{NSr~C_X>T(9#mA$`MBb>r z>{aUsHVbK^qe&>2t`1sfx8)>3&}>NabchfmHiQsb7POLnv2@r4L#)ZL)jAY95|ETS zq>3GhG9V)h@l_b)4a;J`epv|k;vTIg#IKN{8#G<9%%jkNKzKLDLQJM1_MfQKLD&<$ z;m0EA)8P}2sLyk-pt_*K2=NjPRC?g2VyD*6e1Ev+Xt+R|G+7dG12cyL&qx|?HC*^k+MILNRXGCiP%vlcA`Q%^izToy}>RUxulRq zb7-;9Pu0|JKoawv*t9ZUGNeKYX3+7J^(GLj6x9HGyhMTzBo-+=WZD>`&UZN-qDFixnORpAy+lstsqC*<+6%eFkeDRKzIAr&8;Lam-5csgqRq6>$S!Y!E+aY3rToQ1$m4qAMA4Q!7_Q>~3T%5$<;E<|!c00Qc- z<>Y$A$XE-8&A5NMGsrZSq3kB2YIQj&k411qyd|EnunbIz1NlH{9((^|QUkmlolrqX z1Ii@D00lgQq|_>0X%Zw+pjL3NNsD}Q1!+2ZaHOLo`k!^A@NL;GJnp9>T;XG~-7D?#O->FoWIyPY) zuZtswM&0vpQEM`8e~uij>Nz|akGoJ7Tl*o-5*kAz86ExMb(M4!cii)X5U}Si_Z*|{ zqp>JTHXWtmSH>RGe*Z>K<-vi*L*0)sh=n7?j0WYX{m&kYA&Z=z?xh zMd>sm6A_!T=3hlwZ<4VVvjmnlo}0j18}IUn6T%6k@BYm(c^me#9Fl1r@dFE{j--q) zB$r8ervGPJjoheZ7>TMwi<$NU$wnjJmd)O$R4?un#RdTT4h{9_ccd3v*S2 znN}mxfb|RCIZ9QFnNFi<-EgYO6l~vNi>}R;eH$5sM#Go!cpZ>zw~!l*Dz`&7FQUSFr!K~Ku={}bs*ng7#aK{k%Me-@3|Sc63kY&SMb`~yImKH*rkkh~D||GZU-(lHmU)1A7D92K#}kV12EPkF zcfexz>6x;N;%>)`6;2-&eOJvWWO-1|QxDLOZw%T+i#4Fr59ttfcoVA$dL2RKX`l;5 z{A1}RUlW=bw%^%_@Lkk4Fd&j|$6!zYS@R-LaZvQ8d<8KtLUPyT7R{G-E3i-oi9mJw zJHR%*Vp1ZB4O^`kYHHlLi3Yo%gkgxI7?wR5#GHUInhtQSmnQGE!$ly&kI>0;Z-U7QG+=z;_G9}-OYmT(6&+e7@5)VhRaRefOI z*1==rXcyss$As)q4Sr%Ol8*ZfuFp4W?ZDoG#r#DaQe%z^;fXi?#lZ@<$@9avgo$cT ze7>~=9zQp(6s;S975#YMkN_;hm=mdg!I8!^;+%z0al|N|k?SYyudo5qa8q{#Nkh_u z#845Q#Nkm@+k@2=(PR2XTDoVPsGr}xXKn}Uv$?S(+sF+pS$RmWagRc~EINck&hCn5 z+OS^zz=sal0X)I4%5~)|K0r7ZR?a+r_nyeYSdnipy@eM{jr0HpUZDPHqJM)@m^99n z%x0P0pjj#oQ<8NE$iNu9MI!YlR3t#N+PFNjF#iUhj!oXW)!)MP?ydSL zS3jC$r3ZI(GxSDSCwt0=8&MYs9~eD}#Fdex^IVWq9#pnjiAo+^s2vQr-xi{<;z@;0 zNYO*>EJ&3`T;i!N^-y%QWR?ApO5x3puuLUVF0dT?UUhKiMx43G=Qm)Qao7V>mf`Yk z7*{1y4_dZ?inEB@hU6vrX<%5yTDs^+gA=24@0yWQJXjig8J@grH!|7LHuYf3Mx6SL zb~z%1nNcEbfACKE%aLM7*vH5$R5u|S@ZpDMbh#637Zlwr5)e!K=(M;a_83)aTUMH> zf{_3X3F2^CaE0J8)<40egFgr*TDSr&%DCN~$3xne&%8*(Z@jdr@j+zSS*gqD zTsNG)8C5cNi)p7b4pa~a=Bbb-?SF~v&?2L52maXT^=@FOvl% zA5vG%hgad3E&Mh$!erZ-#8j+VvWbI!Ex}}uhnD9SmruzQ@z$3fAXgSBT6X6SmkxlV zF{NrDaVzK@P|&DW;`L>?bsVfJuipqnm%=?4KffQ5;{7;sSM28e1xbX|H&gE9MQ>X} z{Z;~dWgDay&6%xkpi8!n3gDk4TazDShhDpva`xdt+?MTaiW485(k2Cb{XqiuHUKb@ zmbx>?^TigRASo_;{|-Zx@WA6|FTR6wsB9*wbN31oMi#iNgyIigv>Q{Dh(DUJ0Ret% z&O_)xitS3D9pTZ7@s66ji%8hP7g5tQn!1J@r6-=Tcx?TX{u72OCcZ_6UMCvqP28Kb=-Cl~nc{Q#3{LZ2HI zXG|yvOxqLgBFgL4xzX^X791iGp7tgQ6QtxppBO9UhyUw@h3gmqmoh!LYPtxC!L}LU zQU}%`UF*=>4&lg)!BssX!#1Z2HdH953ET9C8l>HpTI| z3lWf)G?u3@-JN=3MFEa}+Z->~6RrC~W_9N>s)>!xQZm2~_RBkX41qw{(OIy0fGGPIM^PcBcX=ltH!C(A} zW1S&1Gt~Brrpn%i&g3st##o_{30hAJEI08vs#M`>M&n|l4yUP4`0e^r?(?as-{cR0 zX|iK<0;V(x@^A7X$T$x<6l{Fy`TW-#By4ac)?G#E>7DGp_d<%}n=&aJG+KUP#Av%( zEYAjtV{B3!3eiMMm9h2#-AMW}V5=@ySgS4+`qtkLYk+4h8>UBM zVD8c1Ulxy|>TYAxT$60+o^hG)m>lnc8+(#0Fha3L#*X;tA;n1&XHIb5qq&f)PCfMz zl$YYA77f7GydocY@b}C=nW^icG5ju(agd)G<2P7y!#7*kKlTP3P0`u4ePLn&F>rkj z6|y2X>zg;7c8Pyc_EvT<6c@LX-SgZX`u+nLn1;cEMf%FMiFCQc z)|rtJ`3@cc9?<(`sp=bqF0B2BrRp+LVlFU9-hIYwns>X^VtR7ffmjH%Ekp)XpiT2T zHj@|5z2oXY3K+lcAC{}#%@~H?tys56b&5bMk7(S2ep*csLPlRj)?-Ic#Ar` zS29ghi6Qs1$@bI+grN~_S$2FF8_JBzrCAOyy)(|MT3q`gOR0f#9femwHauf6VCI< z+y>^n7FAFK8=LL0#q!e7DqoRYL9#n`v0qB?>%(dHbVq`(ty68d_r0x^YgPzzua3bIO_tRunQcDGoI>I7_MM4ExgcA+wT<9IO{!st*u(zz^hMi-6=? z`*jou-yI{5#!ipv>0FDUJi3;qutmT(2Zu+SRXFuHV31As^_4vt}tnM zNTB}$Oo48MQDIfnwR%`pr@mgN_D$xjz1s|o;!@}YCGt}NiL=_ma@Xq5<0`DqZ!98` z_Ga8H`X(=;s!=p>$-3v=8RXFSK?svz16jUgL{!|kY_ej#EC8e;&!x3;xbEpnQc`lW z!&}Fsa}uJbUO57`kb7O3{4^0F@nB$Wl2Te$EIZ0*i??Dd^fCZP9f8|4OROP*?}3F| zYwO7F3aI;f#a=AZM`?E$yTUyn_VMFw>8#~uQYg|J<**3tIWa4>B>N&S+p%Ic z6;`BmD=}BO$U@Y)yA>@?YSOnqAt!MWGP1v>EcJ0v24#79<qKux!{<3S@5w#3j=b&Y7f2+RS;riC zY7TZKY>&IHUr@!sGPxgR^UVrLg*buIr-=`Kpbf^gDm`XST6|;Qdu`tt&Y&+6T8fzD z{sm{fl-zcjG%JL@O$HA;;!-=#u4IHuljcKY+v9<_^bF3$I1B7T#mupr{T#~PJ=dgd zNqB@7liV~0#XR5V0o5D#8UEiH&{;YR_T!5Io&P}w{L4GothTMVpoH;p#YK}$2aXv) z_L0uRRV?Zmf|BsPAS03GyQuM`p2srgMEAtyX8fJV~EvQzh-jdKV&Z$D?&@0j8>#X}`}66Nov0xJs2^dl1V%shHy7nbk>}*7GJ;uH-1K zJ+J$QaE(nGhx0=y_w;!NP(nWsuZAJ@ST{RF)^_Y$j*tQ|$Qr%0n0W26)3P$FE8$k` zVTIMj;=8M0(|QK*Oy{H&-VhWsXH9pwfaXp}+|e zvUFr5TeU=6_;T5Jgmg8lVF9vuX}D^ud-M<^vv9ZrmXAHAEf%TJ%Y^YO2oov(RiqLF zc)F$N6aV^yVbx?)52ugvr^%3Qv_i!m(eeUOn(8y0I=|Q}O2!QJiXfqhOY91P?hxmE zo0#pgk8PtsOP|Os_G?e!Cxx0uI{G?>VH#ZsevTfuQ{_Fu$R*M@;c^^Gn`9RF&BC}@ z`riMs<^PWoKvq2575*P40LMSKS^q}~7^j286halEOI2Sb^ZPFXlyl_=0teGi-8=Mj z%`;c65{S)$Bj9fPo-g9qw(RhO1CjYJ?A@QHPaig1uD5)i{)vB4D;%t=Qr1vtE4f`G zJT3kPmK>_*`mpRUTzD^_@WR7@ZGur_Rnzfes4b7ZD4+IC$E%s$skPY(Po(%?|GjqilqK-FvT9Q?bpz@Gt&_e;gOnV+yy30x1nOolfJaxHFr(0RG0gymC2> zV*Ik%v@IK>%nJK_!+qG?H7S!pV2l<%QY6-qt@VKy@Tq>-bf1o@?9+rc062N-F}|aF zQ_Kc1K^b9D)|kj$4&yTxb;0FI-YV9*IV+gbvci;AD_pk+jQ+9z2mUvAlPATWP_H@; zX!y7_ii~`4W*DMV_X1#B{zLpfjepMnKm6bAqKE!~K$lMm1;ax#DOo>t zclru#DHZ=np&}cE-ft8d_w@Kb{f|QFajwtPR_CwJ_h(o`tox8UN1-TC{!wEvuP>o9F%22+m%6X%=I~{Pr z6}v#&Bq^@D5hAP-I=-%foIu$buY3SW8wI0PjQ}tX_RTzYiD60+=A`COjGXT+n%_X^ ziOBw>sM8`Wbmu*ixCIjYQ~xnZTFAI0sMVa}&b{I$nEb)%2}%7zC(~4IC8<{~Ot|ou zokBR6(ATGk)^+3T>NH=&dah4|0a9lb zT&U4#$UuQy& z%ujhIX77icyt`0-wb=6nb0E6_$YD_3?mKiK(rxL z!Jl*I*?D55DH28qHlHYtP8qx9*T}(0F(Yv7q3`kO z`*H37A{Z$36Fd$51Q18xwk9)SgU1Ftn6Si>85(pB8@;_jL|HXh6O?!>+uM?$IWIRLdVFs zedQ`_MJ7A}C6UniB!qye$`kd$tU$|(fCN%5X}08yRPrObb8%8^&pE2`jBFccp9ERi zYMVjLI%8BCJ@ihJ%_iT4O%xR=D8JuMq1jFC*Yp>^W6RpkW2EY7tG`Qam&xR<-4)&V zO}HJ|@Es!y=)6$IZ``KowNKw@R7mIY#9}P`5o`Iy8_7Ze&NM;RHpM7C>)wSyKIr%x znYH{E`{_4O>e@sD^GuAdaRX5rhe^79svhcu(T_Jc24KWK`1EYIkaKG{_MFf4AX?NJ z6yp?U1?a98o->}kRk}&rwj~V_BRrFt+M`4Z5I0rf1OzD7S1qL~r}Gt^^Ev#jNNMR7 zZ`ykFye($Ntt(gq_fFEi@d5Hado zs-wn$0OytkPq&a1hj0GAtZ(tYjc?(;PJFp|I-U%|?@#q@ntjn`+pFXlUnjNn#&|PzOYp8)7^au~AeU^43lJpuo^n=0cNlw|C#C9lX^*k#r;4vw87yvfp>YseLIot4zE^U|}q1%m5!Ri8}f+_5_Dr{9Fv zXp7CWe&4P=l8!l&rugteH~fW`Mi@YRQKt0ROu*w+K|R@OoC#~*!uvzl7pKxzz>QE(8z_eeGAo4+$@ad4FXVgfeph4R&DnB+?8t_+-F#hRbjH=QYrI2 zfm@;3zYyM3`kSW_*FPB}i*uic2(x1iX$4r?LLO=6kx!E~%QjK`5juYIs^O4c6 z2TGZs(Qx+FWEcG;L_*ICU(rvy1= zQDedy{Si>`PVwN>a6>5e$&|mLdc}4DNfCj-gKeHAP_P#j!~+`+I+A?|wsrAV%4FLx zZ#NCxGwP93m&<{h=7ji9@-FFp+)TF}^lb7OgmB;I|4ZVAZRUXHU*);{>#C8(e@No~ z>oUKUxs{ozs;k|6!% zl!bQo*MmdP;=b>@+_Pd51rfx($Y%T=Hp$;9SnK7z^`AEG`D!0WW@@)V8Ft-;pjdJS zNX(mDwUX#@S9l+csGjn+0xx6sEbS@Da;$K&u z!YpV1OTMVx)~2i6a9ELw(Hyxaa{*(Z+|^|5Irl&| zut3qU4C2ARt?Gem;!XxL#{F05Pe+?{Ws{5s4sbk|Ik(BZLd5>YI*B37dFSqkDlPZ7 ziHXb%(1>Jucwx@+**=l->AR)97N!zru7L$kebk}dMh{ql@S~^TiZ}C z`Zb8?hoZa9lHD#H5L@~h&u_bBD~SVHbaxr&=&~?J=v#D~1AX|rj}`H`kWnp>hpzNb zL%cnZzmcFx`r1$@;g6uB$A2>8&1d<5?1nhhr@W`Mm#UeY;PjURG*g#-3{%&nf7;Le zQZ0qw(jDd;dIo;J5Dgqb%fGrdg-^}~UP?I;Su^c#d=L6bd**!;mcu3OIa5*y4 zbl)@NzjvZ0zA3~^U)PTKzeaK9|5>Pe0lXZ|{)zN%fSuyHI)*i^zZH)9n6=tIc$4qFY|} z1Tp4}e3kEww`>=`>xtH1e_;(l&jpm6xMROU27p$G2E(k;wV`7tI1x$gLba$4jczKi^k=atT^q!1#7SM@RR{R1&-@C{&<+%) zac`idn3?{(caz!rY@#;W+jf8ooyVsa8T%Zgodc7JSEEAPRrel%X&a!TO6RazcXeF- zpjXLWAd6YMQm0*It|s~Vn68*j)OSgH0{fntbdxPyIBRth>q>_!P{!}lgQ&A~mRsVe5@XbjVC0_baE0q0S zY7i;~Vl*5()npqBdcPbTdl*Gddn02J_#s!OAf`KSir~_gid|YKDW*eSh(EBiGyq&n z{>bmwomO>5idV-m@Dy!Hqb5=tw0{m}gp450k*t3VrWArI(Ky5s3R9ph7MI0W&Nfqt z{}yS5`NSLQ(83rYFFpn~?=E=HA|Y}QdybNQFXU{a_QW4bZO|hpLUEzh2`!9wBi?_F zqQMx*r*s0@)Q)eWh|2ex=Ze@G=9N2t>X5xW3pAyKRosusbxrae9iB<#e@={(?L1hH)VpI)|HhYqf$ktef&d zaorTVLLE?pox+p@zJF(|f1*t6*%xC$;Xy!r{zHtFQ#Z18GgJLac(XNAb1||o6SXum zvHAM?-~W#Olg2~pb}r~@82S~@|kJ(nem!-nQre45PIKN z1X(DfV2$)hO7HU-;0b+Nx(UK#D!L(MvK~bi9k7KXHd3e-R6mo&J6h`cx!V8~2Z~J` zyX~?^r`q4j+c$x&v)0_1=Nhdvoqw(JtFZWPb@J)lnQoTBwVG>kT1oXShjCP_2i0}C z89Ao$t@m8w%QN{ICDUzKMfk3V4s3SR?|8-T*!#zBP>4d55Yk`>5rpPh@a=P+CvxKt zJKw)YXu*fJT|Ie=t0R;NDi5=f1WQx{c z|5AjxrVf*6Vc>wz(sGTIIe)vnz(FKqA}!*n+_r^Rk)*J~8JQtZ)|ML0 z#FCCFSKg_H@(|Xs?2&OCt|~50!YBHR{+Y_c2909<+o>wrDl1rD!ePxrgm3n5xg@fVh zHfnpgrB9@p%M;2c<%3i9u+vu-Be_I%LOaX1Kf0rOFCzN=JF9}NcI+1AdACe#y2V2{JgopgA zWB8I92Lxpd|Emif5BYU9hV#E>bJNC=-gYnFVdmmBAtFXMSJxlea*T_gY>&LQvjyAr+z@}ZUy7}^YdOl$ciDM5F!YhXyK_M@e)&vK`_paEA&JUNW;0JU3K= zch?F|>u;6hJKRv^+O|TSQ+5#ZH(qTSy6Q-Ei5vsC5)<&bs4*QB+OabS$eT5r`3Y;3 zqr4bO#8KjisIx^}6^FL~AtTxOO&~OFjCfR81hH%nxes0#W3c7qa_lP>A>V0CFi;2n z8gzWvl^D5*Mfk`Ji-_A#nYvp8Ey;FR+Ey~k8Ab;I2^z+k6M@0#LvBJ3_Uzfuq8DWo z2<3#<8|dGlAg4Kt(DdaXA7|+6s9d9_nVR0Ms^x3Qc0Xt)FydoMO#!&(ZP^eec!qLN zY=YB{ZY-#w`Sb{mm4UUq}P9 zB5c!`K;~{JGtRK{whi(M^VAu=LYUT)I$(>#bZ5Bud>fHNBJ{{VZ!f4d7KH4l(Q2SK zf17Q5UHn_^3`n<+Feh90+>*w9J#A?;hiO%U*BM7IEf(y>_s6z~du*=9I=8j$mB7zp zu{OcA#qU08tS12HQn#@~9OsQ@-H>X+dkx`Sdgf1eWnOfc3!Cmm-_AiO7vAj929sKm zGr)v=g&La^ofP@}p*#CWHZzP&dawOWpRC<`j=$c))f%we)1$d4KrSFYL)CAzBC^Jt z*=Tv;QDLV!%~zBSz(3_4wxS;syfhT}zUBQx@Eo-zp_=137|uN%;!WPt9PGM?m++ZA zrsKz1T<@VR{-m_3r-cSSu7wA_R;k=IZ)vtw;c?8ELWsRMa*!a^EcHoiu5s}n1haEq zE^TI|dj0--{S2|`Nnuy?a(DD{yx$CkRy`^b3v$IVCA{M}@{P$uB&P}%HEEjfS6XM@ zSbU8(^|`-i>c0UlNNcUbWz!^La-6n;yRX>Nmn3Y4DQssLdzq5z!ZszY`snbWrF4Qs zHKk2*hcA1%|DDE>4D)uqUo`IfqVfNmdx-zvEvkQAMf~4CsG1o$n^^wuVV=6p*Dw#q ze@l0?82=}u9W7=t7Dw8+aU?CKH7#lRB22Uq&WJA`n<^V<&sD?}ri`sp zOZeLFdM?6EFd+EAp!npw%KA4J!>xM_U)^s2`>p>r4R#K=?sOJ91PZzidL10k-+J8HtdSamkGu5D7LIY>f zJkQ?*KZIOAe0dFiyEW~)VK7K)xqJhtwO zV(>7JarasODfQZKFAt)*L?y`iUVatIF3?(H051lAMrA>@_uasXYWZn}O;!S$-8&)% zivZ>P9|s`V;Q(=iBdfRz=tTxVC?CYex=-Z&b9V)|a#Dl37?$7^Y{g&nabP%Bf2L&5 z@M&M{{ZA_xsu;qRswBGu$&4w=nwLz_$kDksK}O&Pmr46s{jy zXTP6Gf6r**x=cL6-y+VZpiEA<`^qDXou-g|FtRdsA6fFh6(Q$okeMSCB=?Gq?rPRz zWDR*e6HRj<9~1kU+ILnQu-_?0H#htuzQxUNBXp`^atu~s@VfhHXaFAgj9lz4!uEu6 zV?-94z$YB&fn3wo!`=53PHVXHNj(S$2?s054D#rgGz;~Jo}&lMk`$NvpE=`tXbJ~h z>PM)yqHT($Um7H-2H}op*`ICb;}X^%P+@KK&~4ep4v~hF4VEbL?P+dwE+I_KcU1s* z-(gmfC(RbF$s3Idmt&_q!6km9Xi6kX1I~s1sPl5K1Nkt|i$-p^W`~{Gj|0d9O6x_o zh)Ja-IX^>D#5e?@i7^{FZv>vCba4k*iWA;Z|NDLNaB?u*@~>^y@UNE;@qZ~T_@DQQ zilc$8lc}Afjfo?fu%n5A)&K6R8U6Dev$OqQZ(u;1|7xuHuDYCYj7EV`5IqMfb11+- zbqPVWMh6=kjPOW>69UvO#T~3hY#?t}%-cN-Kw{UF$~pl0d)6T6e?(v<-@900pBlG zY$h${F<0~PqY4>qTj6c%(6!hM_w7XFVP0_Vp!w41^A$hXYGgj9)401gsI z$M9>?*44f#VFa38Xp?u;z99v0U4fu(@u^j4m?a0&;W?TlbW#ARDCeJ8c{oC1M|+{R z$mBnJt=1B*F>H{zU@)Yu@UB}4M2UmK2$zLvSxeZ2!jE0=%0Q~NjQ{c zYbI!Yh5nICGVJ=57*jez8B@0oW&wqIxyaiVudl$^gD3@I3p z=5nQ5ha&**000BV1bKd&3R|j49#pE#b6c<;RH>fnE{rpeVkGd(9>HHrX9f@n_@we}B5g}IU6o<6H|ql= zv1%$SY>3JKG~Z?j4c}BLsM0Lj*2uF0HWM@|*hA18bkv~b5nsJ$q1@F=%{}Yw9YTOD zvW(U250C!(r0P~Q#RK*hiT@lX6s{E1aZfAi^ZD58dfRURdUB=j&t<;5@NWrL~Vw5|yeaz$GWx=n(2DnP(PWFiy zi{nYqnEP>}!Dy|E`VyL&wP`Nelh@-7@~{=3kBbn%8f6^ezlmp2;K|d5VoUve&E}k$ z>?ucCiV@Xc2}tS{5^(z^1@wcc3qEr9FJGu0DMrQ_4iBgV(y9ZHLcWsfKN2{a8j0AW zk*wjprL(>)-s-HvMWWM3Y*mCKf`!sDX{axLFz?KxwP77a)V8l?jY*zmJV<&eHw@!N zFqHxa2+WKM`SBXbO!%#`%&AsYCG~rMdp(EU&RB7@$W%lrZ-+|=ov^(;_sREP{ z-OeYaSlg{i386L>B~gc5GiVWq?lWkpDbXm3s!b?R*Z*eSd6GDifR3k=uYpC-1g1~~ zyGejq0M40ePk5Y$oDFqGon}0NDJT&SPo%yFF_x{D`D~0qxlwA zzNfdpqmeYp`H1#}_{jDQ_(=8?`6zZAu;sU6@QfSeY%a#B!m*x>#%d4TI-s5=6M&e~Tw$-VCwT5GOC1I++_C-zgB7iJln zRYK(*+Sie-AipjFUs|gyl;?c`mR>wHHW5b}3UdH3^#p^NWDkwPK(P~FKAn)AhITc+INu&{nsDMrKE)keFAZ5C9+Yt zs;gvflJ0KRy%I!L3U=DiS~6N%YnQMgw@0@=bJvrn9(G0x6TJHf8Je2vvNEb8J_R=K zZi;B5K^jm@`K0*~>(;J8x>aA{3#&)>4!or}QN7Xv@82K?=CD*UtG_|J(u)4IHcm!I z(tZ1QD?kvhGHS_IKv<#}nXjyXoOTjefs^dz6C-!RDaGT0#|Mg60|v|~4WV}n0SY3B zidgxkduGmvipgo1@*|2l`(_du5!42@%ky|OK)RZ>3x}ngBOJ|4!#4M~i=J=4Fj~u{F@oTj$83+MTs_@leYt z(_OpPQ?IfnaOQ6ceu=Z5rY_dapFx}Oq{yHvO- z?(K`c)XfqWM=p=Kvd8@l#k_ftsMtIOkP>c&XDafDu{RRb_j&7~QV+N{A;*VCoO@9| z;Olkl&Dxp~owb-rFUijP+@3e&#J7gbj>yeMqm}o6?+Ls;Qj#eL?i0Ffzves=i@v4u z%12u0tBUImihCan3dmiMKL#V6J=T~s4_5XX>|I!)^g%h?@+v0kuO#U^;KH1S_;=dh zy_&iQXKJjXDtSIDt1=d^5o7-{H~x$z0j8HSp7#`gFym zP{b^rhH$q)m0k`rQ$`GI{E72G0??|3v@DBgz{n3kJweU@#3iN@6r|sC{hmW@^v@{_xkp==W^D}5 zDVjUs))b$bbMy?rITnMNlQEtio0qGZrt$neS+sPl9COyHU7 zI_u?3*g3WQt9ExE@VLKnzGh~KJzJU;q!Z0z&O#a1P>Y8myN|_%3-k7lU@Zvt<2={v z#s$18e1|H02rEt{l*np6oFX>UollH76I*HTH)=wrhx;S}nhe#$vMVXS7vW@bZ6I0W zxmZ9jHA>{8K8xQb{7{(W7QEJF*dJ6%CVQx=8K!<^fZ*=tknZ^dX1&-!Q~Yvv`*Kt9 zQy^nw!@0*}nwuOl=@@TRzJM2>pD8DOqkiPdO3r#XwvG?9Sz?bYAXlJIeKm+=HA-nU z3}!XXBa1)yR?f62+0hWjNmxn(d62jd1}S1_Db?M(GMR(6(ucW-OWom!NmK>9t@f%{ z9r~4kOXJf!g&i{M*F;)!%->(xUL|X+P4<6%SZ6uasim&dY^mRF1$5oj2z4k|ji9F@ ze%A#b^_Q#nIT^ald-I*@8}T@@T*G^_iqDO8`a6e%xA;mr&d{CclK^4^y4lHU`MI~9 z!ocNZ5T4hbCy{!Z_x-!0uHe4|bRZ!QuZ}b>o|wmYa`C(yb%(pMdl?i1lS~N*5?qKg z$-%_gI`?2^_Km&a{(IWaR!lGP=U-9G^RFm2{=byA|G!Uk|H;yuRAl5)712KBaupz` zsHlM6`H$b>kWetONI4SY(U||4`!H?F*{uZ_XkGz+VpMCF!p3NQ1;NUSqF{c0`#1VE zZX*)Y4<2dE;`9$x&DV9e!FqI5bM@=nxIr~0Gk^?fs7bIrrw6_;$c7?T8!st1jZp>o z8vG)x1Dr^7rY#047ANM@{nl8$DFQOeD7W^l+*nUpLmfyp)KX*>YwLeS*5YeWOrvhD z*Xyix%eJOpQfQjSAdTE{8`SD|-1<5-kS&lZI;yj3mumHCppGIu+L-j$tPl|2ETaO` zYox4#^yxaPRXilzbM_m|!bFwqRDPS!yJxF8%B*y$tNut++fHycy>w z#dBj>@;aY~W3(G?OA5$txndbQIJD8}Y*jBuKbs>*c3mG(@E)C2Gp0GXuzevYLQ-ow ziY{mkJFfs^Q=q_dC_ky|92h+yVJO$R8C-(R$*D4GUvo9c?wtgzjKtVhV{(yF z22xNPSXsf(YC9KQ;>@0p5Nw>vMe8Av)xg}LzI%8V6qPoP>Xt5X(>2KHDfaydglZod*4 z-hIkXXmbRcTKh%#CzAw%cl?d$na}=)zOYXteuk)P8v2AUiMk@@S=(anFs{1BcY_7c zcZvsZ{z=^=8EKzMVGp&(nN~u|4)eD6xJY9}K7f=o=_bi~3mulYHzw`)V{PkbNmn0s zY!*|Hw1@wC%%6BKbd+Z2adjlQ6FrG6X~tZPT=>jgVkNc1H;CN(6F(_&gg|@$R!ac@ z4}HUy04+J8j%=nORB!&vcut)*mD9uDsNyh#O@%`z+ zVrNQLXG-YW<$)c*d>4_BU@T09v(@q{&D6!BRoM;;n+heSE$*kzbbzpVQoMQhRg&Ij z$JPHryMG?7AH*mf0NvDt<#jN6eiuNYQNovG=s;|i`uK--Jo2=(l81a2q@<-EOkGVob6y`vI@9dWiVBiUDcc!1I_sl}sF(&sS<>orOHlg{O9*Cf#oT`5)rsxhXL4iO&r#hyz~~b-c9DxQyAp@LH7VZ|pi{JPJOR;HbQSZA zs`wJ7RQML3UV$tu{nhZRATlf!NMzN5iV}>xp-PFzTX1N`{m9DS3X+jf0` zJS3k96)}PJa*Pbi1jLq#0Y?qP@*;utvJ|M2fnv>+KXNkt(g}MymTmJo#3HwC!@fmv z*c#-?@~O>WeNGX4Dbj5$Be3!oblY>GCXU zU?0g~IG-wPFAg!6GS}B{l{KQ&7{?Vd(hd#FER*sEANK?T6C>pcYPB;A>qV3ESMB@U=5`^EbZ7>R5{qfd$r%ppn}WE z>bfj&hbXnIQXLCHMO0NSbO{m!zLhVjFKhq0s(-@Mr&tw*@e^!kwn>S>M$^OOgy-!e zTA{GfQG|)^WoTRnkE#Y5BZOu#88Xx2#>l|lh)aduq;k8sT%W5^KwS}^igKDI(9EaS z)5Zkb;CX%YI^#T1f8g|dc46n-o=M>!_0MTU!G#KIB&Q@wmV_)>wHosWvao6<(6U_Q zV1+eMyOKs_vd=NnX(4$w&E9cI4QO|m)n*3H0e(&+)@#YIM-Nj~2BoqTtf4QX*~MQr zaVX89=A>oPdoC#U$J>bvZ6sDD%t|^$Si@D3u53sUE1gY)M^RDZqW0R3r>?y?zpSs`v~vC@{Hr)Vu^ zm1m*Ii`4g>cumxIH~3SS<)n0^ngTJ33E4;N;mV@3U?oxs7R9p+8ZEyukRT*oscPaY zFUyBqP~0QRT6GQMWf0#Ovo|qeH&De)AR|iwGFTrrwaj&J(ZbiKX&>Z4wXBlL6&yJt zsHr786HcL=SQ@MIm;N z;}BPqO;;8UM$C)~>;N;FZfO#@u(NiNny{vb4IGuW?*RxWveZ#7MlEb#ggW32vn54! z4QftsU9G<_UCEp2FYsnt!kl%qK|dVz(u?qa)>AlbK^%ujw&yGXjkn1{3dYer6=7HXwq=BK8`7`&{)tGrD~yumb0~82-O7jc1vK8j;bo-qBbo>OF57i- z48d%9HP!@w~QRW+*dLUv}`LUs`bHc{&*K z?t72dm#6hr;kJs?|Hf1>7d$2E8?|sO>n28GkUQj)WU@6->C6yybm(D6ZeCUD7}O8X z-Q8&_xK|^F`|vQ&@YU$zq{diUD`k>H`g)Z#T<@`_SjhEm5{Z;t*I`E9p7b_#!?mtEh+utlVw z#?OjI#~5|VUrSbfNuU}hm_IAUI&P|}&^zej+QRVFyso0Ff(&JsLoMGIaV=zMa%NR7 zrv5mow4PDJs{jN}`Z`#LNi~#(WFp%ETfi2w@egXf&i|&9YiW#vpvf52!s#}S%U|rSQJS~6DyoIv{R)Db|R7Q~FqsvRIpv7tz1vn1+ zsS*7Zf0P#Sq;2)|`Q6ZCV4rAziY&%bwR`n_c0mmI+891jh%u7k-zj)OQ!FlGHCNY@sdP5~(Ih1C?D85cCuh_XL9IVpAe}9z zGtw*Ckkun{B@#}7-?x_$v)^mPSc8Y2!CTCMp-x-^M#Uwu4fqS1tBKNnF&JJG<`>Q# z2nJvb3QFMb>PAwqVP1>7aqR!ipl8nJ=(8Fa96eY)i-$1o6^+PsMjH4 zG$a{kC~u_27n4*HoFqM#UEnt;IYXIn#>GlDLRT*e1uo zdGnKS##UL!xGZXc97CWd3}bVsM%JaQsH=v7a{)bNHNQFIR9Z%-sG4JeJ>@l^eX+0R zIyS`ZCMTqOPdRFG2lg{S9$Gopd8)6E@{~vT*oxO_fJI?R%QAD-wj7tvrJ#L8iL-%i zp8ix-dBe19Z2^(qCCqrM%oQn7%P_0Ra^b&(IK#yBJ0G^f*HAcdTC`RkFjEXjE!E^P zAHzydr83LVjSh*UN>AnZDedyXYz4Hc);tBWRk7^qr@jyVMXoSYZ8|@MQaly-MX8Q= zl`~R2)i3JjZGmPp7v-BuUh}Rp?4=TP3#A0V=Z#W4wUe)*f%59>{1Wug4LsO4%jK&8 z&193BqQ^2y@`vQ29E^<@=8NWeR>Li)_G`B2q8#9q23tHt`l*LZ=O5ihb0~QB1$nv$ z<%h&F-R61PQ?r!UHZW~vFsg&HVSo)&ehGPi#3t>0r_r#`~IOP7D0xHe4Is8U{=JpTmo+mvMzrk#q& ze29NE-_dNf=cc@7zjhXV>Q}r=IKC_^`KkDkB>QD&4$WTY(rb$B(LZ25s6}DS7|QtM zFY~JTPG}MLjc(CBq`!6)eG;eojUG5XgcNnDyg?7(FNV9n5W-B-4?XJzqi^60Ns&U* zxhVLUlu-WTcfEei;~G#%b3537sY&N-dBz`eOpe0+Bh$ zoWdL|LSR(NJkAmdYq!K|cj{skY=TE?z7Qt@Fe+poWtokE8ynu|&Q2hgbVS@(lP%|6 z?7O=55?16yq8z^(zUD;D(nOgVqFW_tYp*cXwBf43*z$LcYNbSyyAnr4`nYZyfWRew zn0~P9YmLo~BLeX6f}sR&+R*o))FXBvE01mpl-`h&e57N?yHrgC??-NnXWBoQZcOEn zO5oqZTMZhFR70z(sRHlll$9s7^nh~5Yn~sT%uzaw;|OChZ`w;E^yM%qjwRCBHkc>c zJ3CKF2sSl3Y;A}lYxygu6^d`p!HZyC^fW%kYp`*3o^|!>ec_M4$?hZV$SATZL5)Rk z8|}}9pzXc{sE7?wDil4YxHg;*yRHfTU}_DdzgOWYEWG{5z zIf@Qiypl9~;LMN!1V7$*ZH)@U=Rl8T7qbQUymMUTApvr6D-VSjrPEpRl28NRD&(U^ zZ-$f?AxK_&Wp7siAzcr#Df2=eLL=A!*~xbB(b3}3*djmUHEpQ5GE%MFLVb<#vt^6= zW;M^O5SzTzKfnAI>ZSB!++#>O-`EQdq*<=_FLTMfbO-Po3-yJI4 z8W4?A@det%u2~M+aIM8D8#Apd?shj7MD1Kg>~p5eP(4{hEl3gZbvo(uy5(sMsmD~) zKe;SLwZztD;aOD_G1gUTUzz6b$bQvKWc=W(P>X`Ffl9HPWK65^OA+#mLpyP1#9aHq z=nS4SClt`K{1ojR9n#vKT}63b!XrMNMNe1-R8d8rziz#c3ou!)pIue((BM+vaj!p= zZ@*pLc>8(>`yL|kEsbL~grsO9e)7)eGNmO8`v5xXT-|LYpqitS|D*QuJU%x=A8A~N z=T{4pov!U?UzwBI#CUeQy`ljF@!hq+4HC&0hd0mt61}leZ6)2HpsR#0j>uUwb!!PC zQUjPl67F1eyh1Q)6tpaaC~r=5fVua1`kIgk&pITH#}5dd;7WeYAec3&>+uXhk3x?U z;FV~KYg|X%+o6(z3f}Cvg1RUbl1hK$LBCntam&EOCV5Si05C3p!;n%sjkUh%ln@#T zf2*sVuYYAOYrXAv5uOYkU7BLgx6R3Bt%Y3Uuu%{6iXel_^Rjh9FI!j34t9lDIEnhP zESuShl`4yoI#_HX{_3A_nT(BYe42NwKscAxsYV=I>}LFp_4LWyH@hOeh%>Mqm%36@ zqbEPN>A@)}C_>hbT`ysu{N7$XpUs`|%ib)IuWN}Py19=&zSig{$B(+^{I*G(=DG*( z>lh!>+1IE{+pIw`38%l&rVmT388@sO&v(K@u!u8Z&^L&b-pcF$G*3*5?yX0-+j)0+ zJ{^dwF6hoJpd`kNoI8C_DPc&r37JrdrVNxJpC!W(l8Il4RD?}#PvsR{?g=6F-R1^6`6sZjFwj>nb1$un#7dcgT(^X_79X_aHkGmJzi}e(NMIjorrSJbacJJ$ zVB2kSE01b9$=)P{UeHmzNEbA)98zzC@Q9n$%*K8!e1BmeX%!%9aP>`?-yJ4hn#$(% zGq@?wC-;CYnL1p;qZlBRS{y|#k7dXjZ8Rzu01@z>xn=1K0b2<3e;GGi8QD?sLlQQW6Rj_eCpRm)H!~u2cU&r4_$LnmmY^|`Vn&_~o z;Z>7w!r8Ct?i<A%9g>9T;n1!HjygUQ{NMyrNmSn1p=ronOl& z-B<~X{Dd_-!l=&BP2&Y>(Tfw<-n>q?+v=o#kb!9niQUcf+dX(+2IYXsbGX6NF0&2&ZvYd&FB1aiP1~+dC@3auK@x_b#y0d}RlYs6W z*5dMg?-mjM)HCU_!svVPLX4#XHGEIbq{ov~Cw&83ypckz|5|>cQtdfL;-0Vp;)UqS z{IBC%7Cm!%s;}31N)lZwooxERHQan~vSIXE7$BWyV^Ea|tEiROh z_EeDz{AEBm+X7NvyZ?7$oIQ(A*xLvi$0NMUNIK@kjUP~?~i2rXn=nBkWCEaWl1 z0%6H+^M5pA8aXC@yw@NYoiWLEztsJ644n7hYvuJ_Vu)U1#I^rBtD^KyJtbYH^)BES zsZ-v3Leo8UDepAa(rCUyi$+NWkd%{g{VgjgCDZoZ?4|P`yaznf7SRv!u;e>xQGE$U zRC*KvJeT6lp7#esNlAAJh@axk3+AjWW|-QxztGT+=1x5>Y2Vk8pW^6#cH{2JvWFT* z$w!(#8df>OGLxa)MpN-^p(tOBp-SwDG^hr%C+dm_ero_pyMNH0`D~tCJy@m=ZA${0 z0R*8PfLr&|&4AW*N1897;)c(+C&hkQ(r2SonZx8tGK+)WVJy~KH;{56r!;6Zo4 zEssBsrEursy_?3;5zEk5|B<~@l=Ah@E>V`2)X0y@JL>TXrS~XhDS#IY!Zwj7%fU>$ zHqG2sOwDw#?zkAW(+9TaH1{(`m?RAK_|8vbdz$o@PVG4vLjugiC@t2yDAT0O6Y^~j zo>;yt$}c1T8DkdDmus4sd~i8($18bCMsk?-S`8kK5$ZLH&UIc{NjO!I>H!;=#bOhUnp2XqqH% zxGu#5`$_2s*CA0o0PgT!EzR68I3j>ToSk`=BHewY-<*NL#3fCI9aPgO)r%e-m!9f4 z-KA+Yc#_V8L{$%`8s)KYz!vl7bJ6{sEx+Nz7l~Q>$9^Bla}TS~O7pj8Cow{FylcoY z0mx1bk5&$i+Z<n;(?f72APX#W^3NMOsZTSXH!O|$JO3xBhPkpe%5Fh>kk(GXI#H`&cAy z`iQ7HJA!RI%ZOeWfv3{1Tm&baa9l9x;tE#BOvJNG1aMQws4JYeoGK3g$+GrB3)O{O zN|hPyeNegiSpe?TfNk$}Au`ik+>+L$>!qj?7UH7bSasszXDKIbGne!^AB`Wl4(99- z;0izPRqLL~q_E~(frP4xqQ%M0x44gDn^?j4`|`FkZKxDs%rbKm3Hu3+l8n7ATG{Du zVOB=xJ3p?2W?gq`b@yKcTCx!`)kUM<^jWLLNAJ|!RiNT?kg%PlL%XV1WIzipubsI^WL8(GQ5&!8NQkioWzcXuRM?->{P`rytMqK1}VU$Woe;WZ6z zFK^Zp@eqK}DgMq4BDCh3kpzzj7LpoFZw8BP1{$0vq_@)_jox%vdqBS})__G=pxgj! zQ&h?sA?Uy(c@$|qilA__F>1Cn;B`84KJ{@<(K-H=TI>U8hx12#cE*wqUM0yqKBISV zFm$ALgRo==9A_|=G=lqF3St10C*rI5-cWi?^ z*VNGEW=oJWPF?XIqYm48R3T-Kr--luCSftl?>cs}z0(~vTWe&Evz>3s#XdY5ceLPS zB~MWDHiKvK@{o_>hap99P`-1l*#0hN28Ob(hIT z3{YgK-;ygK{0Vb?2rBaBHRtx#(xtP1|3veZUXEjX93WUrxRMwYg2sn9b&lnCD$xGS zlxo1sb?2<8aBsPZQP&!0EmDZ3ox8HkA(9;S8DzaaeVZ(3A@03e4RU!jl39{<+Ae52 z9!oeN8a;aU5{PmScud^8;4sv6p)b_=VpA>|`Z~wPl55HR$@$oTeVWi_Pu4Zq zQ#xN9Lg$hfw=R!M#0wAEm7k+IMVDQsD)eI&B8SX&-`BPeZ8iF*Ge(L%+Lsxnt0{!h zEbKrbW~3COs0`joh~X?O_v~4Kp{DczpY%i`%zzXPay1y&qG%CkTO4VD$-5g4Vx_8+ z3o>g)|BIfnJ?5dwDOb?ON%8Kzr}bv~$c%W`v$g6)gX4PQt-T(r^_R`4F-LFO_Q5if zMvZY6e=ntz*2NrSLNcm9*(>TEWsK}q;Y+iDK94*;>gi3D&GC+#6qmuh!bI-2QL@ejc8PVhU6Y!M}qmrRtJT2`TNO{%6m|leop+dXAgSY-D!t}zT z^n-1d&B*s32WM1JBG%j#%gV;!qjI9S0g`>YI?15AI#zjMfQ7Ceqw z=jS#k#thA=3>I7Nit-6naQ~3%k#bL7tbKLY_;8)olzVA>g~GD1OvWj|h*aA9OVz}h zKW~noSz5ZHLPoId5%=wZOUM?tRAOb@TB!}biH~tN9P;tp>RaaZH&m_Hj_%+xcVB9~ zVQ!-4+{{#J`8+CAmtB4gfQUC;qnj6QC^6_Xz(YdhKK=H_no*5>@nc95^p0upUK?P| zvh|a4GJ(7U_O8Kor^D5(0q2@OT}4|ZEULu-y}MPE0@Cy0ObNk5C+qG5LVHl>X#T*Z zHQ$3AHpq}xLu*;F^*u*t8K6v|KI|1%IM^=?>c!UG?P%3-n76FDlGFSn;*-^i!mz;HmJA#dI&%Ouy z+MsDDz$=4FCaj%eP{3ka33qR17=Jz0HqOHjHcqY|J!r3`*kOVOz zisRev?qsHxDc&CPW_uH~Xc-4*mmKqXICmkyG`_6ku;yx=*=xmSs{dSnv+tlwYk%5( zhJy zVrK9a`OvD~a(GE!Chwi-$O)5P(#UmcnI8NincvI7tGP5LZAL5k73_t}+}?^THsEW= ze_1i~@!V#9$^+)@mh~RSJ@mee_)6^ow^sR7a6$`C6F>G>4*B3+nyV}Xfti>~` zJb$FRyxK15Yjfz`MQa=bkx(;eOuXQ=#SC^;15M#9TV^_bhahFOPH=cdlGV?Llz2lpuW8`rW)e zY-4E8TA0h#0AiFMQ5=_oTh6Z2(E}ZA&iL|76s;>AZ~WZVtHq&gZg*S&Bis<4VfA-( z?{a7GFSSyHQ<%Kyn$*-u5XVK1o1lCCWWONJ%mKn6ekcadqoe^n#~H5qD>sl}TOo>a#vw zjYsC>NQV;RaBP7W)-~u3#}qqcZuCQrU9Lyih@?CQ)uAgPC@eQ@RI)C8RdTe*T^-j`QJP_H1ZswDeaMal?gKYuLp)Z{NN-9@7psr}WY+QUmX7 zxewKiWJRhzyElY*3qy9YeoOF&rqan8gf;#ukwRR=dLO0T1$Q%(=E?5k>Nck_UR8mKFP$O?W<@u`+l2 zNO7yLjgW7*G0@d?7pNO1sOuJ&xYr+*Y%O~j8fCNV)pHGaSF5x#Ir&$X9vPHW$iQ|F z-#hH_$IRCkDMcRES4-`7gljUR3NCRSt25h?x`C2RZ|Rhrjs1-6_UR3kwMOEJCiu?t z+C7W5o9B0TDb0Vj1IbP9K|$K2;~AP08JeKQt^{H))Z6F@>kG5IWiH&`gDv*44hRe^ zlLHugeA;$dak$ZTd!`J2VK@BiHrm12g9GMF3=8#)#@I2!F$J9-v8ow#8)FZLsdSlq zIJoH&MmRczbH`!FrYqX|F}{Llb+mGEXGWgmMaLKtaS|ZwU5MR#EU*h`*p6{}YFsVHlGAym>wdF{o7+MXT8sS(6_F}B1{<7owG@|0uPEo~~GUpE6U(!7h z_adYELidMKZ}@P540ut#&Xn}}LeWR|-jGKTk&ClBv5^9$OD6tm`B6W_@L%Au^=SXKS*;DD&@&Z9ww?3CAf`{MfMxIy0lT z?mHqUu9D4(8`1MY-D&uL9k&a*ZM5N zew96gSPs{`p5=)i&A9j*sB$i>DrSNK@-<=2e~-z7AS;a@$PW@%2itZ!!Man0E%qz2!_-Zk-@oU8cv6QIk#!r{=Ch zk7&gm%qN11w*{=p1CkQ^xd?0ji zPtKslMdyZMXnpZ(#!(K+rt#hT&;6@XB70f0A=iqHoRcR-Y~~d4i|*{#oJ&QV;{`j+ zTSUxC8NkRmb_aGn-}epPRRjYwB2HYUcr5%+Z=AaHMn8|ulu9Ii=nlxZ+erVi-g!F% zSfXzE_14h5d_sUgKf1a{o|?Sf3fqPO_JDq1Y2VtoF2U=xZ8J;d#TwRR< zs%`qUQGpSH6c z7R$*T2MdwvwbN`iD?fe)kVxyPUw}9i=$^MtoiZ7$UH2}FEqr#O{o+`eNX3lBKPIrh zD28spysIs1mXlZ)DQrTxQr3L_jPt+TC@)fg*(XOE8jG5Opm z&ice@OJFbGQ_O=yD94nWEboy0O~|>d9ftOfN3l^-j4h~+&fu9O^RbQbw(pTY^uy`t z8Dc4_%i`qjui)G2oayAD?@STV_(p}=sB+XAH-8mU3}<-QH72|TD=m7E!Ox**AogCU z{X`Qzjymo-P2y7>CXB1Cn5C468er|dhDBSRBj}?SJv2pXm2rf{rcPnpEZ8f^j4qMv z5HCoJcAfoz52^Y2j6%`Nkw@>kWtKdtGI>P_A~i&<@qOghfQuoB!)mQByRr2MT8Wk& zYL$9lTUWircO0F3=|1G_gtwC(a`rRS9?799l$`5345i6F;>6OJn%zuk_$mA@JQwzRlMd-_lAe`a6+G~Rp|KbFc8K9Z5t%H1|-G|tn zDDtTED3R51ZtY2^%%9Qj_pcZkxzfF2tuX1MB9+C2i7l@cqV+{C87!8;foEl=#q+hL-LN&CtB1713+AO`o+XSbpagEugf!#b#h08C%34 z&tP>XhqTiDx!VEm%#0T4tb*x=Q6={K{~_)jyDN{jb>CFQw(V4Gqhi~(lNsB#QE@7^ zZQHhOTPN%6z1rD(-FDi2vF~d41I#yL{Ab7LPk(+GdkyhD8i;-Un-RbI_)GH_pa{^( z&EqJ~0XaE=Pfv3CUvMHm6-?n*hms8A2nDeL$8_XRa#U@@GA-vy=4ZuFqm%Y@5w#o9 z5R(dXQH)xy{N9wx>{9FW8Knv9PKqs2=uo|6A;eB6uMrZ$;qqJJ;5K*Q@eSDKLp|`waqK0y>0$Ys-zQ=9+Xz1aAj(cqO)ekeCkGQi;cD}n@(2d}N^ z_riRkKmU~9DY&L6gsE`OkYd$a3#q(;ldIM(lamSiH-L0z0?aP3Ad#xVio|x{xM`=Q zyN9Uv{>ScY&-AroeTZF|1v42#?c8)qCCoz-n=1VfL-5_GD-QZ~uz&~RpPzdGJ?>O2 znf}Ha8|*X?zKl@5>_GF`ny8Pp<8@T2)H;XII)?k&I}AN^=Vw`!cXF!Fgm9jbW8+Bh z&n`kL`>slVkMK$aZxI9UXLKBo;L8P5_UcyzJN2zO9_yx+%v%Ug0OTosKW-(ZOmNjUSG!<&BoZspV&<@|}_trpfO4W&L6 zoo6wyHp~4>w@(Q7K+bS9!HK61EYaLcqG66*+KUc!0~(k()(4)tPlQXQ)W;XcUt`Oy)Z%ByfGTN0TvK=X_2|5)j^nkI7_widV)&)JNtM<%8cKi$O z;ripPSNr=q%fJ0}UH=VN`u~=!|5*-o{3i}eQDt!v3KV2OcHX~$A^;yA3nI+CU$2xz z$t|09?qZu$(!`Wd`d$8YThx=D_bo5drE!5-j+m^lZ6%Y-^peNna58h_im%fX)E1t~ zEz+P82!9E>*)N@U6jb2Qi~70wAg`C+VvX`w)pIf9I15}7>?*8fB3w2!W0P^bNF$nP z9E_C}MtHi0q+*0n{BU5;ydm;!;XDmqJq+8ok#1i)E>(c5s(p^|ytq>D-p6$42Wta- zBscS@M8fswN~4F_iw%;B_-)$kXeCpA(vECbbKmwtXr_L9WxZ!yr@6$P0yD7y*_jdq^8_ReG-IA*?;2z=}!OoHj7}AQuhyoSi_DUqlAH=!Gk16L0moRmSUUX{{~TI5d& z=(!bJ9@MjjAB?iOvnSNdyYnFSf-PPdxb=`@wDA%53A!g4(J#w6BYG9u+sSiDvk0CT!l=ZuCJEQmuVA`q*DMo8;gj!l5 zJxjOKKOE(#fGK^>_~<|#?kgU8Y_ZCf>{0pg4-nl4>1E8q%ANL)!Jrlj;Pn<{hdYXN z;E?a}Nb#$SQb;@s&w_qs05gu&FtircF$_J#x=)V1MaH>^s%1UYxOS;?XAFU2Wlyxz zCF3El6=c=E@fg3H&a%1U+nrJvtE$bckQ7RuJQUOJNi6CNG{DdpW&I7sS&3i=e!?ED z%>M61YUG-d6elDQ&?^oQkn{f!pZq`VIwCy25$a#kwIdr=06c0^2&nwHS))3ALTO(l zC?o;b6p*yv^f{maXB*Z(R?dIgT*L)}8XGNU8W&%SD^@L(iwh{tkmGX)TpD;w7e&4J zK4H4NPdOZHE)Q#xKm;zxUl^apQ&aEKn7TNSbv~D%>3$Xu@IlFiAg`|<8r?idd$fgqlk#)EO z1=ZaT(=~W8MaejrWP<7}-&O}b@>GjT(BU51sL zF)I@>YRi%sDz^?(lY-ZTRQ$bx8gq8on361U^6STzo-R=#+aS`8w_jm$ASUd?@y(`O z^Ab#IE85J2+*EZz2r?p1{y@XB?WkB#d|K+PV1NiU(&D(-v9F+55bRH3eVPInwX_2G zW4nk~FOAX|X?g__B3ik$_(yAei8S|76YG?O!*PjOmH7ERM5HD~%CKXSu7hG{E$9Lo zVl)c|1vF{OWBOdX35j%OPpj4ILXML|cBSaLH9^uKHdRWsk8|AL z56KXY6hxil*h(^U{!hCNX7`Y=(6}>mD36Vd-u2m$GPP+kVt`sYs7^^n%(-XTaPcY1 z_40|vtU>=nkd-F%jqh&0WL=oY6UJ~ON& zn_|w$_4K8!stzQR8S-r}gEsN?aD`EuWafFAV?Vr#PL)x-U$`YOBQ=xb^oWdcxmgx| z($9hD5JntNjke0oE~-MmUR!lbArL5Qz4Ll_sY^Xq-|mESsHZtQr&&GoS*bwC_s7*@ zm+tCU#^EDzB-#m7>2DHw)*orSKQ7?ijwWKKu!6L(-b=ntMc;J*Rvj3BCeu< ztDo`gxZWa>5F*M}gJ`Y(TUK4FmByO1lo*N( z(dbId2I=9F$BH$XC9uuP10n#d<`&!wsLqmIP1m@}+CXz5*xHd!O%yGa8*5M1o+l+w z{0=4WW#F)^JV>Uj=z-&~ZF{k{aQtmjP`=$2KIbY5^|@cJ>I1UZil}^jQ_AiBy2a0= z-UYk#tDq`U0F0vEg7#(_`OD;k1Hghp)DR390QqmJ(dG5aw+K4~oD4z&HU_5z3FrJ%*32-<++90(G~6l&DLH_*}V}7-U(#$s1O`{<7g7 zk(Nw8D~xf;Y_&Sl=m`s4>1(<#4~*n3QLfM82>2XoEnzju;QUfeNj<=ndZO!t`a~ zcj)NID$moO_3?t|IGT>%m~SV8cpSb6nTF>%Y2h@CR~%<487mum?8^-6Ox0>02|xBn z1mi^kYw#@yhnTpjRK1#~mI<2;p&837E=apsHa7{Zpde&5(}?+hZ%(b=6H0y(=B9tq z5^%98nFz=J^bUwqx0_9qtnV(hYOSL=5S+J4@g&~26#oRy`z^f~a0|A?GgghnYT4>{ zSxGxeR)c&{EXd>g^SPy#cywwY^PP3r1`fTTR`!7cWRuiQvqUy1XU!(}^HKc6A*Hea!Vk$c)9?SX5Iq{@AbzbC~Yq?0`V|(B%u$8#5Pj9c0V;nfDK4czp|(tN--Y4 z9Ra(4{O<_}2|BTsiup>SF~Zdy#5H+>GLz# z{jdNEG#9;^X5@oi1OQTq`6r@zibaGAOx_T|BS+~|?5~!48Ux&g9y{vs0l!FF{55JK zxgc85q_qTX_=sx!Oa)g&xNV-<7+S}*USaf!$-Ei|{&*cvFc!bRU%~R!Si+cZnD=y9 z$NO?e)_H1-;RXBa>gxkk5|e*U>3 z2pj}IW?-*6G%J!#5$4|Qlyo#?IcH>(PU2EH2aXF|UHMwUz;>QsG?x*CJ%}>|l zNcYbx#t~J9WB4hg%60kmrp$J<>=Sd}71<<{(a&fHbvCfE|HQLQcA3PR6gOzRKZ0n+ zSdxxY=8>UQH`E(F;YhC=BFn#@4I!^8T4ng%C7u%$d2YI~o!qAWy39^&aRVsj9_Ojg zp`**_zW+`hUk3FOk(L*hL%b|S8d$S@MCU#d z0a|dluS~=l=+NP3M?4@{c6Y=>NcLB8?44^tEZ#XSbKz>a)6JKJ?OM~6S z-GG$_u%O3z=%*QK<_B|nM3?nM1OhYbkl_Bk*-Zh#DwN9K{`Jr+z$tm`P$+6MmUv96 z21&yk-9sHQK#ex{9BUQw?Ye4&=XMRkPxvKT@L}VNt#C_$*W&_VkDqr1FMs_nPmXPI z7*vkmJ?YrDTdLi^p_)^&v6205L#@pn9L){?_jBXFHl~WwvOgIRytI3Sg@l#fIgfjQ z-K#CyF(T3PAR#RrA)jjJ3tAn;o1oswWV58WpZ|gGQs3V8a}`+2x8c0ol)8)e_U`Zj zV(%3}Q&gKI3Nl6)MlXYzE0Un{7^GKTtzgQZ%quifE2gBW%3g&vx5!0QD3puxL|hD# zAMr|*T1gJaWVMucoU19VFerPc(*IZ#p8As*#w=Kw+rWI36KW{F@65vZ!$!<&>cgWi z3Psx7HP5C%Hm_xx=zNIsP@bGVcaDggwbn8*iR@5ERo-C=t016F-udXyi7~n*%)@NI zDPA&iQ^w|xfG6+?%vzm$BTu&yr0k`knMeHox?#d7bM!Nqm@hM`J{87{5CQOZq+mvb z9MhmAK8z-0m!KV!UY;81FTx-rj`|S^`ew(yz)1RzC$J+Yxyk9y`bK|6rhZ#0MB zykTe}yT}5jBqn=W{MC0S$m=~1vHyEP&+BS z@%~hC-&KnN+WO>V6-&^D2<%1!<#~`um5PSuhQ-CpHv`qSs!GqJcD7W~h*T0_Yo9In z=Bv)P?>A1FOJ*ez z$?^pWrTK&QEhUmsthTxxA zpd0KlF#PKz;&tr+s(x1}@k<5qMoFaP$p(lQF~Sy#(?L9oq@^*EFo_TY1v=U)$d^^J z`_;_)K5;IV)q{K&&J+9ZwScJ2i+n2PR)xGL_7h6-i^XFL@(xwr&Z#Jxdv7++`yb>N zGsgh{kYhoBRiP#GYqf|+<~<@?+DRUOS)BZvLqvYzFgwKj+Ki3ZsuFJ|ah zrAy&0nSsT+SUUE_<}wdY03;qsGw!oVUMj|Wu14YBW12s!v#p+>v3>7ZjhtNsHK$xs z^y_e{iE*-s+ZTysJIo#lce;oV2nOvJwz0hWCtS`P>qK2T%n5OxAJ(+%YVZ=U&?WSv z%mx4`6KkDMV|Ol5NJN=AOJ@XWPjf@G?;*TqqSBA$*#P-NLd`K_zCPlK2ar*n=Y!Vw z`Ep<3*BpnrMaSkNJj5-gEbcOS-vS|)sH~;qGms84BnAUzeIIT>Kjfauv!Fh4^X4)l zG->2%=8rrU#BdP^WHzDi)maK4XZCH`CD%yKW zTSMhgV)4rL&eJ2+*87?Bz7CanD4BkEomB=RhJrqZe@#SkD!G|94sGZJQMl;Z_ z@~|ZP4CQO5!VCW+s+n&1xoG{KfnJwLf<`xmvygwoJLSSjx64r;(BF(CN6(b@af#eLe^0JsO6y52;$PVas=TGYgKjEM5cZsUXu1GguzomE)^F?+!-JmD97fCa|5_c4ITes zLjPDXL%^g=L)aUV29~_k#*jp$^omD-UY|S|-MBH<^)SEJc^$0HY)5^gL!J&Le>&%Xo zFxka;jDJdmM4ZHKc35k}9dLQD?^1GwV0e5Px63$|=8p0xnl?tWc5`Yc}V|USERYGa0+JbGSUQOm;@t_ zs!ikxG^HBVI-7ce_>qM0I%>o5`&AfqLOQm z>;(+2h5X4rr$dT={qmI1eN{(;wqM0q(%cSTBpI5L@Bo{r(vL_g$4flhFp&=qtK;ts z8}n;fL7xpyD5&a^JWWm4u3bt00BVLc5Ry%EdUoPch^ zJ#|j$T**Ca=HRp%uJ%1HE_|+_D0%cTdw2-*Yo*Lq9=^prai+Hv-;OvrYyl${EcR!p z3|~RE`MpD?w>X{oJyoW+bl1#r6X!>?chz2qtISZHYjid5R}P~g+GtXrZVdv~-Ordk z9O9btFiAFyn?Q{2jP}R&ndb6|P!LzCJFHdY#e*O%#%{^*`AL9p+g9wKYtz&dg?zcZ zKTfZ}AM&{_ig|gObjF38A7P)PicT){hF)_gHuthK7e3;*Hqa=dcasR3@qsd&9RfwR zH>^Gxgu1cl<>q@6p|ypNZC6S|$ll7#y@}(?y}#t*HN{KdL=58^ZPkiYPhd}m(?KTE zKGnM|Z!sj1Rp1tq(l+@voc!D}{wSeIF=@@ACPs}V@t6jkA=hJ;TSo*Jh!^zaS&Ik> zEb|wSXx3Mh{M0rd9a$y3$)0wBmCa=GQx*09wG0r4g0%jMi-OUwJhK4#kWwWk#T;Pr zqf{7Zy)B+;#mXBzwaED9jX+?Plqu$it4dEV2$i^$?r)0t%rBTLV4gZ^Clxa}vV?W^ zVc{^Ry^oi#t-FdulB3dy^22T0F9yOA8CEud@>Le>fD$^;$RbN(l8pdziPr>)2;uG$q18sNWdu6l#qNko0hNoTPVroV@ei#Q z`HGIK6^jSd={nr50@6mDe^6gmkY?t=w5^rWnH$tqc^ibUbtp!J{AK;XQ zm$Pg(ydo0R^)HteR8Xgtnol2mLX$s=YT6bRBI|)q8#RD+Oj<_8j zMue1jq&?Xqf_X_td(Lb1ZP<{Kj|}ModAt_E(6J44xx_(aTbsXIoVuzDpEqBl+ zrNP__!b&ENh-so;bq;~LMqjM>tPbPtyw`Q0`A4OT^2~UnI4%0>-F)fANnS~(vEK~x zha;ax>R~lYVU-YXD+8x1Re81h+8gZKBm7xhtNcjVp(AY#NkVIMNY`vBpAY6)mw)vD3-h)&&|r zgb2?jB4;+@%8>3+9w662uR4ZCvskA?)NVZj_?w$gEl$~3bqpwTiWM?3aVpIsK>8QV zDJ3XIXv@OtMZcB(G4}|(Gw6#sxmSim9Pp#`a^z|(yX3+wjGT?aB6>U9&btX|q%=I- zIz0Zc(sp|Eouc~g85**QB@caZL9eePXck$Xo_Ld~#*w8VPAt8gh-jRKb4)V!)|oKI zFe?g@BHnZEvQmzxu?JfLN}X^~Uu}b?ANA08S4!}3llgBg4bF_~U!&~=s1jJBz7K;k zDuNUER!`|60?|OCt?jS2^=jnwA>i1)2ad}0G0Ywt(5vyhLm4zjDNnFv;C;>OZ0vNI zPQb-&zz+GqE?+i|1WwLZ46EDf2Cev6`=d)7cddt|dN-<_H z%)(ZZRm%x(ILMLOMx42z;-8v#l0VS`k;siGBYK8Gc;xhy6Hc4YF+p{}6@y#uFE{Vv zVQY*oMtO01Vy)ZoM|^1sc-nRf?(Z!Mcl~AfqhCgzj6cI({68kY+|Nre1g0VhAulxW{k_h~pNLXIo$=eEQWuX7`fI%Sr7nr8^9A@XRcw>^Iw#sE zG8+=>zk#uh*o-!KQY~5)flxEVqo4XHjH?Du%OA!?8;TqHbiGOGcntjC+-xdKa&!gM(?o?gD~Y zj?5#$c2{Fg6mywVr*2t4My8!Jw?oNvv6Z~84m)qYT-xT&yQrLSgw^Q9_%hR~gN9%C zWwTii_$I4~7)+aDNU8BjroG>D%iStY^6AyhIw~fBUq&!d&<{K}IN98H0r540m0fWY zn8nHMQn@8+e1Dw4yk@iRgk$(|G?7@dVu3{kwn?ZTAvI;zF=Zx~eC;>W2&r*$iMC;I zdN&9>f3UjlFA)OqaoP2I;tdGCJKjCfa*v-7zoP~FXJ#8paOqQJ-VmG@FyRO0)t~dD ztPdSP-Qssd1_aDORklFTQV)t{gv_YjkS27s3c0mhwVrEiQp7{?gh0Q!@W9(7gMPBr> z>&BfSMn0{y+J;Z58 z%99_myk=;p&@II1{jjSDGO2LD@)8C;;S|>T(i%~<-Ao;IF_0%mQ>DMZ^EA#>Q`kva z@wf5{c{eW1`?&}{glzrd=Q2f9c zrG#n+#Z@y$_#g0EQhmzUbLQ zFLWw`)RCdvVR+2L_>mDsz}nkQ%e-fz6&_$kD(kPRA{L8ntrY2u6@tr*$YqY@EKj;A z{?MG^>B?r^hguJ;I{RjadNBZKg;t&8aizl@1ef~IgePBm__is>f@&Tl;hw5zkTxZH z6sF70{Gi$!p7*joZq+?h|0CZQSFmE7^?-T0CD_0;pWM(mL+;w{JOzd<$Bz_Sa--E+ z1Dqbpo}l32(aOQJVa4L&N*jAPX=IsgtfRT#7nBu2Ey%UN$oxj!yllD$Z)55hh1;Bu ze5GgqnU%=YI-1m^;l(loUQRbl?m_Nv!d44Yi5#q6Gjb&M6YGd-ICwEb!0gHD3_FJh zS)W|sS8T`g({D@J9AkEq2s_@2KSt*t;)A>xBg=Ip3CTad+U8LrVdUVu3tingOJuC3 zsF^#kEtQ(_bywn5it`ipUJ-RumoA;?{mg<)+*+}zWs98tE@;xvl@)MjI)nTXN4m4v z?cFt(Eeb1&h$wQf=gk;zYp(=UxtNwL9V~Fh728VgU{$4mBrlC{*x94CBu>rs6Bp{x zTrFli0+#9)fbmVP9uXe__yZv4eW}mvrFJxLO=r#b?(5w?I^7eFlz^Ov=BVE0%+AoZ z6Jt-mqAQR2pX*htmQp78lmZyD|^|j-mazBif(c*R6NI=!QW_Zf-5NYU$Jk9AA@B8$^rNelLHrr zJLDM-5q&3*5gC%N!fQpXAGsIq?@I4PWXq4crWtj6QfnSJ4wD=h2ZVE~X!MKeE2^LV zA6BEPY4ce!@`k#p|<}-A+XzKTNLHkm#=&C3l5i!1$+}s21 z(Yt-&&`&CnkI}rrb4==9LTYY|&ykIx(KpfJNSTxz3CE&TgYKeE`q@)lj}W|zVKMjv z4N&Rucwdh_d#Y;DZHru^XK1lY;0R~=Lmpe z3KYLEdN@NLaJX}HM>eP&+V%dJbof2R%;$R5qtWb=={7^~jeNCXln!UO8eR{Z(Nf-i zCN|e`T<+bV@~(mM7M;Zv2eqe3Q`lk?+~R?%YPhZ*;b$7!p{r`_t|Mo&!^$0#Y zkayGQzOPY~&%uh%Nt>^2zOVh~-7RM9s%iUn391{cia~6Y{&bWfI}7q@fI@u;)Un3w zF<#c>K)iRP-MR^k!#m3$BTK-`XR_fZpCOY2@8HZUJbU;Hj{}{_rtCI+q&^6-Yl
`8mCin6roo^tyjtGwh@@7ef7m=g|7hacMtmv+C-5qpBu9H5+F z7cHnBTvD9DWTSqKRI2YBex;d@%(>RZ@MxVP0+^$fLyn&fd^ROO?Saa+E6joUd}g>L z?uy>GU;n@xT(>?K^PQbkHDipv063t6j_QCjq#w6PHF&?r6)Oq}E8v6~&4Ha$rV0jq zmI9AIrG;qGn$ZDo5q6-g?kC`haW1~buA6o9#3;isB{b;naG%Jo6EyVVhBdXr#wYQ| zRhe55zE@!l6Q=#A3fMbOXyt@u+@6T{IQ z20DRB`Z@8~RR-2&4*d^7$EBYFxsg|^JJtjKOkwA*<4_-Qnftf+wCd`D+!s4TshAQ6 zdw%SmEc(hzFW~L~VQt!+-B#Xq31*}lDesJS~{&9%blEYjTAV5GH@c;9n z-v9Lw|9Ptad#Lv>+XEe{XR6r3C|}Y9E5>a!=I4T%l4Zg{zS?GpmL+OfSP=rmfnX95 z&UMryy(VlM8`sy$x<}9O$KW4y?4q*{@7p(ZK8ZtI3D;sjSb9e}j4s!?o?LX9Tui>6 z@0PZJv<6&|0KbmA#jrotRcsM|$wZAd=Mh9bp{@^L9C;G#34-pW#M;Se) zjW_P3t+mYTys9dFI(~g{SsG8>dyP3k5bq{q0$2)c0B4rOS*R#X#+Q-OUwNeY|yg%9mCP{&xD3uAT9?UPmq{7e}u{%PBwvMr6)Sbk>=#fH&_?!Ppjyb>0Z z1a8_Ke9jVUkVUMCK-PbZu4h>&Y#hu#(uz7oKZmxJf(u^R(aQ$Z=ZN85 zES4)OjNZzjEN2HAn#Tyh|$>-p;_hkJSAMQ7p7xpPuiIv*YBb8--kZ_m}5Jx03Ze!L3K3vd%6#NL(k< z%#4;Yv>{2m9fK4ZZ#h6r>t>8yu<#YoiF7l35}sSK^Vsun&n;cZulfg9dU^Y|p2c9r zvI-K6_wQ0{sY}+1sf^(B7Zp#vK4+M)6fi}@={#InlMo!~2VOkdb}*IQwl(^^hvm&< zQ^L(?DjVNP_az;E3#v~kA!*I&51ucNP)sn~s~T|by(~P$HJ>|WXdJ+uVfF*MfA777 zzYb04c?=k)gBkm;dY}mDN?lm;K2tqln%bZ3giXY<`*Ig*hO#KlDY*?Q#PplrpMzhb|c#{SgKil5Id!*1%a+y9boCv75mVDc}htM?GYS#)@Lq)L<*j z3e+Jm={>}((0?X&JRTAFs@)K;3pC^&d^sM_3jRP^AlN8|S0d98auz>kDDSOzN4d+0 ziVr6lj%1mJo@Y;Cd0Juf1{0RTApOPh!T|wU|GN^9h!fyH#1Q|FxcQ~{kGN?i z&}oZ@FgIBK= z+%+#*LW)7Ew1Gz7H`3M97v8NOhYwJ5K@7_=?r`Uf>JM$%|ojR2CuT+aSqKS>5;T<0ZF`tkJ2*k7!w8Cw>G2Z zTFRp&k8;~P@MetQsYk z_jsakGU)^@)%Ahu2ty0q8$HMh->)j(s?iK^BQuSvVa^oD|?Us#3>q=z|0abYEZx)lgcj0_BqQ{Vdg z(k7ZVJ&7j0@?eSW){zwAF(F~cHEL)n{18si-e`%C0DoadgHe-+Aa6D4ke7o(rcBdHvBRFZdl^0cOU zy4?I~>d@fL+hg*SX$zi{{i%EWjP!&Q%Xv%h)E@Z*H-Nn=&-Vc&+=}*uJw%l~+s4jh zQD2|wM|#^Rr%tcB-!5b(jh~0;Zzw30i6$#U#;cb~82IDdTZ=|MQ9&c1n%S%h0a3>k zHsjL~so&$JRhF}b+;*p3Zo4wx0cbo70#&pn8U9TcF9qbmfhB<yp$GzfR#+W0cQFMWSw z!e07RT|rvEjvfab+33$y;P^AR=kFKc>w+5j|ecQ30s}?*t|2 z?4v*7Je#KXmm~q*>^_+8yV_@vu#e*DpY0-AM7JThp>hAov-10hjXk|{zKG>o3;30` zb#{KPA>tCedAa_HId)Z;Zp~vvX0Q`1%Vs-BJ7X2n;Lw$pKzte=0eQ>tH@A?+yKmX9 zs8m?Ct>k;8@{J_InI2OXy~-ktff&dt24j6IRsIkHF1r^mD3Kwz)+n>n&AhAoJtEN? z@{A*%&pCH=nNS%-y`?MF-#d5uJL|}JDP%dmhoX^NGFdUw6GZ@+ZXAuMLQVqjs!6rq zWY>@X9;D95oEHMW6sU`;>6ku@VbANz#cin1 zoT<_Mkk8EOfE`SgASWDzZ}D(`;y&`40(`nZ?!yBu*>Q#7@M0WJHQVfRZH6~c?(&*-Rh$eo#(k>M+pgxV&M zfph7Ui7t;%778{I8r@XL>2Y-arPHI6YZ2yW%sZaSn97QN78PRI6%3SCIO3$u*!mPs z90-GACX2uf-mj=+w&#=e!sVNm7K0@eBpTlVswiSzHL@eDNm&Pyq2*+YK_T5i+>tw2jAPuyC?NtKvH`rDhXo`^ zfJaTRK&cI~*y;y-RS^BehZjE2Uuh#8F5QywVDpY(bFhc;CdsX;_1PS~Yyk>_!^*i{ z7h^2O*t0>e^l5=d~T6=tOr^3@!cak65kft2unM-}G^X;lJ&$-78G`N^(Q_eIQIMVDz{XnG+S9*+&3mJE?w?F5<|#IhWk(+{ZLOYS9Ta{RT@PU8lKSqH_ndzc+Sk0V!Al zqm3lhDp?bE)B}dJy3epB?}Wj4*VI8w?-Pvh$LLb@7aD2C9l=W#% zUJ@RWtgOFcUF54v>U|Wn`r#Z*DgB!4Q(acK_CES?1)GCG{iA2DAs;fN^KGs%PHLw} zg)cYW95dp=jh--9P1c=y3dBc)k&I?4K%s24K>KAXy?jkp>0)+r#U)W$2B+ zxTS7g2YwF9^8A+#!+$h>8t)L6O;|ucgStRK8vmx^~KQZZ-Qb#LWqZN2UUn9MdEQY(R6n>k?yg{d$%qs>xm46CYhNk z7Z!oi3@m9(t=R2zWs^y(j|6?1^#qMmX-WMJDDc zD_*O{pd|`Ba8<(|x!a->qYm93EL27m+o)@TKiggr%5r43$~JZTKy=gU4QudQB(4jU zE#qb4jWcL#>N6M0a=6Q=>z|*z)JK!1xN?5kWBHdyFE^l=UB$lGpufW5IFR(YwYoJjDj9D5{b1RczrliT6}f5k0F|!r6O;jq=Q%lot)}Ze9=AgX6 zv-OqTH3m&lm!sZ{-zy`x5^gv^8WyjX{1#=EmfJS5krbQb9v8GwAx&OjKv-t|E>bytZ1Vyp zv?*qmn$DSZy7Xq7Dtkb7?g~MaIe7|p<=gQ)W?du=t6#!}F~8TyMyIUc=wcJ&dH{Pz z)RMAukhaux=sRqMRd%vw>CbDe5E3q#y11gWh6E4ufl^ofRq4ORIX^P$wleeSXh}aq#M{eMR8E1Sx9OsN;Cbi zGSia1-#^yQWn?t4F|Sx%pKUB%H>)%^WMoYC_}ILL3akJXAG0**<Y3DscCmv6lys3R+M zb#PdLwOdRWiAn#Q1ZtYMJHhj%(2}(kg!*+}Z^d3X)4#Wr(KR1|-vxu)rK#_Az?_v!8kvckl;E zi_h!YIivjmHb@x)3XQ~qYO8nGT0ue=m=FXN>5Q>`EP*`NkZSwf^&;1XpqJq36cc^| zmBPX#CnAaWD$D#H&~PbUVhdW#Ezcr;OmaGXBFaJC?uHU^G7EHnZ5>$<(~2&>>WPVp zux0JdWcgzR8Ck9%h-3nC55?CFUK`W8L*%|3fDK)*@Cc((31xw zqV(xJi{TMEEHx7(~ltab(7Ft#@?rRxPTd8Wok$6_`3m!~iYomSdaB(2sJf zVO1at9G;oR$YK5IK+wSSA=raAevgafOTHmD3f|Gn*9avEgLp!ZlnNv>qadz{I+pE@ z+J3p$r3um9`9Y*9T#N_brm-7qOKAepS-C}FB4t;EwT%oFcu!uco|qiZ>CyI%lVX7D z^5NQHp#0PET+IEoH@I)&oA8_;#S*o4_xPYNF1hc@^s)M=0o-BSRs^o^BoSft^vcO| zsb_j3l1CU0XdJ}r^SQUrB7M51KN5yTE=dAG%ZY#BMGc}TIYNxxe;=Bk}6iWc;?_i1gc;qm-`ynlruo`yXG%k4Bht9 zqD7|;nzY3t#)hmD3M7rQr3PrmVEDzP_;eg|JR1UC<2=!bE2EFKSq`BUXt0K<+CuF~o5j=9}++41k2#K0fn-{M=-?xk@4w(~h zO757;iE)D2k+6p;ihqyP(W0%)YnOop0-)w=9m-f1q zuGp4ty{H#`N0RYVYXJQQow75KuIyRTQ+Po2hDGAf>`uJWJ8Ea;Zq*H&5@TUYtI7`g zHPYT^1(Z$i_fKR7*si5fePVoKZ(=AvA-CdhrYJu_zbN;%l-{{ID|Y#=eW9v)Eg3%* z2VAbTQMd9C-_bki_PUhcfxhx~`QPORVy+DXTS9)}8AB>Tl8Pr$$15jUt&b9*Nz@vt z7D)91;{)k)2jj*2PmRS31|4m`C3eYjV+yBWIn^om{Ppnls*oTtBFtcw0i5+PSp=0P z(i{*_%kTgtFd_bitO)!QzhVOcK-=up$*l`DiyrU{uJP6J$z6+m}A|9N?%^z=qtB@vUmV{9MqZI4zkfGmKYKrV$uhF zwa82pO_GU?E^2LHLx74HV3YE+6JW7$GKADX+=;BWcYj&liR` zBWq7j!BvXlGjMB6<*i21A8^fNNRL}1mozR_qNOphBEL0+EGQ%7eZ78td%5FdQ$8Uv z$2`eCj@<}TMV@(68&cW3LIKcJTyiT|-bTxaEIWh9;wg;`$hRtJRPM@u-zi@Rx?-YB zuOOE)Cn)^zER-^5Qaqe_0j08d8G?!o^NUC^hAvWt#KNqFa%tRRu`4%Pe)CYEC?R#_ zT)gw4IPU-A?Hz+8fwFbc>Oz;Y0993)MVR*@36-}V96WqG7i6$>5 zHZqLRK1vKJwI|wwH~1@jCKtS)@Fp1|&k^uP9%6*_c8bOVhhvfiBX}d;tplNcFXoQ? z4DBZQw;1WEvc99N*Z2@iQTU*|&(~Jmh_R{_{?7h&Aa9LcfjuIjMpMb9;^GOHglkP% z>pYa<_K3G`T*qeK&&&5(ggMeXC*N5PN?^K!wUxSLZCJl3JeRJpW~JY2J^?~oIL0}0 z$8tI#kQ+aniyVr+ZZnDNLfzb7zwTKs*_ykuj?U|)Y`|#l455@%=>xvx13@+vF;=jYX6)66cQAAiiEaIfk zoV7UJK_Ly!6-=tA!46igr)Q*z(t4q9Wh@s+!a)`v(_T~&wq+}-=ybJ()J&-*l5su| z5}DoOEY_kziH#tl;vEGpl4Dy-Xat5m0hXFr0%NoprMh8MP>PxB3h1m)G?V)XgVzc} z++Q-+FX+a)JuT8@9Yt)*nTKrFD{bvcOig_Xw@;x^lQ=^h~)pTuu9f2pt%SZ?clGQ3L68Orn;+!t|B^!vM@R{siTyv_F2{f>E>21A5}+ zn|-nxoSDkBoWpuDrQWpYA7VshA$x{3Bi^y^8gBR7S6XCJR>bH;^Lw7d!hE^ej0}6mop3bmO^3aUzY8~J8KtSh)bsbY>Tx@8{K1qhng@wllzM9H2 z{I!>8wR~(qu6djbH_wa1wh{5%&Ngr|=*s7h6Sl+gYI3xDm^>Mfj=;o%$!4!{b8M82 zpb3M`72ihl{8lLs@fR$-kMh5@R|N*L;+9JLN`&6Y6vV8dz5QNZ=RM3Ba@JeutivsT z_PU)%6R-@f(DC^4bKc5@bG!soFGuD+g_Hyxe{-JMLAV>$cQoknF||CNpqb-l&z#<> zKUd6$HE2LT{_UUb2+#(0s9I~?l)H$gsC5!U1vQpg^YF3d#gx5TDBaq`a{M}K?!S{uzYwM*#AUR(6Zv(GIFfHDonB0EH|eAly!zN^#S z=ZlDK?}Q8XxHSs*-hwuI?OchM*+=a)Zv8WGIj%4M-X*1x&*`(J?#3Vk*m<}uxlX(b zjS-_H#sM&3Cki_@gwP#3i;foL8iMR@d@^~e=1DLJo0T9>0l1UG{@+V80!5mkw^|og}2Nb8lz2tGp6dh{4V@uv}^ElqM^6mm>Kzcct%9m zphQfl{=^-7jqIg7?^MxZ|3iFo#tnM}M&p+)aQaaGoSAi{7 zz!?%w)WlAX8<3a0oek_4#P_tY-6gr5lE49{9kUy5gV*Zb$OcdeI&|V}qqss*@$sfU zTqSP|;4(5(g+*;;?LOpd6{mmvVnI!QvEz+u;w&Axu7{2U=tE7+s5X|cw{KeCHb<&H z&b?PLNG8}+XTZ`8&_U|`96Lo>Yn*oD+7Xa9S&?=0LD6MedW*?ptnP|alY6B{2~a*F zhm0solq(k4hZQmG6pl(oKHVQ8@iNd1VcC9-lUQeH{Mie)HY>~c0lj1X0vf(ANbVmg z?netKvX_8K)xM$HMQVNIY$~k{fO=th2asoo0RN?FqGlcu^m@VR@={HUFy`+v5bP2_ zK>DhR>Lx0SudM)mlb*$wuA%dWsdcBr_TgHwhj(F&0PkCsXM|wVRs~MufN0QWwVZS{ zNn*DNq8}mI2Ctup@yfa@ptnOficH_&AYH=&j66%X$~%mLTRG*SV!OHvc`jJFqY$g+BLGEHN3}+aAESU@kUhV5GX6LqQs@ANJq3Zw}%b|yex<)+0{>a#$baFhl&DA`pI zi7{t~ap(0uTIg=!Q&4j^&esUccHtz$l=#T#AL!Vg&$!n(Or z3EY5$fbgcAK%K-CqSjK>jES`R2=XWW#{x`$1_8SaP;5Yj3B(eVH!Fx9&3*$erk=4Z zfWb_Mk{R8|A#&np{-Z)#yE}4_yq)c)Ek9dYhh>z;y@EMr;JnPv21NXn5r4~|fEc+2 zOWwNZ-WEbgjC{QV%t;FS$t3v|dB-%m70LucBN<7XHVLZTFa(1&W-!w}nOGqrRjC2H zl-}V*nuU=4G`+QL%T5FR zT5$~0n^k|hs= zv5Dct+eSH{V(iPex^X-8cnN(FW7kiIyH?NG*-ioS)?bCi z)98*d_W(1Q$V{{Fz`{v+mTxlEPhmlGs$`;H=0v-%B->FwSIjcd323NXWM6MbJyvJi z)2;yAR|;g=Z3c{}yY1F3VL9YI!f{W((s%j6Kv&8cGNra|mB0aR2WxE5M2K!gp0XrC8pgD(sY((safxWVWzlix&B+YO! zH|359(y>xNJqC5ppxTAUWPqD!{gpPEOSMrTCc0i>GPi}JS(XTXx=zQa`6;amZE8s% zErxN8fNTH`Zn997HuP0ILx@IJRKD?(at_)Je2&4*S*72{2 zMpN^`6!8`N_F}2!CgcSmGhlcn<6{P5%cjQ>PZwYb=Km? z%P{=PcZWyxyf8hbnR7{PO;G^qXb*I3M?Wjek z8*%IeR@+PdmND(7yR&%SU|#fDIRMoVg`MBBditSlg~9L1#{osVGg0QuW8|Ikg#}GEQ;Wc$S;=Fr1)TLjh^_37h|HW1C)d4$Eynw z9^E#8@=En&mR5I0qD?pbx{@r{BnM^DfY$sumyVO``^7p!|(RJ%W=6j7!`t7&;pIVp6xj37AGfhqZ zn{4{eb(xx$(mX#pkKTHtrldjzzQ|AqfAXk^@EJQLQ2`T*sDQVV>AEce=A3LoKKF~z zJKAf00X$syYXNqT^*nMLd*K3^_t=%`eYR6~LuS|e`{N~-zr!T41M+|lx61tpzAVQCoI>0Ly0S8l;bkMZIMB;=3JteEA2BoNrID)i?L!mS! zxQ*I+!0L_8=&F1dAq85+ON36cB0rU~*;Yy+rCE2w-Xwh1*#OdMfC0NpQ>#wICV4_a ztGfwSZ7rs|)u63njztpM#g;EM`Pf%2$D|Uf!g^dpt<_ORlh(l1{I@oX0hb~?p;<)= z6+0Q%wTVan>TQnwSMF%=zOQEN)}r+(yXYbzR9P!Z20V(I8*Ji~w)aipWPVgc-xfe< zg``0Kwu->!a0YvVL#dMe@2+b$KC#J!qI64aqAPaY5JCSyP>1vkrLJ#q2ppEEGAx^y zChaMAgvr2R2L0EcGM_i0v}0eF4`Zzi_sW3PP)B`B%f{g z5?b2zfkm?qrnBtax~-y_CaE!gzc^X~O&u&^y#sp)r$Q|Jn|^>adY5er#G@_6!rRY) zeVjnYI{E_Cq72jgb7XNOh_be2_7vQ+DUrR1-D~z(sMAn?ifAlayJr^fEg}pMyFNop z(Kt5j_Cph@WVYs2iQ1Llp$J(>d2xD&x@5;8`@RiZG|Va8!cl}}()?qM)DW-5gm3W2 zK*WFdEy7`Me)!bFdy zbMdO~1>!e4oY8eOsKy{P8rsHA;)@xY^#LiBHHY>6g^dZ0L#g$HMc}AoHf~;)&?>~a z5%h~Hi+GTwgg;b>?cXviVLyKUYY}UfY$+Ik0|7mv0s(!my@Bi;&FBnGY)$EmOdaXI zc`L>yj&z0|&L&27#wK(Iwg%Q7P8LpdcJ^kD2KMIP-^`9CZjKh;Me9W8>}X)?WNPPV z^N&A*2FB8McJ}g)CeF?lrWPjuG)C`I*RfYt!}-d-Ftu}izB-yH+z2enlNU;;r@%i8 zgpl}!iP3qp(uXL6Lcjjw{FzQ^G)ynebCghyx(XO@*Zf=ZX1_u1QaU zC~Lt^gE&2SD{b;8N!y(@=GRM1VlvAqJ;&e!pJ|tn+$<-pAa_G$tvNdr4+q6eZgBQ+Mb+>pJI+R&OciMc&KQ9v&mvaeSVW8@c;Q z@NFsA>mKWlZcxH#Y7iH8Jwl~HhgX*a-CXI9WI9xA7n$8G2FdT) zi*_rOii12=$-OL$EZy5+BBD{K{qVPyoa^_23j#d!ZwfuerDa}S8CcA{6u(x2Ig;y+ z0+2As*qU0kbNy6`l|9N>m438BZ@WVqDoRQ~Ny$69zWZzBm>D~-&?ZT@Y3|&0IWAWF zA6ymx@KY~KXt_N<3vcEq1tMeG;L;Vz?pqZ0ge(w?D0+9_qDK8-SWc&o8dGjU&N7hN zTV5flpRCC0jXOmFgQ}R-w*w5AF6qq`E>j#@Z@ae26jxa858SQXkW(bUA0&NrQ3=y! zR+~{sbwc$meui+PYb}IPwCtjmxH)_(ypB$*f$8I?0l^$V7N|)S6GEOxU8)I?q#8ds z0L~*_xA5w?d&D?Iv5)1)IJ-^+1M;{WV_k|bG;>C>%gX5=Xkuvp42%q0r=tQJ<|c^x zhc%9kLpIX(pp=Y5v+XBNXkZu*qj#CDiVvW%be8Ut!0HkH24qXHSv^vLH*YyJ*~M#~ zxTE7Ctu(A16zn5*R_;%@AKC_gj5Ou$Q?b|VSGa5RzV>8!;neH}#w_2k;OLF8Ia?37 z;%p}wZTE`=bn_DqDw5FAB`ppe%$lmDSX6 zB*sJDprOXp$Us}^IFpKQ8M;#*J~!4_Gv0%{vqX4V%}xn+JI}#CW8hVAPWeD2=n7EO?Ixgk1ROk8OU$0tz=k*VyG>D9y?XBvcjo=x=?N|00pfVVFOs@`R=<827Rs#7=z*<$1Fn zy8BVDc1E7K^FAK-cu}bFPurnMUcRzdw={`5VSdn?WNY7u&Ub~Ym_VS2SnK~vU5mh=H|&7LMdIA@1y z^iP{jeDBE+_weMuSS>|s2%U2q3aozak}ycHZ2EID*KZdN@~E#e(#bw4o)q_Tn!6)w zwKa$?DOr;YYD@?J)tToAS_9EpMraGxWY}a09i1U!nknW$Q&g9+)PY8^AzAV<2jtyw zQofPdlIhjk4MGeAeMz3LPl*m`_7_{lbqB+m@0KTcpZ(s}7?xDUW3KLB%?4-BL zQ+q+c4etE-+3r~9V$s2ftd=!e3Vcn^aQVjac82=CL%!Xh!R*wm#P;k$zT*hJfWt-5!$q26BU&*K zDiYTkL*Pt)JSIIsDt_`jJ;@siih2aFTs+262|jwFNNEjm?mfn{WC{m{Z8labnGgD8 zVXp%G5PkUI=M3J{Up9@O(YJ>1;byL!2C??6lU%h21*V71r@*iYMYCA5kE@Ah$}Ul1 zj6fmJI&;==Nn8|#xkc#~_Q(FtE6=(oVXDc;{%Q)e&w@ype~Yv3j0pyuz*^7DS_sC>!v46zL z(0%K{O#XwfyO4pcqKS>2tBJgwg{`yow?0hJ+Rn)8ztDPgbe-(CS-!BDP*^|&AO_wa zkc@z%Ls%LYRx2F2bll|7x}o89ocoR`!s{O^I0%a(F3oUX?D<;{j|*s-omL*1oiHoC zdS5iP4tmu}(g|-@`iM41%l} zq8B6$pDLA$hbX=@J)k%kL|UwWx0@`@2jpK*(ni_uY46*nz6aFURnt+S(@ zwWzh7n~=4Mf$cXN=3Ql&3Wk0MdH{l`q5MrLI?kSZ)V>3Q zcRpOltuapfO;RiNk-H|flF`m6wE##xb^*g+oJ0S)^`dc0(;xjUG09 z@w-YT-|Qx+#*R(ix{1KC2XC0bkFA`P(`1(uF;i_ylKza{{I41&R(wz3hhvBoqG)CCv= z<1zEMm1i)JQ(49>2$y&yP(ISBBjkmdpr^?DjzjOt%qnS8VzJX~c4qu$1&PR|B_kK^ zk~HF!F=p)6aG^ocI#(nOTl-*IPS~4_7!{0E$s!*=J&StgPOIx%vd$1tM>SQ(Qh#}@ z0>nDqd;l3v-oHC0xcd<1$7zRRhW4plu$%gYK9$y0I;mxoYyW&<+?~@8SDxjUT#(%U zz**G6EF1n}I9%t02@(JSSd6NRxnOb7=VK-b+udB=b@Dfr5s1OqL?)PlSKN0yD36ku z6qEVEm10b_&ORFo{8rB7s{uli(n@qyJ)a+H@fui^`sx@=)#+57+*5LDhopJ00Vz!=(3+*0o|T|G`BN7&0l7AbMlnS-RxKV z!cXZ~BB}w%zbCo}I2#7M94bS+tkh6uA=1t1a6#i{tvdxA)dq z0m+tm`qDIUek%b$DxH1Moe{-g=QF{J5C*WeKjfiF&uH4WWaXY`vS)eL?kHA9m>~>k zbcW!kdMSm)opGX*_6RFSezr4h1aR^AdlkV@hFBf!X%+26>=lxci(=JDII|o#LVQ$Anm{}cfj?oWnqY1dlFYVpiZH06wAyvLo`YohGQr7&Ct@AGbCd`tU0}Rgn-0k>?+)T3wC-bQ%W?# z9QUl2Fkvf%1g}r^v||gSk2Qyk7&;4}ZZ?A9iWB3acJ3`wA)5)GUkPDaiH4sI!EoNk z_7wl%^^Wd(LH&4%k@w|?;xj}gew2s&jCWD=2#3rUT@*Cpghby8L``(b6 zUqO)2?n%rC+!GomyQgpJk8bcTU4K3iO9&C*6PAq!Rk$_ zW0VV`XTX6tc3v&^;iE4E;1p4UG1@^~ps+r7F*L|f8q|A>V-{+>%%{RdHth`YVxH&n5(`vx!nHMIEuJ+)mb zR(5mp=)STB=lVGG!ka_TnQXM{oKxKvQ4Vmw2DAyC!hN}tK%4`bIcUy&lfp^Q7-imn z_}-ymYzr3IA_Zv~VZt3}BBf zUVVB7ms*{>4w6-2_tEE)YH*ihk-p^vxD<459O41IkmjM!smvqEd2P1Gb#!j!Wm_+@ zx|_vH&Fg_@I@H*-!&EWwtjJ0^mdJczerwFobwON59Ip0m&Ads)YImTbR-v7yyVPbxB zp&K!aZXhomnTLe39?UiBT5tMXNI+SvS2E#O^{wXrjIc@*&=_E527sH%#6+OLa#WV9 z&*u^q8Q@gF?DaH43Jt@HU)xs{T`xR`2!w1#NqPz|#afI&`EuEa%!$I-eKn29S#d`I za$E646oww^VGSXEGj*AKZ()PerkYnR#0?C>yQLxJSLf-@)fjx544HomL<}=mQOchH zClm?QD*h!(dTvyV%VQ8R6DVchMG8(YS`6v4FysP%Fyo~vpbEYJaqQIpck}^mP#2r9 zTZgvFyMOSzCet&EJeuXQ@c03P776X*!AkNBp&o*-NYDX;6a0i~v_Afh!4hD^j-V`n zyN+L+PR5Qo?r6UAW3Voc>VqVPk7lVL*;GD&3ci0+p^c4wS{8iYa;$GussA6m<>Dsp z(*GF98CWY@7=I7m{>QID`CRsw0P<%s4K+<9GIE={kTzInExtQQB|@sSSapv@rcD$F}#pQ|3I!@kEOpIM5Yga<7PXL;+ap zeq%?zc@3Z<;(^2-7VvuMndQoce5ummOY)N$# zE-*EiIf5&owljggbs`&Q`ze|-wVQs>RRwChg=aY}#Z`Vx4TF%%0#M}Ve6kV{x50qw zTArU&7LQrZ1Spo6sMFyRXAlPeiH2dwbP$@yV$?y{Qm2dT7=VVuY4OJ$)eW_+5v2yF z85!8NtDw=6Tj7SakmSf(g!5>~l_yQ7J_K8HKQqhwPkYM#-)61ph}^wo=8Yx#LL+n{ z&b7FOQ$6%W27ng~&-kEos}`%1uE9Y0@G*olTxG~?WK=1$1<^3gFY8}glb*VxF38E^&vgToJC#}D5w#wNjL6>oe5(Jz5aj=Q|grMr)4pQ3@s~B3YNQp z(dft4-Gwzk#z~R`MohRr5yP9V@R~U*bomiZ65UuYNsW6YC{V1EXUXOXVN?jSQMf2; zMiVT~I@{X=;#B^|^}j9GKjc{CT*w)f-%kM6cT|$@|HT6NXOpF&<@ReC62?Q1YH9WVHBaBO0 z|4O3cI4XlvgEdp*{8g8?XN{uGO0+*75I10mIwm%S(u3`LgPdqNM)9VJ>bQMGjoJmH zIKaBQl>ysUys-h>R=COc=d{geXUST$)@lL6#AA>i;J}}mX}AyOw`WhC1zRG6QR1to z=d049u;H9Yc@n0rGLbV+A=v&H&Sf$~*jFYrn;I^0aU#vhsoP7bHgTrn?K(NJ$RA=+ znxI_+;QTo>qoLs&af~hc-2fxja?xsJQOuLraCA6f@Zl}UYPFga&){s;!|&wa-zzMa zoKSq%@kEScMQ};2?n!!T9>ZIcIqkcwOqJ>c3bzQEP`FxjTSiJN!t~s5!h}9a1(>VDi>2m)Z8%WSCR(_!&LW9Fctx z5RKYbTCUGdd{zcc&;a~qITKcPLjtyq;$8$tEJMp)t?NQS~_IW_fJw>aP^KCu+1l}qM}Y1 zWl+!LS@{tSyXaC3Sz^#W1}T9Nz$;k?NANp_{8(CS-_=Tmt*0?4#hU%7CEBD(qXYFT zR0{4Oq0y#la?;YLl~RRUex(Ib{*qEFMDPljY0f>MjI%*PF`*5Nswx(PG1^YuLm9(e zl&hj_C0sW{;as(1=Z(^J*944D{#K~7a!<@%WGMEwJn(nv3x%$d!w){CTl%Mp7Y}ci@`)B;_8M>OI1(I8hzN+u}i9)vv;mz0{ZFq}!C+36um)#zwFdEgV~%PP}n-_n7CO-b8~akmsT43 z#ky%&*IIe8CS?v9ik#QpA?N$53GBLTf$i(7$9 zX9J$v81A!}Wg{GV`cew_iqAJ$@l)!YA8Wqr8vb6r#x9`&a_gYlQo{vfPJqOmeG6X6 zol?*kB=)l(V$i*_!1fDZF)0ZW3q9yJ%+8+Pmw&6n@((Jb48|9S-nf1UHMDzyW1f}S zKI=W6&573zVtaVEN;YauBOx882}2eaixz|8mLph-Kp>s|PHuNPT=;V!-n!&bvB}rA zq$#dtP=joK_$^Wd^uY7f9viY z4cQwSnKB>(ow=6(ekYh$ty^`N@>Jj=->HohT}qYXPuUK#u^5Lro0yPj}9bw1^VdY0|IEfvb_wWm<8HGB)GnL?TQWD6= zo3%X}=j2%F@u$9jP~R)<#SHlM<28}JBL-|@-B!01M2bG4ts9z&t?>sf+7+%{ z1U#7){LVe7bzmTmdmK|ySXX!0h!3JoaCd+_h+!Ao3_8EHMM#`2uy>5U)IU5K%E9{(Q|@~-6>=9`#jmv_}=-Ite7GWVk0h;`L(Lh-}Zj-4Ea z9*;X{Y(00c96|v3b@pBLt^{(&SZx-Egu~P_qHhqKx?$HL=K|=23pJS$US8WZ(ds=f zAz6(f4_3e9j0vcbkFF2Sxet;tMwOIElP3j?vM9-q?84m4DAChq9OL%i)KXBxqYnK( zbTcgB0x)$K#$WWJrIu{RQT3?yQ|`FYXCo_x`cZytW5z*&Vb1^n>BY|PKq0mw)S?*u zx`Axu&!ldxqmc18mPBcbr$Q(5rs zdPRwxr^Qo^c3ih_8c!WmOCn@=`?PqOI;g=Df=s|?J$2Jc;VmwDMVSxvpe$Z|!pkC) zkG}rZ!WWpVvbsY$Q4uoBwH`Y-ec~W845KVw>0AUKKO~;$@Hsh5+lldHw<_oqdLi9|fg6A>4+B;~pS5yp7AaQZ- zF8Z7}LFBLMbT9P9*!<)P{RDD}>LVg-l)ZN*VNS`9HG53GJ?gT&F+`%z2wR~OqYI^( zBK*Zwg3m+Kn3j_{gw9Uj75lW-{7>Y#JQ2+5VK6 z^Hw%Qt<&83g#!uGJUS+%--f_m8JboiQzmzmgKk;jhJ%MpF=Y00i)=AU!shl?a!5q# zVMA4jPke`WpUnHn=4O|^kn?N7$D@C);cQ?3tzCqKduiVMj#N}21OhVt58?y~TT=_$ zZzL_?!I%JNdx*Gug0-@j4) zo~Mj$f+ZMlZe<*|eV((trrVC+uQ;B&OY}JZg8CP|bf8txm+t7&-O-=)Np6(vz(Q@E zgh1Qf^@qP5?tnmTUGxRHM`FQCOt*O6uy$@j(>;mb4M1%Xj9okL>)>(+b|oBd>P`-M z5&!Li+BzQMhVfL0c}B~{!jr!dpc}u*0~Wq9SoId}@C?RKv#ZXj{-;j(umgd66O83GV6LntO2nzR?Jxs8t9r6kS^Q5g`DsJqH5aPVunWj41hfYumE@OYYUZhoBpE2{PoVlsu zGrX|TZk#FLW1T6RCIjWH49)&=9PY3xE2Z;j6H-Zzv_RBbc~~*S^f3(t7^?v}xpA^P zZqe+_!0*kxWpj?YOD$GQ@#f5&+p?-?aNI%z?R?qLr(G{10?=$>s(c=C`lzyQZt!ar z3@T{0b!%>Uy(kkWfm9xwSy0nDn2l-lQ8*Ept6tfbxLt;3cHo#%36H)Y#g_CVrEDk> zao{4EF2G&5THH>Y)Megsg5IGhB!frLuQ(dje7r9LjJx0rjMeOXFy5t+G=(~olD?Tp zW}p_-b}U}pQy&KQl7L9ynr#|NRPpB!Z{}q_9q{n#x?*yL&TiOw$El~>+!^fPe*0K- zYU)8Vw5*;l)yxzd}*vHm|r3yyckJN(@L;5;%Ia{7R>l~2{`Bm zkuL&5$6vhM)7e&krgT93Nd{ula3kw*)C_I8lA!3uooK1>0K-HWmFo2b47dQJ~b5VU-B|Mi1UJ;VzCx55DM`X*?t~F zg#sizsnXyC2uBy@#N$cnTH0$EHvYY2*7*ip!}Ak8N>~zkgVO4~R%86e@}9@my(=?A z1~kUeZHua$1bogIy8;2gf6XxiD#f~2E1_cMbLC@k*OCF?z#QZ8DlJO(9kXVDhiHZH zkH1RG9asl3^0Q$CSCgy14V4#+ntF>d2=iy@4ck%igg`3RU_`)L#wfW-C8`-nGDlP@ z`_|H-r&m@oW@Kan)%qY&$QUMD0ir-vdsgg4JB<-`ds>R8iIhtcMVU?s4mOpgFU`tl z5w0V!iIB%!l--df%HHtXshEDbhCG;{OMjZx%Uet0Lc^= zvAyR;=^M*e`a<+c>|nswr%i*8VBngwD{9G5IV(dP?WxO3SNg&fNclts>?qtc@*fEiRy% zT35EVR*AcoqjR;5ty6<0nYi(aAk8yzogFDfZUUS(7^Ys0Y>4wCuD#o!)p%lXgKyC~ zt`cdZ)Mm9oPC|trP)a@xY<`KPQ^piXnMxx*Y66+Mhm34!~Mn6 zg38j^GTfU8^+U-jbUj~O3A0`<9cQ2`jv4$CCb^XCZ7Yc?Bre*Q8_MYobV9PCf|jZy zXg>m~G^|EnnPQ}RO5`F*4hi+Tg+1V%W8Gs$E-lKx{M;-=A{uL&11d>$-#ZGZ2FFrp zg$Ev>e5>!yOwN-vuonCaIho;i|f?x*#}W zXieP2Y=dFjN7{P@R-5h$?Fh#7v<>k7^zS#AEI93^VOeYva$ii#udu#jY^}@sKxy8& zdq`5~3t0(7g>s%RRkc2pF57FeK=Cj;VMIX~LiPc^zgKX=G zUugf~+X}bqFUJuQ!CCXLi-7vtDdg^=^JAO4JCJ~SEmrU;^5T=1xWdQwx71zduv(np zA%VG~(ju?3uJ$}sS(#;Ev8C30*h7NCDGSEwUwDq8y!#;*u@kP)%R}~~hN=Q^H6z*p zHObLrhTKTVcF+Fm_?{`y&C7?r?=Kb2+rHq{6Dn+NbgKV$Lxz{XEYklM3?1_=MBHe00I6P@JjKQZba}ZF?qA zU+64Rl*vyx?vL#!ClZtQ3Y8Iaruca_gxcBSGct!q8G)}@*~8y-xzcsT&J1ZceU=?i7g+JE(85`x(KDK&3gNdXBjaQ3h<#D7 zmq_?H^Ir@b-$#lF1_b2%|KeD` znHI(t&fm))WfLdo|3dLy$})DpzSA?ef~g_3GE(kTG&RlRB@xsGH~1lt1C--QA@XrO z`&Xrr#IUZ%w@~jI*oDQhUqN0J!fq7<+3_86+uXOJc&>S3N&MbEACY^FHY)N0wN$iw z0eY+-j$DJTVO+p0uSpt?vL&Lqo06CEPopr#+_iHFXNk#O7P1a&WMxs3#j;%K6zAff zS4mR~4=&Tg>kGHjkdR?S0cXO8x20TDCc4LAm?{WU6G0@_=MewhI3 z=dludM%*1@Y30}MuRnJ?N$RHX#6o(KkmPbkrc1BL^n`JF#T0f>Vk)ALK*^o7t-J%w zxzh;DttaIzxwG=#)6aiY-*`rA1h9G64_Sk^MzJn)sqb6voAFieamwdnRZ>A6BnJU| zTq5mff*o@*`9FdPuk_DFx*TmACa=N&>nvG0+3gzqTdP0~4Fu%&|Kheu*#38QE14KL z8kzrd$gHX*_e%hsXCAssJy%{t0a0FgO)(`CQHj}*2okYReIQ6qwq?Fv)Af83byw^K zXZ&1xI>302cjwBzFCY4OjwL3lgI*aKzGkx=SPqz;^eb6d8q4>yYd^k~r zG^j>NwmoheL?c8odOu2qK?=r-6`&eyfcZiUrtkKFQ>auw8BFLp!XRRC*i>Rvty8%m z{u4#&xXFbUw&WTXZ~-gCK%6RL;-rLTm7Kq$xUDZvomm_gf~h7s1Jh(UR<4R8HEvLMOTJQFUrPg-+HE@YwFMd{%aw8lZfD?Wg#XwiI7T(0gofBK>vDT$$SU&Ll} zAqVRL;Dz5mb=85&ut|?X8IGkWnl3`h_?=-#Rbzm~QiKv2IbmY3COU+Fc}ak5V;dB1YjmN&p}ub4!0J=iI{?*iUS~ z&cYgD12ieof(o(So?hqNd*16aRCMW_sRL zIfx*)1B?XohqJO?ZU>DcAhPv<8$gt1;O=)NO5b^Mp-hv4%y9NJJ3l1P`6e@Xb5too zFWAGc@Jf>3u$%NdpI)R9+`KT;^M1i-VVLO+!Zc8?k5`G#AJ;5O6F(GzbXH0spW~NA zp|&t(N9bL={J=ttX}A9+VbcpMFH`Xa>L1gH z3q0DxKB?x_kVl9dvp`)&w$5Nd)s+g`LoEG{`RC|_@oeO91PJG@MX+9Tg=92~39k6X z6KM0=r@-MJ?&AFAB={o0qS`;oQv8*r_|M}0Ki;q{pxrI{ z3_8>1xK;{Qb)n9%rbc5_4hON21W`T))b$N~lE4FAIud zdGN+g|7A(>FP^7P3ZmNmiwM>DB0`=18+Y?>p6hDfPUiot0y|%q66sGWL07Zho3awH zu(-0W5CT$;3{*<4wMws-l!))_RUN%#^*6Jd$i1OgN@y|@Hk|B_g6IZGa-=!Vj7XuWv`Z0o;=%#=F80hzXo?jwU3auu1E3Me$QgE;6J9MYAOzjnF@d&yqC_ z)iki?EBIVIIS`(~g4I)1O3ib^@}RJP%jBMWsE=k`Ehkrj?O=>o6NvT0H-}D69v+jYUf{rdNW;Pd3MLK8t+Pp@!>f_gxE$$>C&VF_Vo|_3wT@ z=45sCZBX-W+Gk=jXi1ZH$$6LO4AL@;>GM`2)B8wz*ptrnhJ zjTA(b;Gd5b6z6B5cxOq`xB6GSeuS>0ui4Qxsy>m7jdBUAw(X~vJjMR0veId2j9*Br z+v$h1ke_6}Y>ul873OPZiqyrZKW&-~GXPvqESR3UeF!Bc2Kw&xo2^uI^v6hDZG6iA z*c%%Jr9}Z!bI@?ei{Kj`ymRvB|FgbZ$0KI55l?mS9$t` z|1UK||3EV(tR21tKL4mqnt#=%ul)ec_EcMRaL4f6*&to8nkN7iG;}_4|6i3!Rgb=7 zYBK+pb#PGDcg~ZLZO+K|c24Z8Hcfii3o`@f4MHxM9Zz1S-@G4BW~QID+~f#=az#u) zvl-3i?uRtXfkKxBlryZ;){`zkHR; znjhTv#a%>iAVio*DR9Nco03;2=gu6p%id^{2JA260O=Xh$qH9j5B%tuLrQH^>qlG4 zJN|KjW*0|iP!4>|5!$@FMsBX47^i?1a`KB>C9)=xVqmGN2I|W7NjDR_+RnY`5j)>>(#iEFW=wtD zYb7M7S6gDTot^9Z@6T8RN)$NDPY)|RORVneUT6JJRrk>z6p<)xeK=+`kD$a@cn58? z$?QEk-zB+Pp7)qyEzcqtuuu8WN?=<`Os6+WOJoe4bGXe`+N)( zb(rsNb5pyQmuy%LANmY2$LMp~+c(_ej@iFz1VvlFM#qk);_|D81Un7{A5(S>#|-Q| zzTx)IEVAw0qSmI?)n!|(Iq|qBu&!Ov$AUpn9UZrIWyNG4D%ieRk*cU} z$l1(kUm>opASs^Tz?WHqjVUq%pPh0>in9_Li4cjrDpn;KXOr-`1gLJw=i86pYB9qt zwiA)3eZ?MOquoN3$|zZxR*|)ZFX_1fenB4JXH`kO09#(M2%WwDosVM@Gy%Zr%{;Sb zu&3lXpxuoIc!R|K^UKB=o?w!ru|&yMPe<;M_hv+l>PeX45i5gg7VnXRod)DY>ge$# zz>OwXt0Zdv!RzIcGLqBo2ZA-Lx8iJJQdzlFx)=DnQz0}T3xFl?ceJ{9v zA=y|93C;uOOE>+&SYq{QU@$Uo$_HDx{yy`11oW)5C2a=(sOZ4?^k~HaGNb$s68&#+ zEt~Me$x&aG4-4i?c=z9^eE&vbX#BnKH78?C!-W2VMHjDvp?4bEMI8>Of|dpy#>w6? zXfc0Uwe`RZ6&w}Y`P+5Z|D-y&RHlN?2xyFHGxL0QIR3fjXmRpPh?;Tw^s6YDlm1Ec;D-2U9O%bxdf9*ZulhAN=Rx5+&J zs@#z0?HYXSO}}kp9m>(Yq?hhf$hl=Ajy<7Hw0s^lJPPpHR?#JLL@Z2vCJz2_+1*j* z4md=~V}?sBLaEUGsh($eYa`_-F`?W$;9gy%+hRb0j|~U(`c9Dz}ZApCB=+^pVmsTBJsN4yJ#4xCa;s|wF;rfg}k1cl6Oa&GL({`q_IqX zb!Y~KK2fzwW*Rx{A`>Z)?)P)*ncx{)7r}dgPR>1*5Td4PpmyE*k=XQ=m;;+2M}Smq z>lkVVE>7VmHQ-PC!4KoA0cly&j6F$2ACZ@t8@)|WlnrvuN#;eLy~OfH6#FwFI@y(x z;m=~8_sE_-Y%i{)J|KuJwxnS@2mu-FL#J5b=gI+QzV{Xyol2a0wAF$ov7Wl?hN)T3 zGne1>8`V@5d{9Ks!@e<7oRTCJN5M~6=)WZ{hJ{pE%;schJT%J8 zUZO`D##3G9-=J2ZaLJlRx&?S*c*J{6tU);Ut9GL49gRbdl@nFmb|&WeuHouI{~a6f7;A?~`k>z`V>R6hhbGyQ&g3D1^>%bYRIi0>lm5M z`_aVK&Du=c$u_5Ar}wKc5Uo{RwEJr~l>p72DT~XUv+^ccq~fU6;1r5Og7L@{f`O|o zut3CynOuK~*oz0WC)cgDuSB%(axA{d-pSzP$yKYyqG5ck;;`H%^y>k5I;m zR$N2mg%_z-O}Lvhr<@Q2X1AW`H!dPm0tA`UB%~B)76k6uxB(U!rrlo6yMSnJFQxtj z5WbKw^W;5bXhYZD7)f)wp%vI$cs`2bZt7tI%q>coT1dsneQM#u1q6ea=-nG#ly3S0 zkR9Y9`TW=Fkejhm6jJq8X*ypG3EXbRJxGM#NP>yVQ72%kf*7uX3AddgIWn)~K>=tDH6+B<*G5P@#7g!32-mAL~l9B|m+rR`aooLvm2@rpnK*?9QNVL&jo+ z2h@TMrndIx7Q-`GlU)Ij+G z4qWmO=3IX5d+=9_B>dCEMqwBcR^1ItS>-~i(xY2PS0sx?&`gyQa8qrvh_9VCgD0D4 zj#_T4Orgl3?1p}`i&F&s9JwdcG)}n zsqx+@Dniw{+N^nHC)VuGfi069ess?6&3yR4vTJ&3c3@a5Z-DZ#G*KU_gI3vyVSc>s!re#(KviF&NYr9G-!Kgu z-VW%i=>Lf-{Di^u75NU&m)q6MkTI2J;ZkC~y!pg~qI@ z5j`91zh@c}R)3|0icb#3ZE#Hb+hh00N$HeX{YHGsW)%hz#a}w!eIU_UR0UUsAR(zY}3^)0nSDpS3lauNToej%LIf4Xi}hem}2d}Y@L z9P@56>*Lto4_?Vn;J)@B+mMBO*G$$4bjTtl(anejE6y&IT6ftp~m-(_CYf;8_O z!A}l?=1}RbxifIw!kWTubijH5ny>q;98STkbFLE5H0IX9Lv6?eeSa?Uy@H*dOY!TX zM%+k~_kACehxH0&VKYS0KMA27X}qFl5bY=vsU-9C#!<6;MXsn4+C(f8%_8hz2AW{w z5k#C!NZUnN(4iJ1#X@1^^GQM}7SKYA@0sKa&S0i;(_!!>8_;Nm4MHsjYG&`$*pLem zql<(US*+-?EzF0 zUb5EH2odCUhnYsQY=^(5E;yIJ@x?e`_GOVv56&@daTePWkL>bIfN492xF^HdH)&WM zP^I#q^I3$%mBQ&$ZeboS%!A@Ud1tZT%@xO|#josFyP|58NH5lYM87(ux6` za6uYsYgV6RgOGCEKQuKAPU3SbPNLJ=wA9u^3R^MZC3mASKMfn zMNd_Q$kDR$@`hQP?Qp?5jN-m(LGhcyz0i67h*#|ibUHqbQw9#bx(bC(Sg}$~pS$MG zSf~rv)9VWzb*<2MH;wm(lOvythEDMINE&wz#z>2tRn&mqe;tRk$yy!~S~7Cy!kcB! zdF^f`zi2ygzk&0EL0;#JnY#G-3IrYf9U`-Hxekh8@;=mZLM)LHjMMs5dUCq@*Q%Zc zoIUrbE*w3p;Vr$X;VcKp!k8*(Q zhP@8s_I`us?75s`CE+9}aZW-6V{SdisJY#GtOL6d62bQqUtz2VaDHcYK6O3#80c0U zgbx8qwY^gr{=ik#94qJw7Pid88#xWjM00yJ&!XxSm6(k!HN&a2@zB?#a>)XLwV zto-;_H)KJm>B%}2HMkd|5Rj=^l`iW+;96l4Kpc}8Hy@iBGy)LX?z9}*PZoAf=MVc& zZ>>Nfux(kv_D;7sksbth_u-Ild@y*N0h=6=BsFD~$>G1^d&(}6>^yaU`syi&Fr-C! zJ(xgf!^C`JHPxL17FVugI&OkD>b80|5q384Mx&H)o(GaKX`qZMujCSp3>|vw;v$a} z@6y5(w+^)jGB>GTO-jTM}OPbg+}j6T9yAVQzd7V}5l&k?-noj8I& zY1sQid^oN(x@~DAPc+2I{*`2GX)gzC{q$6O!!-S(Us)d%+hI$x2)q2|eq0|Ihm33A zPjqMI{I}C>rENJ5Ah*M~TVcpsaTN4|k6ICEox6sPd<{4u7o4dX8h*Q}2N^o(PpctU z?=}Z*auUg|Hr%ooN8N6lVYLQuqrY3g=jK->9|)PddZ(j9F5A%vhOh!g0ufnq2>aPC zYs|{Qt1Et-V^#n18ck;jpn+XUXO^>lp-foyqIR0eC1NFq_Laf& zihXS+1eMN;rph^qO->b0SkU`}bwBZ(MkvJoZAD-)Dt;~uM{_dJMtl+Jt{Bt3E}ZnY zJv1+F4Xs=V`CM#%Hh=kEmviXLE`85fl^~ZuCyx)RsxF~uaJ*@Jt9KFa_WWFcZ5#RJy_8C&cTGW) zQ+-y<^{-YETCarJn5o2HPFGX-h5WeNgp#HM@F4I5Z$P+nP)<~&T(u3@*D(Xyc6Dah z%S17oao{B9vqbR^SgSD@8HfjX)wWoZYbKOQ>O+urs55F#Ta!;J)%um7oGTYA(-v=4 z2d!lO5%womsJWP%|BEi{U+LJt;!c_8 z{&(Ez??9?UBJLlEkJHZ%9CAJ)Go^>N1ik@rD3o5ehs^qJ=-}Y$hC75gK-W$hdF4*$ zNk&aIiY>}xRKKKIL=adPsY(v)ymv6gkWK!iLHXG5_q%Ws&_w?Rm6=EuW+503 zav>DuK`+32+vmxq>BQB4BM+mri8dl$!bQzTYnT?j0hzJ(FZ9@7R$hGae^Ac9@JCcc zARyoW%BlX7AN%XH|4&q6NK@VwR~*TYR8~h?dn7UmXrGkKD2R?*o0d6VD*|;a7L`2G zj1G0T*SL{j4E92Q>5_*_9Gwz@`~6t37rT_CTIg%de2-FDe6AspbW}2her(*l*s}Tk z>G5ZFc9!7h+Z7@Z=B+n~X)9KV1w|m4!2GQ=d?v$Tz{dsiAtm zjPt~*;!8_!C^d6S?%4^TU0KRK^b+utQ?{>^BGzcnxj(#)Jkt7uCrZi>_C4tZtN#IP zgh`_rPkBwN2DYvLf@3N=O+RVlrL}Rfl@(jVjVW_=KrMU%zXi@`%sC{prR@ZIex2_( z5`{q{(*B(mRnMc?3Wl&;w9D0VsvJ2s6XmD^yU75CQg+P+E>1q*Up2%6W2p%C6sP z-u$W$xD-yg0M6uFX06=0s)Yv_GB^$wt-d0IE#5J%HrZ9C<5lK3#3+QX$;i> zbA0wnDh7dtJC5x+AziP}rA=)(*{-Z+kuB1e;?Lh@1>aMN4~bF^8)ZJER9}}cM2WW^ z*z=pa*YgXz*D-;rN|m&YT9;pV^3hbiV`TPJZiKro6_i#dV0a}&Zg&Qmz6o)Dg5sTm z@YZ!u3>^6}j(f-#tfrGM@R?G+=x*h(`-OhD2?H!k)4FTD<`K$e7PlxSZi~>RtD)x< zB8M!30|AoQGV+wee~D4N(~6|yNB@>9Kr$%ckm2e5=9Q(xACKw<>PXF|PPqX^7sl0< z6;O4_(7*9Y{0_FaCPi}(m0*bUft-!fq(9hPS3KyI`>f9N4pz5j#Z(sEnA~j1mKG@> zVuC5z?0n}L(laRln4V1mu`Q}j_=O;mg5?->Bx3fy>mIz`$^>TT0FQtKQ>;S{SwFwy7;T#zBT|cuU?%>Fs+&|`nkaw&$|&5BUF3^nblU69GApJ6~X^=@%Gk`QLbh z{*L+#{f(0UOBQKIePkn!EM6Mk2#!(fHGoAL)aN8kmw3yyrC?ll$+H-m`GwY_O+ZUWEG#yKaxpGedju>u)DM*cW ze$)zUi3uYZ;9PWpL%}9z^JCsAjkw!LTVy)5^#Cf2xXy^1p#`pvCe(|3TV?@0G4HL; zI{g|Ia4TgKL(F1}2_`y{Zyj+o?qM*hp3OKX^^$LYJCBoAJpa)b-eHZ>SZ6f>&(Bzy z?|@ds0L});>wW(x}9_wi{Z$_epW=`nW(bIVjM`^D&Pu!9aNsVW#5^`L!ke{zn*IfX7 zuDKxk{_xq)#wgo>&CHOa!y)q|TMUS{eY=CSDV=jCk|16%`GH8&O;OVRY0qZWsl9Lh zxj*RQA&z6RttRssK{nFziV#0)(_xEK@2uC?2>9l_Il`9p$|}kuS@!|ltz@?P zCiq^Y@<0?D<~7*MmMcTbo+EzM}Y)xEXppbay^Y#)^k zB3lAqH(5mb*nYtyQ-xKs%mnrHnAZZ=72Ho&hN7||pP`VLU?+1E?Du81l2&T}4ABvv z%VD4&FmXyeR{E^}6k~|0^}}q0SmfdziqU+&AP2c@pz+%RwAff{)+G9-(9&R-YL|f? zX)je*&o8Gex|Ar~?kLajSx7SIUqJH4X5D#j{3v0w%L{gdb4Qb_z&awMzK1cB5+DEd z*I(b#4i4rn|I$|dlXKKp#Z|}hMxV^PZMrre^*D zKuge3%&4dMLJQ#c8{R%lO;5=NZz*~R&xC5ZQSS@E#u=91c%;NSe}}}t0zq~epT*&{ zXKty>&b#6>O(^8Q#@f``t)^ZvH|{lLrw(m63dr9%)Zg1rB~Mav09=aEon==ZDL*&;yK&psIEJ>|4JDsJ&dQDFu^dq>j!Nj>C26T zDQwm5$YRYNK_nVv@^eWpqv#}EWtPiE^8*+u><`Ct9R=swaPqIg!r4XSg=XT$UElk* zWvDw~6)tn~@lD?PeLBZov9ntov>K;;C9QGeRuh{PN8k6;R_W^>{L~Xg++LiGYC+pv zi5HU*)*0Z#K;xUe#l}FVvwp=xMEA|xlci&w)BtrYB6*^g@o?9FElwDPO?xL>xJBn0 z5R1V$K;d_=9_>|%Um}WMs09%nD94k-g7dUt%f_gl+7c<^VXNFzzIq;~bec6_q~orn z&Gr9y?x`RId~0f&RvRW=0eo)^#gedn|IL)Ci;QNh&{{n@trAlV>rHdGX6pGv@tvRF z)(6l)y&2@cis3GM=|*=o^vgxPZJM$o`l%K?(&;zZuR$ED>iHKN#z|duh{hV3gy_XW zDL7*bhAAeEhMhVaw4~q8M@q?OVk87v83mmc_x`<5Z#Tzpo$9Y);}#D~2`S$@tpAiS zLRv`@Wo5=`$U?^&K$?}wZ`-#IU7_d8zF%pQGR*DNJNyEbdX!cn$pBZP^hTCun3XA^EU??JSw}u`&c5%MLNf&EDe%VMH=pl^9S36CLt9<47jV1M?Tj^=HHS z1s|hp1rLv)&#n0WGl(itYO8-}mLnrabR(!fCY7XWx>K(SgEzR*7}Gw=?2&GOVI5PH zmrD}&>a5Y)Z$%HY& zCCFtt%u`lcuP_Yrt~^UQH5XPM+Cz1oJ(0%LI6I4 z=%y|UI5a42DiU9~6RE(eVDtpJrqBZe52okr6YFY&D2(*FOO>14${hs1dZLF3!b#pA z`2T58{(3z3_ul7ze(BM_f)$`HweJ%hnTh1lwOCwKK8P2=16fj!G#FXM;#I zOK5V5gJN_PqX~MDj9y=swjrXk;=1~hOJ4LehOBExw&rZ;F=P1-611p<@@*dRW3gxM zvse0kQbr0Qon$OO$Hi^>dh&Aep?ik)X0o&3yZ`M<4=7iF=fG;{33?|I0C6Vlj@q{! zI_(zwZMNTPzzoYWKDkH@6~K%wLi{5KlXj#j+80IK86pRT%ZwicO&e`thVH8o zh;LDV3W&<2n+lnW)qeZ(Xvz%n6BiJmtTTi+r4(Q!tf6kr-*pGqME4aong}pAhhQIx zNiTNDX<%QF)_rbtfGssxFp~H(uR^xsGx-7dCYPIMI^zxenVT{Xo^b#ui#sl+%jzCf=%Y}^ZEa4yC=|L{6gYSH&J6WlBO_fCt>WhN z)O}eNM+zb^fX1cH*cgzc*`YpR!RpH56Pa*xiP@@C=C3{F@mTuDWqBEYq;|421cye0 zwm4@*n?s2xv(wH@<)lfjI1!0gaxj%Ci(Rhu7uMl*cXXu{mL)FUm!&VG5pM#1LA zEmVl%8}A&my@%G%xkDwA2pWyK0yYdNiYNvAit(~<1VeHoOOu6OZK1>(~o6TsQOQ+oyVUhj|b4j`j5i0_3{c^3A*GRr)Z|eWm--G!e!@MWUBzsVaiT z+9ZY}V&h&$RP=Zx)_0F}@kN}s;B|^CuwA06ZG6vwsGPBA8?(l(RHw@|w52Hmn_>&- z3$(B5b(Lwd!xYkiKqxh6iAmY%$6(3MD=FNmA`%goa?55Aj#tEGfpgh(!u!ri9tM>3 zxY0(cGP4#Hu~`h)|IGfj*ooRyQ1ivZkIrApo`LDkHzBO1_7WZX*;>3$@2ftva_f%1 z)61#u3%jFnhmWUur|+xS_wtpjC#ZHus%L4Ve&Jyz-!SDw$C_|7cUUjq7pMLkOi=xf z^|xLhqgrQ-p-f^A3YXRa^T0r^1SG6v@n1rAm}B+LUPtxc2tAs2kiV6O!1*Yd)Y7K3 zhH`FW$$nX)fA0&56!p>($0G$L+B6_`?YQx|A2(eo z`PlO;Agz#Q1i6bDl(_K0%ce^e+#7$pk*%S;~ByC*W{zS*hPqQh8a_bmmISC2gK{YDdA zWmIeIR49+#fgJpILBw3%I5!`YfdU@);@Uu2&zy_qs)z5D)ERf#n4DAcXf`x6f$@m>*E4^vxbmMP& zPtu+wJSbn-=_T75H@rwr!bn$pHOE@Mg?a9N%QvO`-a&M$3>4%0kT`Kdu$=D;+YOq< zNxW^|7d9k8#QQk z@*V@xLDF9eSRvJ?HYY%siYq|TsgP|>m&rNLC_i+z1=&hS^TeL**KE^mK!QD(SCG+0 z8n!hxj&)y>*Z9F)P;hoaZ71?^OnAc~?qLfjZ(1%LG1dt$o5(lgz_~8F(+5xb{4
3%$Ir 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�I`BZX73G{r>SVaS4x$U8yXd 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

&W$E}~!Xuv}nw?N^Sq4k&^N=>V9n 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�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⁣ET+Shl+GY9p%yzgC6o&2h57xwEF_?q>zxQl;&x;?4(_pzix? zC!JzfjW+qM^&b4==fa=a7qAyTYmvW2_1g>*XtV&vHC33)$wO@n%~@izN4hY+Xg040-&{CtI~6QRB$ z31*qxk+1-Ig?YqTh#Gu9v-{~N8t|@l#c;Kw+GG9<=A9wGqU#G^;BN=NhXs0SR|C>m zp0aD1!ms6vZJN)!i$=XQolmt3XEw4dBpD6F8>188c$|r4jo`lQBc;9_xL(qzenOuk zmecuozqgncW-T#WP$R%Gp{VXwZoTG-K=t-#z?cf$duEr<8A3zV{SP>%i2tfUY30te z`8&lFklO+D2h~O1^Picvu!?WgWsgvaZ=l76u<(^e(IYOvtHIZHSlF3S+&+=^;VG0i zsN6mh?=XkJ2$(`_R3SD28qJ-9$s7~570OP?-_kqY;;&BX4zKZpnisqka(>5-Bs-Z5 zGclu)Tij24q5+bOTV!(Pd*1%)CwP@<-tjdPC6CDE4IZw0Ds^X}sxHu&fHUUC+)_YY z=Swj-m5P6fzf77&r~6i1@N^@mxnFYJ!bl_hVOTPae5M!1%ftZ}KD~B5^y*;9#ooX_ z`#sN>&f739u$pLJpMue3iuGKvIdS0+H@T6{HXOxplXME)ybVx-{rZB5wJA2MBj2i);*E4-~sdbAt$&nKVeY~D@ zlpuD*jC)E#EKf;SI;?G(WNPukfQ!>}OoR@y@ag;TLli|?ucLalN1)oAemMAd*P9KE zrjDr7WG$bC*2cJ_m>w);w$xdGS{cR=Dv<^07;x(Yd5&rH)N zlkfu^Cf9DkqetxIm3=bv1~LDy3eH98n9kOimqz3}rxjR^4Ma_2h+kQohDC^j*`}j$ znz^HM=EDTxcWcsf`>+BYZ`v+}DT6`!%O{ki>i%af73n!C$fk8SD-ZN3oC*5{H4zG* zcfltYPV?a7Gu1syHG!{S{73xPI|;}7(wwfJxI&4)4Ofd{D*UQzebbB6?|2L@i)vnp zM(tL{E7qg*t}Pj!CyT>h|8vg7e>h>fwU=6OgZw!A{6I&={{|1Rv#~dDv~aSs{ol2b zNm6z{+Q`xGtm6N{tU*e;Ky)@h0Wy;Z15)uFCGilH3S5r^BkSb!wKg?5!U9NUg2Ipm zzCg9Ouk_*TO(_iBVB_z3uQjG_;s@(`etx(>>iyjy^!n^^4nN`8ZjuKkztmW@mlYQr zWhPzdoWR=xJVG(L{`JS?`051n%Jc0ce6hQ=ps6W3m+a?!s&fmeIqt#O2{@AAL!(L3 z3xop16L4O-urEWWUmZi+^P?*)d#QDCEcn~ERQE)k3(;yRQ`#gj)xbdFD+eON>G@( zzkVY#^WyI@f7&&A4d9##=cUnT6*U!N@fS-r{AJ|Dd&MS^*GU@)EfQ}`vs@!>W_PHm z*><_AZM`y#zz>x~2thM@WHm?Nk}i~ZVx1=_9{+XdRv(lXQYYavulI(-oN-KHtP95^ z#hIEflrF>g+nh9=Vv0jQ|<{k*C3@jX4O2w<^T`( zkA<{?$GSm6uR|!Sm{q1K)Uj3&@i~Qr2uuziPqe^qtN_>}P}@1`IhzAxg{jZ~iCq0h zrM`oH&Ts!z>N+?Okm>)wmHK~glZpJlMXc;$Z}Ok?yjxjI4n+v{E7Z2G8ca%y9%M&; zvyhh9-D;RP-w^w4ZUfYN&IW5D@yfPw6Zut+UqXQi8&1dv5yda@ZfZe)o*(+%ekOa; z`-I2L)%1HcY!-+-{z+s&9SC})`}En6*q?q2(NIye)cX`ZzK80^us=AY=SoEMlt*{V z#GcOd0X6}mw8CjQosC9idBJ*d%ubans7oJnD|1<8^O#+P$w(Yp3FO(klx#T0vjV9Pp1%QD8B#72r7Ym24*1cnRzX8)ro z zb9vI}1><-vv-J@3#d&DuX{CayBbyY<#Q2M(J&egzVkO2H1tpt@WT@sI@e=|?rY?Y` zX@gb74rc;p@(#qNuEv5@*H4xP$Fjy2YA7AWVR+wpw?|phE-*f5s~Nr6qexd0&+lY$ z2|#GJQiJSQ9+CULafyf0Wc+`z_KwY&1?;wNY}@JBwmY_M+fF*RZQHhO+kWDX)p2t2 z*50SqI{V{UyK4S}S@)bb#x=%cMAkY3NklT{GnO762M_j8da5Jxv#H1ejT#Aa=K=`{ ztq2$&+&~dak(b({Y!El}7=Z3!8e`3~LTrcs)vp@6R10y>Q!eq!cfSZNLZo>|9+jbZ z?ELd@A?AF}_0PJzct{o>8Hb1oI^XLzUf6grAt)zks9+;~JcfQg@IM6nE{7iSD8umL zv4|_hFUDE+2a1IQ4^SeiJA!Ln3F5v(i7&3idqIp@WpL!OpkGu-1Vf_PR3uE??V$2T zXLQ}#VOWBZAbZf(ggGw<2BK8tNDN$`;VEb1Ayc!pG%8e)8cBIVS}JZ7yZ!Hf8LR}f z%R90h_=giL?DRaTv=G7l#Y&~=dC?-`LoaQU#sE&6c|CLu$mSc z5YX4pwNl~#YJvT)Qu^5sduy+Fe)~06(@gv*cZVJEBpmv K+Ah~hap8}NDD0P7J~ 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 SBVv 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

rrpg5CrIMqIQb~?K9NNgNqU9yQGwLwZ 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

O!#bF@#aJWM)>D9W54w{JF(>L?C%mrUEKSV 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 P+lgTBtCe!&jxiQor}cS9DAdB4 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˱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

2_sReX@ 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�*D0TPSW9?5_7`Rj8YGTWN86gSL(qX2P#df zEP$@~mm3epWoZ4fkcNyC4VDwQt)Ce9DFH0$Gzm0v;(jo$e9p|ty}Jp$_&BLmu*A+r zNq>o;Or%T?N-}aH>odDd&|hcZ0Uk&Z>BUxLzJg#IY5V6+KSZ!nA;{mIgR1>Nzq-ns z_z!(#p2}s_slkB&_G?_{Wk{-F9a39gP@h@e((MyxT-Gg^nZ~`H8rYRJv4?5&+`Q>f z@xZwzrHtX2#3^s+z4D?(A4oAr6kdBx#t+a@?6?LyK?}Adr&__^9F&5Z;I#qCae&d= z3Hq@&=IhdfAhcuvBY$q^@jCPt=2IB&O1lsUt4n7aARIQpHc4P{+*%d(i&|!OX<=heFV6 zbnAP*-WJAB5Bo&a6FKu@Q5>XOfbT{%am)U|+f^Q8(}&ZO00|gEXBkWpl@Y{bfizzP z;M!&w@QHSJI-~zf%+5YV79aVGlcMwm9($7+wG6*6pA24|sl!SMTNIXJ;q4F7VdDGG zAQ~s7q1!W=wBW#{(>hQj_2@5bT#Eg5m?_5V;IJUFkvmh2gX!i^Eclyx3V@8cNG{T zTDZL9SI4$UZ2C_OyJ&o(fu#%4Z2GI{;SHNm!%kkj7nNj;?f7?YEc2cVXXuTe^JX}? z9h%j%jazRQK)@Bm0@taoPngT?06?Tz93{83++KGkUZL#+?fOLQe8UGj&kT-JP;OC+ zyKjNGrl50k@MJMqx1SI21*V*u9SLDr2=o`=gYgK=^v#ildRXLh21(NEIs)bZ)g|@c zz#wPuxY}ws>AwociK|IjeBE$T8Nr{tk;p>@WGP9ZxRy(pe=Mq;L2mxsH6R_tu6DO6 zTAbdIF88r1@amCEgdi_2{2cJQ2T&>$_h~%&&Z-k*lNa%RMa>r#xjbbUaW-h!d9&j@ zYk;e_e7vIm0pTm0deeY&QH;l4_J|KwcAb6y0OBwVvcVHfXm8NX`q-oOC>kWW(EzYj z^A7)OpK;{~M|)NzMgqbkPF~;>iM<$KmCp(;t(ojV#)Im5cQY|L^6N#}e-c;8$C}*n zAoz~(;qciV|KQi{*+5yCE-4)Y6@3yX1+06Q}4$0KLJ@~(OaChK~zId}EIKsG_*_GjwP`7_+P+l@+2uFu6v_dNO zPz}c3B_{^%|MFmxii7dSLb@ip*x7pigzOeAR>)ZYlcTI<*8}uIMRDc(Kg86U zs|1rYKmH_;AJ)^qCHqx#FtD@x{V(f!RnlJ@L;>XC9zbKQRY^Kjx+le|=A?p3x0Uq@ zvqVg*%;s{2uLA(3ER(gZOIp!wNu=nOLGauBC{q^%N-Gp3p)?*Qjt8#PHpSfK*r6>{YgYMQ!bE9Ib$ zDJs&csMIS;HrH0FrOvLjTRn-`d~}Tdhc-HoKyJsj1Bg^c?7gOSr0W!`3AB_Me8(f6 zuM8~Gmh<718_7x^wuFtxVsq}=*0uYhmMsVJyFf`R&1!nk7vZVXkb>29TvxW%Z^`5( zH05Lw<&ZYO0VZiF%M}-_9#yvBG4D6cGWgh_nPQ3Bvio<{MFcaMpCH(1Ct~>NM1u+R zdxY9II|}g{_xWb>wmlk+mew7o@}gpYHri({S_En>w6BmW_jYx0Va3=T<>12cJ7#J| z zaLzv&m^df)0wdTC(5c@~f{alvks39Z@errF-=CUKvk^|UfMV;z=N_ehq3^O1o;UsE z5C)8sNYBbK5Mf4ad5&NQ)NOhk%)>o;aw5Ayd13;)skqpGJ$W#lKH{l~iO6{*TtbVQ zV;8PL89o9lzQyXl1;d4P6>3Cv3T)eBlEw3*4zNc+X8abi#m;vINhx4_|2;-z+&!4D zZ~9ENKl5;dp!FIh44rFNc8f69g7d{5?@wWvOFT?LC=1F^GO(46u7N#ZZ%B0k@-{e1 zI@DNL72k5d5-1)#GrNDf90zsJBc_wKHnPlRg;Tm=g=0FZXf;pfjpEt1mF?6LVe>ww zzp>ffT*S5N#C7E8{{pR1bnVjLHJk5awg+%(1@QYkMIJ|?cF$)unXmtNOm>!SXWH5S zQcz##<9|eZvZrgfwg2d7gnqPG4F7LE%|CLLMV)PooXl-){;8(<2|42xFUVwz0%^wqWnC^-!=3q6I; z$U1o!M2A)r<82_%o;RF&vr;w^BU*Mw=B%7AZ z92GyS=;&G0M#kbDD`O5A@3?q_c(UzKo#AM1mna;K{z$L6B&K^DB(Xxzg2y$=M` zH()tR#=NVx`Dau}zW6p>tlm9Rv#NEcl(*5Wr2Y+Z9{~y}P|N0?>3>^POzsgp% zbVU+D_bF+!%CI^Eg#v>Lz%OAVq=cYQ&1*#b37Rg3fO1ZRK1*?8vti}0+lQg^1^fok zn>(OTp1ylstNFr#dz~bfU#J$_%W^r+e)-~knC^HxxU1;_bOYuatV7ZOHeEN^x5Bng zi!y?017S>)-6h|a(+9yTJIeC+0}}5lc2#XKQbcevf7oz z?i#K5O&cP&Xfq@)@A;F9>c?!Sg6}cuV&$uhpLCv!0ukFrLNWWpQe#xpqZYRvrc@q1 zOLvM?{k?o|D zqGLK)F^1qDrc$Mv0^(9iiuUJ1wf%Y{`7uca=SK*3ixi(A^%p_JV z==y`pTHQzc2oPmC+IapqC{t|GVYx?ga_QI9KE~IlKsJ0;d$$Wdc5`sMdec~DCtv(; zqPNcRtYedJCP92Fe}x10mTQ!wpsH#wPyGQrc@t9IVH^MJCVHlvBPMw8ykN;L zS5y9)b0EROhBi4ar{)}W;O-o+hJU$B95pblt=+YqIhGF3l#6wg@E+5u(pdLi zNS6eVSa5@>R-r`N6caiZuq00fsT9GK%7+r!N_#3Nl4KjZQtJ1fjTKv3ps<0-OzKva zh;Ba7!<4zOdnpLWBlzB&+lB@1!6-@-MRO_zRwn=`)&`ZC%J9F{BI zxQ9}$Fl9BOTWul)`1h95)&J8iT9X+y^^{t4d!MLL=K~`j972vqn3%0KqO6w^+FzO- zLsvw4msXalLTA@?kSX5S7zI)!Grg>U3$u|SiCML-9EOiDo;d`!fXN7&tT18?r9aqH z&IhA=#?K)85WrWu>=E&lpN#cRO@b^`1Z_GG>trr)Vl}}1OTRUwsy%Ljo*a)K>XZ5w zdJY}`_v}v+q`e|pjoK}#J3(i0VQ6MbXhw>8PR@DHr}Q`d zQ>;91)U44X2D=5mk^Uh=3|1Hx{o6|rXb=p^B=ey%U&+lrPRi)p%AhBmkm#5muDZa> zqP&?ID38wEJQVARVCX=gP~~btTqN|SZ_sumT&=Sk=!S>x{ydhhK)oqfIm+dzFc`|= zVprs%#}t=Ao$T9oB3~1)?U5j3J=nL;Gk9(G&<*~oH;4yW!)EY-RZW9cEoD;*L}!3c zV?5jMPt48VFcf_0S>I%%mW839S;Qy>xr}`1rRYcO3g~2X1%S4Xd-Y&yX5wsA;xEkf z$i4<>Elx0_(+eyEh&{yrbtTq#&?>HO5zQ%1M!V~Q9+U|)4Ukk#v_}AqgKd^-cuu#_7|Kw>NY?=uKl16A0Xvb0G40TGnce&xP&hg%*H!}Dbf$kPzEnIGg4dC!GC7P&mI@9fL}W!+LNO08i^#Gmz1Nddnx(f_ z*PMnY7^Q_b+KHkB&5KUYXD84gKQ2}0kT;ar93h&Iu>RRRMW+EGgPyP(Ms6HAZfV0x zQ`*IvF%8}vs}-(j>?FU`@SZCwvZl3~=7&{e-Z;a@t#EhvEoEh&7h*_tx zMPY5RmgMp{9&XgNb4LjY2;7)s4x&SNe-iBLEY2f)_5<{ehP66Cal^!qeXcL|YK+$bCXb$ZRdxvZN6 z$DNQAIP_mP={J1R1pWi4C*ZmYu}3HZ%GM>F9Ix{`n3zKLM9M`}8nd3V9Zyw1w8#|Z zbJyT{70P89H6Xaa03$_v%94B+28QQU#lVt0z>?&TS!=ioOv`OaNXsoNS7{%Hxtkbm zlMQ(O9`rEE}ylDUIEd%e|EyecoEe0>yW>5&- zZSmr#KNtZ{76Q=+N$r3lu_i7Mi#-5iBay zoDC(ZJ8y1|3btsQoRoY4lM(YA2QigqlBBrzBCEnm6-tA&by6G zbFOw&WuUgT7&`E#w#}N@82qlHJv0-(#Mmr1yKsA;qef3n!Op-;Ajp|2`ODd6Wr3E$ z+m0VpTIuN#L=LTxg2$ei-+lj$d}$~vymGC7T)^TjSU;4_0b+PqKu=!uYe6>*vqZc5 zARqcuP2mwM?54=Yk@IEPdzZpD=DH^E8cSo1f$0V0;s{5mdC?u* z{Tl!2|47V3G0-WL`a!~y{sdrA|G&HQ|E5X&$9%44?un&_!Bc2WZN5LKamo2JLb1jW zZYYQ=Y3?t|?2qFcN|hgRMgynSF{_d$n=HmlUuu!d;~T(aYD6k!tXky3?YQB7 zfx>If@W5x@3%GixI_|u5zF2&{A6wP{vq!8DoeoHY;Q3- zU>*~a?;4_W(u&+cM=(kv2$7hn%T`7(>0y*acjfSk(KH--Sl4YPM+8|{YDb-+WUj~7XmB!^Xa*1dF_|QB za8&J|U+gp?p=`FW3`f`_m(eOzAu?S^J>YW^WOMRV?~hs4dto6gb1UaZ-kwt@!yERxM{^dh9dN3zwzmYGghlg8PFI&Bh5IveVM++a>~ z0W-#+J8RWoMaK9$Umb(9(f+pn>|Fd-^`4PVU@m&XLSg1tXR?XrZQ6aJn#%}zBNGB0$+V@UJL`d(tr}xlhI)(;8DdR1p z8QY)SxWc=rVl*cqn&m26CTXqQOjnaa4+U}OYS~KtuH$1VW2tH-o&MbthbcmaiJAlm}9b-IJ$oBeP0kgDeRwm8!Bx7;&@B83UogAps!Wga?&S-657xu!JRfdd$G+ zNq5embo*G0-Q~MlZW6;SC|=-f#$IxLFLy-io*QT83)B`B`MV>n6bEEbJ`uSTuN*d# z?Cs%RC7bu~wLba!fIUfZt3mBrtln5uhI@x$0eX8Y#uw|i6t6JVW3N>KJA1!Ddq!kH zBU_7iQ9c9&ze(vS+)!FjHv6PHO?g%e^d(kxP-SGW-B3~{FG-G5Nw$<<4hPN>*SIV^NhGovmh9-7pMY?h4%c=0HxD98Y5+ zd1cgq1ULG=a&Q*$WYW;QT=Prw%q_9kd`4a6>VTb8hb3iD~jsqw2;*Zwg`9qm0R{#_uZ7GvS_0@#Z@P(X>x+|w}+Y) z{8k@K!2uOMt-2}UL9FykM0`U<@jYg{-8b2_j~%v@%uA0H@15CH`w&ktYGsDdkMl%~ zRhX!68Z6fMezf@FxkP#CduG&wM1ykUVgF|IF+&<^|9#0T$JNz}N7#Qv4?cMAr0K%B zgk~_IE=*&BYjOL`xsvg~qtIhLlfFhdxz}5vs;KG2>Q0_>YdWn|%C~KNN{k2I2HsJg zCN&aT&eci=rMhMu^#suAIszWpQM6F=7x)u$NTX?`MIGUR9HMNu(y_Ssm)Yr?7{0uT*B`1eXK32yKC%e7OX zjyfxI!%fW(Qmfb1(95+#{mvl8LmjK`K6a2DsOCJoS%lNEwEm*QHU&5RxR)Yye5o<{ znPJaH$ULKVM-rkh1Y+9)AqVJ&bVQLzZc(jVuLdkpBkn0YR&w`^J|~TYh}DY}l5L)$ zZLS%fRkuCiMvS7w7;=q}*b?uKM)E~DJ7WWt5Vy5g`;RyWz`p*QJ$}8thD2}(WXtxN z7q0Lw9Uhg2-@KiXMU;KOHaN`e_<8#DPo@xtNBhQKAtn26tq#~foG+XNN0N!+Uy-Z{hT_$@X~!crti5T+p; z<=M_b82G2?hvSb=DS3=rQHxCQrX7$AstgpJ<_S!z;{7ml`jL^~^R^s2LA+o|L^8DB zN-yr^_Pm5Bb>)=c4t)tIjWmaY*=oOW`=|AHcpxT%I3ViV%M)69Q0E3&I z16UdpB8viI>T<7z-|VyCGDhLmeiQV6gZ<~o^bbxuA>g?s(U0M`{l`T~_kUfKg@uG{ zt*vcsl>QN%@E->BL>=3obMufLK;z(QRIQ#SO%yHOD9cJ$kpwVn!+>Rwt0rJ*dgpY4 z1|g)H52*|@nNE7$zlBkzsDr4jz0xkvSq-MS57X)CdObbg0JYH$VCI|C{R1ATmaPYS zHYtQJ+=o1yFSUJf%{&-KcnruF>rR0s^4WPm9#@1;8fkb98TstcdpsxT*4vvMfq zMOBR4H372s1h6Z5s~6Edq4IR^As z*(J7ZaU)Vl?xn*B7UFba9o0N7T!(me|Fj!D2XLO_A-uhR-F@rM8j}c5cK-f?qFVUPUATERH6*Cm^|-;4ZxrWO^a1 z1Y7^t1hXFQZ-P)1{ATRvxjY>7hMX9U^m(+}dxnJE5_vh(7|}@6_A>v6d%E#Ucv8k9@<7QeU1DcJI(_9@Smr>q@6s1^gi8?5a$fXFYcD0yF5`mUJF?dkCWF3V5p1H(-(juQckWvh$E z`6cqJm>P5fl@is3hTC8@!>(r6!Id1dnkv9AfBE^T_Y7*ub+g;0ahE4Q+n$`Kluy;> z^rF|D0A(dtb2zzs-BdhO2m`qSx;VKbFfO#8!;1BDZd48DAYI0}+}N%6HXq${<$WkQ z23=96hwQZ8x_mJ6u8iuDYx{{j!S*lhOH6CZa4x9QF(dRdRdJAw2R8&rTXHK4s>QL5 zqRdAuNG00Fh*v*OY^DDKWRr5>=Mo_#%D8+)Z+MKA#Eev@o0JRky&yW+UVWQ>UU0!b@#ynYq_z8?QK#zpyM|+9+TulL6x`ZWRLre-a+1~LE zGVvr|{I_I5$U}1(CBoTW63rULNvm#YRKf{-jL$M~CjCe|QYyW#5aD3dXQXmsS^Mh= zpa;8{^zWI;12CI_Bh0~079-w5?8M}s7sh|VS|YH}%*0$yLMQiMkzc@Gi_Ul!MTGPA z3TYEiNv&bc#lQX+*1+*Th7FBO#Pz?@#fxB!s)8`$V1P&Vki_5vHKbqMs9U+H4KBfK=&@8`&e|gUT zYa4-69GZ>LZQE=xP~eXy>v~D7#gB8))J<9QwelWNs2af)WWYg*^3HZ3z4E~ zhW%(EaCLF?h~c#6Pw%57aU$B6ASC}ot6A6jJ6qBj+ZSKGYLWYJggdPD9F(T8_}qGC zr(RwZlOh41rj3fIyRuhu@}qurZaQ0NdNyw7?pXWyi3Y`SzUsLdoqR8+vV zOc3dUcvVf?ce5!zO2vA4vfyudB32CwoHMzVG#1xF+X$-k$fIDeLKeK6T$<0OeeIbM zBnciZcL(L)vRy_YgY~djmC95!-g2fW1wQnEZ!3s_;{Z^MZMv_6X&LO>LZWn!E7-)i zjeAcbiqE+Q60RCih8yYjZli6xg%M62esJiMJ}A%)iS}|0kCfd+4}VqXAEt(G@jJ|) zdz^GSVWgf#SEB>p9~jkX-BHv0V;BFpWMOge8CQ6{3$Yzf3x2){|iT@to4J^K>h+#T~1Mfa_cE@I0H==^``fai=%`r+7+U@S-5J1 zrfo2GiFnpadnNN)1gHBa;U!0-f-+AA$`72}ls+V#+G}%c zpZ5AKZ3>a`#AtgYAeMU|ZA)d$Dm`C5TIL_{jJw)@!ZYOl)F$wiEAM}Ps;^`<*W-*883t5^|#)~6L zn3%7IHN<8q7Q-E&3A3iwT!#zw5#?`q32CjRn6%jiIsX7uR7g@-qo5W{(r|YtDGEl3rCUSO_VxawbhwB0F~TO*ahZKws6+ zf5H!JEbR84mba>kg|f0j`c?;@RdY!VdHm*={N^G`Rcc0cl_p_uj)S3(5y5)_ruJu&&OyY{$3!zL2*pJX`T1fDx4wUH2m0dx zB^tb(;mhUM%Cw?I9F@>RuD)bf{^TEi&-XRy7VEgjPU&okw~@eZlAmnxseKWNpo_&z z7n7OWuKXDBCUz~~<^dP8KFak#n4AJ$_1S-=OtksTDlkdDumcIs%vqoiIRUO2o&l@h zA&G7$vIIOlViV!*vXGv-pN;a!XvpH-`nK_-# z%i*ll@Sj!N zr4H$ZeB$gYw_;{0Hi`%V-^a?D+L)kDYoyihM;wH3Du@^g4H&CRWNy$zHB$|MfV6RV z8^2(Wm`ZA$(Hx$*ETK#fq|sc5wPJoyV!B=uy-{NBacGv=e1@}EqUBp@|!dkkMi+`lBVQa{*+He zlk!4sKKAfV&*$Ct9nbxvhTG@Q>;>f~URVC?ccl~4r*OXItBGP7L-qsmbZDG*o?X7= zk~YYkxRoAi-`E`)9;grr??f22x9 z3-dk+CC*WCect@c#H;mBaC+**fheB!ai(&2x>}i2vTgiG6=lt#3T4&t(om=9wq

m86g)nrFP4rrcN!oP?K}joSgcuP5@g_3= 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
  • M8b^5HdglzC*7$#7timQ$NkLV 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"); + return; + } + Class c = Class.forName(args[0]); + System.out.println("CLASS " + c.getName()); + System.out.println("FIELDS:"); + for (Field f : c.getDeclaredFields()) { + System.out.println(" " + Modifier.toString(f.getModifiers()) + " " + f.getType().getTypeName() + " " + f.getName()); + } + System.out.println("CTORS:"); + for (Constructor k : c.getDeclaredConstructors()) { + System.out.println(" " + Modifier.toString(k.getModifiers()) + " " + c.getSimpleName() + "(" + params(k.getParameterTypes()) + ")"); + } + System.out.println("METHODS:"); + for (Method m : c.getDeclaredMethods()) { + System.out.println(" " + Modifier.toString(m.getModifiers()) + " " + m.getReturnType().getTypeName() + " " + m.getName() + "(" + params(m.getParameterTypes()) + ")"); + } + } + private static String params(Class[] ps) { + StringBuilder sb = new StringBuilder(); + for (int i=0;i0) sb.append(", "); + sb.append(ps[i].getTypeName()); + } + return sb.toString(); + } +} diff --git a/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java b/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java index c8b7788b..9aa69dc0 100644 --- a/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java +++ b/src/main/java/dev/notalpha/dashloader/client/DashLoaderClient.java @@ -8,31 +8,16 @@ import dev.notalpha.dashloader.client.blockstate.DashBlockState; import dev.notalpha.dashloader.client.font.*; import dev.notalpha.dashloader.client.identifier.DashIdentifier; -import dev.notalpha.dashloader.client.identifier.DashModelIdentifier; import dev.notalpha.dashloader.client.identifier.DashSpriteIdentifier; -import dev.notalpha.dashloader.client.model.DashBasicBakedModel; -import dev.notalpha.dashloader.client.model.DashMultipartBakedModel; -import dev.notalpha.dashloader.client.model.DashWeightedBakedModel; import dev.notalpha.dashloader.client.model.ModelModule; -import dev.notalpha.dashloader.client.model.components.DashBakedQuad; -import dev.notalpha.dashloader.client.model.components.DashBakedQuadCollection; -import dev.notalpha.dashloader.client.model.components.DashModelBakeSettings; import dev.notalpha.dashloader.client.model.predicates.*; -import dev.notalpha.dashloader.client.shader.*; +import dev.notalpha.dashloader.client.shader.ShaderModule; import dev.notalpha.dashloader.client.splash.SplashModule; -import dev.notalpha.dashloader.client.sprite.content.DashImage; -import dev.notalpha.dashloader.client.sprite.content.DashSprite; -import dev.notalpha.dashloader.client.sprite.content.DashSpriteContents; -import dev.notalpha.dashloader.client.sprite.content.SpriteContentModule; -import dev.notalpha.dashloader.client.sprite.stitch.SpriteStitcherModule; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.client.renderer.block.model.multipart.AndCondition; +import net.minecraft.client.renderer.block.model.multipart.CombinedCondition; import net.minecraft.client.renderer.block.model.multipart.Condition; -import net.minecraft.client.renderer.block.model.multipart.OrCondition; import net.minecraft.client.renderer.block.model.multipart.KeyValueCondition; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.Material; -import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.resources.ResourceLocation; import java.nio.file.Path; @@ -59,27 +44,15 @@ public void onDashLoaderInit(CacheFactory factory) { factory.addModule(new ModelModule()); factory.addModule(new ShaderModule()); factory.addModule(new SplashModule()); - factory.addModule(new SpriteStitcherModule()); - factory.addModule(new SpriteContentModule()); factory.addMissingHandler(ResourceLocation.class, (identifier, registryWriter) -> new DashIdentifier(identifier)); - factory.addMissingHandler(ModelResourceLocation.class, (moduleIdentifier, registryWriter) -> new DashModelIdentifier(moduleIdentifier)); factory.addMissingHandler(Material.class, DashSpriteIdentifier::new); - - factory.addMissingHandler( - TextureAtlasSprite.class, - DashSprite::new - ); factory.addMissingHandler( Condition.class, (selector, writer) -> { - if (selector == Condition.TRUE) { - return new DashStaticPredicate(true); - } else if (selector == Condition.FALSE) { - return new DashStaticPredicate(false); - } else if (selector instanceof AndCondition s) { + if (selector instanceof CombinedCondition s && s.operation() == CombinedCondition.Operation.AND) { return new DashAndPredicate(s, writer); - } else if (selector instanceof OrCondition s) { + } else if (selector instanceof CombinedCondition s && s.operation() == CombinedCondition.Operation.OR) { return new DashOrPredicate(s, writer); } else if (selector instanceof KeyValueCondition s) { return new DashSimplePredicate(s); @@ -94,34 +67,18 @@ public void onDashLoaderInit(CacheFactory factory) { //noinspection unchecked for (Class> aClass : new Class[]{ DashIdentifier.class, - DashModelIdentifier.class, - DashBasicBakedModel.class, - DashModelBakeSettings.class, - DashMultipartBakedModel.class, - DashWeightedBakedModel.class, - DashBakedQuad.class, - DashBakedQuadCollection.class, DashSpriteIdentifier.class, DashAndPredicate.class, DashOrPredicate.class, DashSimplePredicate.class, DashStaticPredicate.class, - DashImage.class, - DashSprite.class, - DashSpriteContents.class, DashBitmapFont.class, DashBlankFont.class, DashSpaceFont.class, DashTrueTypeFont.class, DashUnihexFont.class, DashFontFilterPair.class, - DashBlockState.class, -// DashPostEffectPipeline.class, - DashShaderProgramDefinition.class, - DashShaderProgramDefinitionUniform.class, - DashDefines.class, - DashShaderProgramKey.class, - DashShaderSourceKey.class + DashBlockState.class }) { factory.addDashObject(aClass); } diff --git a/src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java b/src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java index 362689cf..3adab8a3 100644 --- a/src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java +++ b/src/main/java/dev/notalpha/dashloader/client/ModMenuCompat.java @@ -2,12 +2,11 @@ import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; -import dev.notalpha.dashloader.client.ui.ConfigScreen; import net.minecraft.client.gui.screens.Screen; public class ModMenuCompat implements ModMenuApi { @Override public ConfigScreenFactory getModConfigScreenFactory() { - return ConfigScreen::new; + return parent -> parent; } } diff --git a/src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java b/src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java index 03b71476..0ff3db0a 100644 --- a/src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/atlas/AtlasModule.java @@ -47,7 +47,7 @@ public void load(Data data, RegistryReader reader, StepTask t) { HashMap>> out = new HashMap<>(); - var maxMipLevel = Minecraft.getInstance().options.getMipmapLevels().getValue(); + var maxMipLevel = Minecraft.getInstance().options.mipmapLevels().get(); for (String atlasId : data.atlasIds) { var tasks = new ArrayList>(); diff --git a/src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java b/src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java index 444349f8..9f42ab3a 100644 --- a/src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java +++ b/src/main/java/dev/notalpha/dashloader/client/blockstate/DashBlockState.java @@ -9,7 +9,7 @@ import net.minecraft.resources.ResourceLocation; public final class DashBlockState implements DashObject { - public static final ResourceLocation ITEM_FRAME = ResourceLocation.of("dashloader", "itemframewhy"); + public static final ResourceLocation ITEM_FRAME = ResourceLocation.fromNamespaceAndPath("dashloader", "itemframewhy"); public final int owner; public final int pos; @@ -24,7 +24,7 @@ public DashBlockState(BlockState blockState, RegistryWriter writer) { ResourceLocation owner = null; { - var states = ModelLoaderAccessor.getTheItemFrameThing().getStates(); + var states = ModelLoaderAccessor.getTheItemFrameThing().getPossibleStates(); for (int i = 0; i < states.size(); i++) { BlockState state = states.get(i); if (state.equals(blockState)) { @@ -36,12 +36,12 @@ public DashBlockState(BlockState blockState, RegistryWriter writer) { } if (pos == -1) { - var states = block.getStateDefinition().getStates(); + var states = block.getStateDefinition().getPossibleStates(); for (int i = 0; i < states.size(); i++) { BlockState state = states.get(i); if (state.equals(blockState)) { pos = i; - owner = BuiltInRegistries.BLOCK.getId(block); + owner = BuiltInRegistries.BLOCK.getKey(block); break; } } @@ -60,9 +60,9 @@ public BlockState export(final RegistryReader reader) { final ResourceLocation id = reader.get(this.owner); // if its item frame get its state from the model loader as mojank is mojank if (id.equals(ITEM_FRAME)) { - return ModelLoaderAccessor.getTheItemFrameThing().getStates().get(this.pos); + return ModelLoaderAccessor.getTheItemFrameThing().getPossibleStates().get(this.pos); } else { - return BuiltInRegistries.BLOCK.get(id).getStateDefinition().getStates().get(this.pos); + return BuiltInRegistries.BLOCK.getValue(id).getStateDefinition().getPossibleStates().get(this.pos); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java index 72b56043..75ee28f6 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFont.java @@ -5,7 +5,7 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.BitmapFontAccessor; -import net.minecraft.client.gui.font.GlyphContainer; +import net.minecraft.client.gui.font.CodepointMap; import net.minecraft.client.gui.font.providers.BitmapProvider; import java.util.ArrayList; @@ -24,14 +24,11 @@ public DashBitmapFont(BitmapProvider bitmapFont, RegistryWriter writer) { BitmapFontAccessor font = ((BitmapFontAccessor) bitmapFont); this.image = writer.add(font.getImage()); this.glyphs = new IntObjectList<>(new ArrayList<>()); -font.getGlyphs().forEachGlyph((integer, bitmapFontGlyph) -> this.glyphs.put(integer, new DashBitmapFontGlyph(bitmapFontGlyph, writer))); +font.getGlyphs().forEach((integer, bitmapFontGlyph) -> this.glyphs.put(integer, new DashBitmapFontGlyph(bitmapFontGlyph, writer))); } public BitmapProvider export(RegistryReader reader) { -GlyphContainer out = new GlyphContainer<>( -BitmapProvider.BitmapFontGlyph[]::new, -BitmapProvider.BitmapFontGlyph[][]::new -); +CodepointMap out = new CodepointMap<>(Object[]::new, size -> new Object[size][]); this.glyphs.forEach((key, value) -> out.put(key, value.export(reader))); return BitmapFontAccessor.init(reader.get(this.image), out); } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java index 4b9bd2da..3e027dc4 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBitmapFontGlyph.java @@ -3,7 +3,6 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.BitmapFontGlyphAccessor; -import net.minecraft.client.gui.font.providers.BitmapProvider; public final class DashBitmapFontGlyph { public final float scaleFactor; @@ -26,8 +25,8 @@ public DashBitmapFontGlyph(float scaleFactor, int image, int x, int y, int width this.ascent = ascent; } -public DashBitmapFontGlyph(BitmapProvider.BitmapFontGlyph bitmapFontGlyph, RegistryWriter writer) { -BitmapFontGlyphAccessor font = ((BitmapFontGlyphAccessor) (Object) bitmapFontGlyph); +public DashBitmapFontGlyph(Object bitmapFontGlyph, RegistryWriter writer) { +BitmapFontGlyphAccessor font = ((BitmapFontGlyphAccessor) bitmapFontGlyph); this.scaleFactor = font.getScaleFactor(); this.image = writer.add(font.getImage()); this.x = font.getX(); @@ -38,7 +37,7 @@ public DashBitmapFontGlyph(BitmapProvider.BitmapFontGlyph bitmapFontGlyph, Regis this.ascent = font.getAscent(); } -public BitmapProvider.BitmapFontGlyph export(RegistryReader handler) { +public Object export(RegistryReader handler) { return BitmapFontGlyphAccessor.init(this.scaleFactor, handler.get(this.image), this.x, this.y, this.width, this.height, this.advance, this.ascent); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java index 8c440f89..89d01a94 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashBlankFont.java @@ -2,11 +2,11 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; -import net.minecraft.client.gui.font.providers.BlankProvider; +import net.minecraft.client.gui.font.AllMissingGlyphProvider; -public final class DashBlankFont implements DashObject { +public final class DashBlankFont implements DashObject { @Override -public BlankProvider export(RegistryReader exportHandler) { -return new BlankProvider(); +public AllMissingGlyphProvider export(RegistryReader exportHandler) { +return new AllMissingGlyphProvider(); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java b/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java index b66de726..d30267b8 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashFontFilterPair.java @@ -5,13 +5,13 @@ import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.mixin.accessor.FilterMapAccessor; -import net.minecraft.client.gui.font.FontFilterType; -import net.minecraft.client.gui.font.providers.GlyphProvider; +import com.mojang.blaze3d.font.GlyphProvider; +import net.minecraft.client.gui.font.FontOption; import java.util.HashMap; import java.util.Map; -public class DashFontFilterPair implements DashObject { +public class DashFontFilterPair implements DashObject { public final int provider; public final IntIntList filter; @@ -20,18 +20,18 @@ public DashFontFilterPair(int provider, IntIntList filter) { this.filter = filter; } -public DashFontFilterPair(GlyphProvider.FilterPair fontFilterPair, RegistryWriter writer) { +public DashFontFilterPair(GlyphProvider.Conditional fontFilterPair, RegistryWriter writer) { this.provider = writer.add(fontFilterPair.provider()); filter = new IntIntList(); -((FilterMapAccessor) fontFilterPair.filter()).getActiveFilters().forEach( +((FilterMapAccessor) fontFilterPair.filter()).getValues().forEach( (key, value) -> filter.put(key.ordinal(), value ? 1 : 0)); } @Override -public GlyphProvider.FilterPair export(RegistryReader reader) { -Map activeFilters = new HashMap<>(); -filter.forEach((key, value) -> activeFilters.put(FontFilterType.values()[key], value == 1)); -return new GlyphProvider.FilterPair(reader.get(provider), new FontFilterType.FilterMap(activeFilters)); +public GlyphProvider.Conditional export(RegistryReader reader) { +Map activeFilters = new HashMap<>(); +filter.forEach((key, value) -> activeFilters.put(FontOption.values()[key], value == 1)); +return new GlyphProvider.Conditional(reader.get(provider), new FontOption.Filter(activeFilters)); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java index 2352d0f3..452d467a 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashSpaceFont.java @@ -2,10 +2,10 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; -import it.unimi.dsi.fastutil.ints.Int2FloatArrayMap; +import com.mojang.blaze3d.font.SpaceProvider; import it.unimi.dsi.fastutil.ints.IntSet; -import net.minecraft.client.gui.font.glyphs.GlyphInfo; -import net.minecraft.client.gui.font.providers.SpaceProvider; +import java.util.HashMap; +import java.util.Map; public final class DashSpaceFont implements DashObject { public final int[] ints; @@ -17,21 +17,25 @@ public DashSpaceFont(int[] ints, float[] floats) { } public DashSpaceFont(SpaceProvider font) { -IntSet glyphs = font.getProvidedGlyphs(); +IntSet glyphs = font.getSupportedGlyphs(); this.ints = new int[glyphs.size()]; this.floats = new float[glyphs.size()]; int i = 0; for (Integer providedGlyph : glyphs) { -GlyphInfo glyph = font.getGlyph(providedGlyph); +var glyph = font.getGlyph(providedGlyph); assert glyph != null; this.ints[i] = providedGlyph; -this.floats[i] = glyph.getAdvance(); +this.floats[i] = glyph.info().getAdvance(); i++; } } @Override public SpaceProvider export(RegistryReader exportHandler) { -return new SpaceProvider(new Int2FloatArrayMap(ints, floats)); +Map map = new HashMap<>(this.ints.length); +for (int i = 0; i < this.ints.length; i++) { + map.put(this.ints[i], this.floats[i]); +} +return new SpaceProvider(map); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java index 146ba7ad..bc54382f 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashTrueTypeFont.java @@ -1,17 +1,15 @@ package dev.notalpha.dashloader.client.font; +import com.mojang.blaze3d.font.TrueTypeGlyphProvider; import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.io.IOHelper; -import dev.notalpha.dashloader.misc.UnsafeHelper; -import dev.notalpha.dashloader.mixin.accessor.TrueTypeFontAccessor; -import it.unimi.dsi.fastutil.ints.IntArraySet; +import dev.notalpha.dashloader.mixin.accessor.TrueTypeGlyphProviderAccessor; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.font.FreeTypeUtil; -import net.minecraft.client.gui.font.GlyphContainer; -import net.minecraft.client.gui.font.TrueTypeFont; +import net.minecraft.client.gui.font.providers.FreeTypeUtil; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.Resource; import org.lwjgl.PointerBuffer; import org.lwjgl.system.MemoryStack; import org.lwjgl.system.MemoryUtil; @@ -21,120 +19,90 @@ import java.io.IOException; import java.nio.ByteBuffer; -import java.nio.IntBuffer; import java.util.Optional; -public final class DashTrueTypeFont implements DashObject { +public final class DashTrueTypeFont implements DashObject { public final byte[] fontData; + public final float size; public final float oversample; - public final int[] excludedCharacters; - public final int size; + public final String skip; public final float shiftX; public final float shiftY; - private transient TrueTypeFont _font; - public DashTrueTypeFont(byte[] fontData, float oversample, int[] excludedCharacters, int size, float shiftX, float shiftY) { + public DashTrueTypeFont(byte[] fontData, float size, float oversample, String skip, float shiftX, float shiftY) { this.fontData = fontData; - this.oversample = oversample; - this.excludedCharacters = excludedCharacters; this.size = size; + this.oversample = oversample; + this.skip = skip; this.shiftX = shiftX; this.shiftY = shiftY; } - public DashTrueTypeFont(TrueTypeFont font) { - TrueTypeFontAccessor fontAccess = (TrueTypeFontAccessor) font; - FT_Face ft_face = fontAccess.getFace(); - FontPrams prams = FontModule.FONT_TO_DATA.get(CacheStatus.SAVE).get(ft_face); - final ResourceLocation ttFont = prams.id(); + public DashTrueTypeFont(TrueTypeGlyphProvider font) { + TrueTypeGlyphProviderAccessor fontAccess = (TrueTypeGlyphProviderAccessor) font; + FT_Face ftFace = fontAccess.getFace(); + FontPrams params = FontModule.FONT_TO_DATA.get(CacheStatus.SAVE).get(ftFace); + if (params == null) { + throw new IllegalStateException("Missing cached font parameters for TrueType provider"); + } + byte[] data = null; try { - Optional resource = Minecraft.getInstance().getResourceManager().getResource(ttFont.withPrefixedPath("font/")); + Optional resource = Minecraft.getInstance().getResourceManager().getResource(params.id().withPrefix("font/")); if (resource.isPresent()) { - var stream = resource.get().getInputStream(); - data = IOHelper.streamToArray(stream); - stream.close(); + try (var stream = resource.get().open()) { + data = IOHelper.streamToArray(stream); + } } } catch (IOException e) { - e.printStackTrace(); + throw new RuntimeException("Failed to read TrueType font resource", e); + } + if (data == null) { + throw new IllegalStateException("TrueType font resource was not found"); } try (MemoryStack memoryStack = MemoryStack.stackPush()) { FT_Vector vec = FT_Vector.malloc(memoryStack); - FreeType.FT_Get_Transform(ft_face, null, vec); + FreeType.FT_Get_Transform(ftFace, null, vec); this.shiftX = vec.x() / 64F; this.shiftY = vec.y() / 64F; } this.fontData = data; + this.size = params.size(); + this.skip = params.skip(); this.oversample = fontAccess.getOversample(); - this.excludedCharacters = prams.skip().codePoints().toArray(); - this.size = Math.round(prams.size() * this.oversample); } @Override - public TrueTypeFont export(RegistryReader handler) { - this._font = UnsafeHelper.allocateInstance(TrueTypeFont.class); - - TrueTypeFontAccessor trueTypeFontAccess = (TrueTypeFontAccessor) this._font; - trueTypeFontAccess.setOversample(this.oversample); - return this._font; - } - - @Override - public void postExport(RegistryReader reader) { + public TrueTypeGlyphProvider export(RegistryReader handler) { ByteBuffer fontBuffer = MemoryUtil.memAlloc(this.fontData.length); fontBuffer.put(this.fontData); fontBuffer.flip(); - FT_Face ft_face = null; - - var trueTypeFontAccess = (TrueTypeFontAccessor) this._font; - var set = new IntArraySet(excludedCharacters); - - var container = new GlyphContainer<>(TrueTypeFont.LazyGlyph[]::new, TrueTypeFont.LazyGlyph[][]::new); - + FT_Face ftFace = null; try { - synchronized (FreeTypeUtil.LOCK) { + synchronized (FreeTypeUtil.LIBRARY_LOCK) { try (MemoryStack memoryStack = MemoryStack.stackPush()) { PointerBuffer pointerBuffer = memoryStack.mallocPointer(1); - FreeTypeUtil.checkFatalError(FreeType.FT_New_Memory_Face(FreeTypeUtil.initialize(), fontBuffer, 0L, pointerBuffer), "Initializing font face"); - ft_face = FT_Face.create(pointerBuffer.get()); - - FreeType.FT_Set_Pixel_Sizes(ft_face, this.size, this.size); - - FT_Vector vec = FreeTypeUtil.set(FT_Vector.malloc(memoryStack), this.shiftX, this.shiftY); - FreeType.FT_Set_Transform(ft_face, null, vec); - - IntBuffer intBuffer = memoryStack.mallocInt(1); - int j = (int) FreeType.FT_Get_First_Char(ft_face, intBuffer); - - while (true) { - int k = intBuffer.get(0); - if (k == 0) { - break; - } - - if (!set.contains(j)) { - container.put(j, new TrueTypeFont.LazyGlyph(k)); - } + FreeTypeUtil.assertError(FreeType.FT_New_Memory_Face(FreeTypeUtil.getLibrary(), fontBuffer, 0L, pointerBuffer), "Initializing font face"); + ftFace = FT_Face.create(pointerBuffer.get()); + } - j = (int) FreeType.FT_Get_Next_Char(ft_face, j, intBuffer); - } + String format = FreeType.FT_Get_Font_Format(ftFace); + if (!"TrueType".equals(format)) { + throw new IllegalStateException("Font is not in TTF format, was " + format); } + FreeTypeUtil.assertError(FreeType.FT_Select_Charmap(ftFace, FreeType.FT_ENCODING_UNICODE), "Find unicode charmap"); + return new TrueTypeGlyphProvider(fontBuffer, ftFace, this.size, this.oversample, this.shiftX, this.shiftY, this.skip); } - - trueTypeFontAccess.setContainer(container); - trueTypeFontAccess.setFace(ft_face); - trueTypeFontAccess.setBuffer(fontBuffer); } catch (Throwable e) { - synchronized (FreeTypeUtil.LOCK) { - if (ft_face != null) { - FreeType.FT_Done_Face(ft_face); + synchronized (FreeTypeUtil.LIBRARY_LOCK) { + if (ftFace != null) { + FreeType.FT_Done_Face(ftFace); } } MemoryUtil.memFree(fontBuffer); - throw e; } } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java b/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java index b0f33a4f..95b0e679 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/DashUnihexFont.java @@ -4,48 +4,128 @@ import dev.notalpha.dashloader.api.collection.IntObjectList; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.mixin.accessor.UnihexFontAccessor; -import net.minecraft.client.gui.font.GlyphContainer; -import net.minecraft.client.gui.font.UnihexFont; +import dev.notalpha.dashloader.mixin.accessor.UnihexProviderAccessor; +import net.minecraft.client.gui.font.CodepointMap; +import net.minecraft.client.gui.font.providers.UnihexProvider; -public final class DashUnihexFont implements DashObject { - public final IntObjectList glyphs; +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; - public DashUnihexFont(IntObjectList glyphs) { +public final class DashUnihexFont implements DashObject { + public final IntObjectList glyphs; + + public DashUnihexFont(IntObjectList glyphs) { this.glyphs = glyphs; } - public DashUnihexFont(UnihexFont rawFont, RegistryWriter writer) { + public DashUnihexFont(UnihexProvider rawFont, RegistryWriter writer) { this.glyphs = new IntObjectList<>(); - var font = ((UnihexFontAccessor) rawFont); - var fontImages = font.getGlyphs(); - fontImages.forEachGlyph(this.glyphs::put); + var font = ((UnihexProviderAccessor) rawFont); + font.getGlyphs().forEach((codepoint, glyph) -> this.glyphs.put(codepoint, new DashUnicodeTextureGlyph(glyph))); } - public UnihexFont export(RegistryReader handler) { - GlyphContainer container = new GlyphContainer<>( - UnihexFont.UnicodeTextureGlyph[]::new, - UnihexFont.UnicodeTextureGlyph[][]::new - ); - this.glyphs.forEach(container::put); - return UnihexFontAccessor.create(container); + @Override + public UnihexProvider export(RegistryReader handler) { + CodepointMap container = new CodepointMap<>(Object[]::new, i -> new Object[i][]); + this.glyphs.forEach((codepoint, glyph) -> container.put(codepoint, glyph.exportGlyph())); + return UnihexProviderAccessor.create(container); } public static class DashUnicodeTextureGlyph { - public final UnihexFont.BitmapGlyph contents; + public final byte[] bytes; + public final short[] shorts; + public final int[] ints; + public final int bitWidth; public final int left; public final int right; - public DashUnicodeTextureGlyph(UnihexFont.BitmapGlyph contents, int left, int right) { - this.contents = contents; + public DashUnicodeTextureGlyph(byte[] bytes, short[] shorts, int[] ints, int bitWidth, int left, int right) { + this.bytes = bytes; + this.shorts = shorts; + this.ints = ints; + this.bitWidth = bitWidth; this.left = left; this.right = right; } - public DashUnicodeTextureGlyph(UnihexFont.UnicodeTextureGlyph glyph) { - this.contents = glyph.contents(); - this.left = glyph.left(); - this.right = glyph.right(); + public DashUnicodeTextureGlyph(Object glyph) { + try { + Class glyphClass = glyph.getClass(); + Method contentsMethod = glyphClass.getDeclaredMethod("contents"); + Method leftMethod = glyphClass.getDeclaredMethod("left"); + Method rightMethod = glyphClass.getDeclaredMethod("right"); + contentsMethod.setAccessible(true); + leftMethod.setAccessible(true); + rightMethod.setAccessible(true); + + Object contents = contentsMethod.invoke(glyph); + Method bitWidthMethod = contents.getClass().getMethod("bitWidth"); + Method lineMethod = contents.getClass().getMethod("line", int.class); + int width = (int) bitWidthMethod.invoke(contents); + + this.left = (int) leftMethod.invoke(glyph); + this.right = (int) rightMethod.invoke(glyph); + this.bitWidth = width; + + if (width == 8) { + this.bytes = new byte[16]; + for (int i = 0; i < 16; i++) { + int line = (int) lineMethod.invoke(contents, i); + this.bytes[i] = (byte) (line >>> 24); + } + this.shorts = null; + this.ints = null; + } else if (width == 16) { + this.shorts = new short[16]; + for (int i = 0; i < 16; i++) { + int line = (int) lineMethod.invoke(contents, i); + this.shorts[i] = (short) (line >>> 16); + } + this.bytes = null; + this.ints = null; + } else { + this.ints = new int[16]; + for (int i = 0; i < 16; i++) { + this.ints[i] = (int) lineMethod.invoke(contents, i); + } + this.bytes = null; + this.shorts = null; + } + } catch (ReflectiveOperationException e) { + throw new RuntimeException("Failed to snapshot Unihex glyph", e); + } + } + + public Object exportGlyph() { + try { + Object lineData = this.exportLineData(); + Class lineDataClass = Class.forName("net.minecraft.client.gui.font.providers.UnihexProvider$LineData"); + Class glyphClass = Class.forName("net.minecraft.client.gui.font.providers.UnihexProvider$Glyph"); + Constructor glyphCtor = glyphClass.getDeclaredConstructor(lineDataClass, int.class, int.class); + glyphCtor.setAccessible(true); + return glyphCtor.newInstance(lineData, this.left, this.right); + } catch (ReflectiveOperationException e) { + throw new RuntimeException("Failed to rebuild Unihex glyph", e); + } + } + + private Object exportLineData() throws ReflectiveOperationException { + if (this.bitWidth == 8) { + Class byteClass = Class.forName("net.minecraft.client.gui.font.providers.UnihexProvider$ByteContents"); + Constructor ctor = byteClass.getDeclaredConstructor(byte[].class); + ctor.setAccessible(true); + return ctor.newInstance((Object) this.bytes); + } + if (this.bitWidth == 16) { + Class shortClass = Class.forName("net.minecraft.client.gui.font.providers.UnihexProvider$ShortContents"); + Constructor ctor = shortClass.getDeclaredConstructor(short[].class); + ctor.setAccessible(true); + return ctor.newInstance((Object) this.shorts); + } + Class intClass = Class.forName("net.minecraft.client.gui.font.providers.UnihexProvider$IntContents"); + Constructor ctor = intClass.getDeclaredConstructor(int[].class, int.class); + ctor.setAccessible(true); + return ctor.newInstance(this.ints, this.bitWidth); } } } diff --git a/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java b/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java index 651fce68..a9c926e1 100644 --- a/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/font/FontModule.java @@ -10,7 +10,7 @@ import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.config.Option; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.gui.font.providers.GlyphProvider; +import com.mojang.blaze3d.font.GlyphProvider; import net.minecraft.resources.ResourceLocation; import org.lwjgl.util.freetype.FT_Face; @@ -35,7 +35,7 @@ public Data save(RegistryWriter factory, StepTask task) { assert providerIndex != null; int taskSize = 0; -for (List value : providerIndex.providers.values()) { +for (List value : providerIndex.providers.values()) { taskSize += value.size(); } taskSize += providerIndex.allProviders.size(); @@ -44,7 +44,7 @@ public Data save(RegistryWriter factory, StepTask task) { var providers = new IntObjectList>(); providerIndex.providers.forEach((identifier, fontFilterPairs) -> { var values = new ArrayList(); -for (GlyphProvider.FilterPair fontFilterPair : fontFilterPairs) { +for (GlyphProvider.Conditional fontFilterPair : fontFilterPairs) { values.add(factory.add(fontFilterPair)); task.next(); } @@ -64,7 +64,7 @@ public Data save(RegistryWriter factory, StepTask task) { public void load(Data data, RegistryReader reader, StepTask task) { ProviderIndex index = new ProviderIndex(new HashMap<>(), new ArrayList<>()); data.fontMap.providers.forEach((key, value) -> { -var fonts = new ArrayList(); +var fonts = new ArrayList(); for (Integer i : value) { fonts.add(reader.get(i)); } @@ -104,10 +104,10 @@ public DashProviderIndex(IntObjectList> providers, List a } public static final class ProviderIndex { -public final Map> providers; +public final Map> providers; public final List allProviders; -public ProviderIndex(Map> providers, List allProviders) { +public ProviderIndex(Map> providers, List allProviders) { this.providers = providers; this.allProviders = allProviders; } diff --git a/src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java b/src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java deleted file mode 100644 index 30f285c2..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/identifier/DashModelIdentifier.java +++ /dev/null @@ -1,49 +0,0 @@ -package dev.notalpha.dashloader.client.identifier; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.mixin.accessor.IdentifierAccessor; -import net.minecraft.client.resources.model.ModelResourceLocation; - -public final class DashModelIdentifier implements DashObject { - public final String namespace; - public final String path; - public final String variant; - - public DashModelIdentifier(ModelResourceLocation identifier) { - this.namespace = identifier.id().getNamespace(); - this.path = identifier.id().getPath(); - this.variant = identifier.getVariant(); - } - - public DashModelIdentifier(String namespace, String path, String variant) { - this.namespace = namespace; - this.path = path; - this.variant = variant; - } - - @Override - public ModelResourceLocation export(RegistryReader exportHandler) { - return new ModelResourceLocation(IdentifierAccessor.init(this.namespace, this.path), variant); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashModelIdentifier that = (DashModelIdentifier) o; - - if (!namespace.equals(that.namespace)) return false; - if (!path.equals(that.path)) return false; - return variant.equals(that.variant); - } - - @Override - public int hashCode() { - int result = namespace.hashCode(); - result = 31 * result + path.hashCode(); - result = 31 * result + variant.hashCode(); - return result; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java deleted file mode 100644 index b23bf0eb..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/DashBasicBakedModel.java +++ /dev/null @@ -1,154 +0,0 @@ -package dev.notalpha.dashloader.client.model; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.collection.ObjectObjectList; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.client.Dazy; -import dev.notalpha.dashloader.client.model.components.BakedQuadCollection; -import dev.notalpha.dashloader.client.model.components.DashBakedQuadCollection; -import dev.notalpha.dashloader.client.model.components.DashModelTransformation; -import dev.notalpha.dashloader.client.sprite.content.DashSprite; -import dev.notalpha.dashloader.mixin.accessor.BasicBakedModelAccessor; -import dev.notalpha.hyphen.scan.annotations.DataNullable; -import java.util.function.Function; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.SimpleBakedModel; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.Material; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -public final class DashBasicBakedModel implements DashObject { - public final int quads; - public final ObjectObjectList faceQuads; - public final boolean usesAo; - public final boolean hasDepth; - public final boolean isSideLit; - @DataNullable - public final DashModelTransformation transformation; - public final int spritePointer; - - public DashBasicBakedModel(int quads, - ObjectObjectList faceQuads, - boolean usesAo, boolean hasDepth, boolean isSideLit, - DashModelTransformation transformation, - int spritePointer) { - this.quads = quads; - this.faceQuads = faceQuads; - this.usesAo = usesAo; - this.hasDepth = hasDepth; - this.isSideLit = isSideLit; - this.transformation = transformation; - this.spritePointer = spritePointer; - } - - public DashBasicBakedModel(SimpleBakedModel basicBakedModel, RegistryWriter writer) { - BasicBakedModelAccessor access = ((BasicBakedModelAccessor) basicBakedModel); - - RandomSource random = RandomSource.create(); - this.quads = writer.add(new BakedQuadCollection(basicBakedModel.getQuads(null, null, random))); - this.faceQuads = new ObjectObjectList<>(); - for (Direction value : Direction.values()) { - this.faceQuads.put(value, writer.add(new BakedQuadCollection(basicBakedModel.getQuads(null, value, random)))); - } - - this.usesAo = access.getUsesAo(); - this.hasDepth = access.getHasDepth(); - this.isSideLit = access.getIsSideLit(); - this.transformation = DashModelTransformation.createDashOrReturnNullIfDefault(access.getTransformation()); - this.spritePointer = writer.add(access.getSprite()); - } - - @Override - public DazyImpl export(final RegistryReader reader) { - final DashSprite.DazyImpl sprite = reader.get(this.spritePointer); - final DashBakedQuadCollection.DazyImpl quads = reader.get(this.quads); - - var faceQuads = new HashMap(); - for (var entry : this.faceQuads.list()) { - DashBakedQuadCollection.DazyImpl collection = reader.get(entry.value()); - faceQuads.put(entry.key(), collection); - } - - return new DazyImpl( - quads, - faceQuads, - usesAo, - isSideLit, - hasDepth, - DashModelTransformation.exportOrDefault(this.transformation), - sprite - ); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashBasicBakedModel that = (DashBasicBakedModel) o; - - if (quads != that.quads) return false; - if (usesAo != that.usesAo) return false; - if (hasDepth != that.hasDepth) return false; - if (isSideLit != that.isSideLit) return false; - if (spritePointer != that.spritePointer) return false; - if (!faceQuads.equals(that.faceQuads)) return false; - return Objects.equals(transformation, that.transformation); - } - - @Override - public int hashCode() { - int result = quads; - result = 31 * result + faceQuads.hashCode(); - result = 31 * result + (usesAo ? 1 : 0); - result = 31 * result + (hasDepth ? 1 : 0); - result = 31 * result + (isSideLit ? 1 : 0); - result = 31 * result + (transformation != null ? transformation.hashCode() : 0); - result = 31 * result + spritePointer; - return result; - } - - public static class DazyImpl extends Dazy { - public final DashBakedQuadCollection.DazyImpl quads; - public final Map faceQuads; - public final boolean usesAo; - public final boolean isSideLit; - public final boolean hasDepth; - public final ItemTransforms transformation; - public final DashSprite.DazyImpl sprite; - - public DazyImpl(DashBakedQuadCollection.DazyImpl quads, - Map faceQuads, - boolean usesAo, - boolean isSideLit, - boolean hasDepth, - ItemTransforms transformation, - DashSprite.DazyImpl sprite) { - this.quads = quads; - this.faceQuads = faceQuads; - this.usesAo = usesAo; - this.isSideLit = isSideLit; - this.hasDepth = hasDepth; - this.transformation = transformation; - this.sprite = sprite; - } - - @Override - protected SimpleBakedModel resolve(Function spriteLoader) { - List quads = this.quads.get(spriteLoader); - var faceQuadsOut = new HashMap>(); - this.faceQuads.forEach((direction, dazy) -> faceQuadsOut.put(direction, dazy.get(spriteLoader))); - - TextureAtlasSprite sprite = this.sprite.get(spriteLoader); - return new SimpleBakedModel(quads, faceQuadsOut, usesAo, isSideLit, hasDepth, sprite, transformation); - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java deleted file mode 100644 index beda9696..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/DashMultipartBakedModel.java +++ /dev/null @@ -1,148 +0,0 @@ -package dev.notalpha.dashloader.client.model; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.client.Dazy; -import dev.notalpha.dashloader.mixin.accessor.MultipartBakedModelAccessor; -import dev.notalpha.dashloader.mixin.accessor.MultipartModelComponentAccessor; -import net.minecraft.world.level.block.state.BlockState; -import java.util.function.Function; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.renderer.block.model.MultiPartBakedModel; -import net.minecraft.client.renderer.block.model.multipart.Condition; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.Material; -import net.minecraft.resources.ResourceLocation; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.function.Predicate; - -public class DashMultipartBakedModel implements DashObject { - public final List components; - - public DashMultipartBakedModel(List components) { - this.components = components; - } - - public DashMultipartBakedModel(MultiPartBakedModel model, RegistryWriter writer) { - var access = ((MultipartBakedModelAccessor) model); - var accessComponents = access.getSelectors(); - int size = accessComponents.size(); - this.components = new ArrayList<>(); - - var modelMap = ModelModule.UNBAKED_TO_BAKED_MULTIPART_MODELS.get(CacheStatus.SAVE); - var predicates = ModelModule.MULTIPART_PREDICATES.get(CacheStatus.SAVE); - var pair = predicates.get(modelMap.get(model)); - - var stateManagerIdentifier = ModelModule.getStateManagerIdentifier(pair.getRight()); - for (int i = 0; i < size; i++) { - var componentModel = accessComponents.get(i).model(); - var selector = ((MultipartModelComponentAccessor) pair.getLeft().get(i)).getSelector(); - - this.components.add(new Component( - writer.add(componentModel), - writer.add(selector), - writer.add(stateManagerIdentifier) - )); - } - } - - @Override - public DazyImpl export(RegistryReader reader) { - List componentsOut = new ArrayList<>(this.components.size()); - this.components.forEach(component -> { - Dazy compModel = reader.get(component.model); - ResourceLocation compIdentifier = reader.get(component.identifier); - Condition compSelector = reader.get(component.selector); - Predicate predicate = compSelector.getPredicate(ModelModule.getStateManager(compIdentifier)); - componentsOut.add(new DazyImpl.Component(compModel, predicate)); - }); - return new DazyImpl(componentsOut); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashMultipartBakedModel that = (DashMultipartBakedModel) o; - - return components.equals(that.components); - } - - @Override - public int hashCode() { - return components.hashCode(); - } - - public static final class Component { - public final int model; - public final int selector; - public final int identifier; - - public Component(int model, int selector, int identifier) { - this.model = model; - this.selector = selector; - this.identifier = identifier; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Component component = (Component) o; - - if (model != component.model) return false; - if (selector != component.selector) return false; - return identifier == component.identifier; - } - - @Override - public int hashCode() { - int result = model; - result = 31 * result + selector; - result = 31 * result + identifier; - return result; - } - } - - public static class DazyImpl extends Dazy { - public final List components; - - public DazyImpl(List components) { - this.components = components; - } - - @Override - protected MultiPartBakedModel resolve(Function spriteLoader) { - List componentsOut = new ArrayList<>(this.components.size()); - - for (Component component : components) { - var model = component.model.get(spriteLoader); - var selector = component.selector; - componentsOut.add(new MultiPartBakedModel.Selector(selector, model)); - } - - MultiPartBakedModel multipartBakedModel = new MultiPartBakedModel(componentsOut); - MultipartBakedModelAccessor access = (MultipartBakedModelAccessor) multipartBakedModel; - // Fixes race condition which strangely does not happen in vanilla a ton? - access.setStateCache(Collections.synchronizedMap(access.getStateCache())); - return multipartBakedModel; - } - - public static class Component { - public final Dazy model; - public final Predicate selector; - - public Component(Dazy model, Predicate selector) { - this.model = model; - this.selector = selector; - } - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java deleted file mode 100644 index dc540b5f..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/DashWeightedBakedModel.java +++ /dev/null @@ -1,84 +0,0 @@ -package dev.notalpha.dashloader.client.model; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.client.Dazy; -import dev.notalpha.dashloader.client.model.components.DashWeightedModelEntry; -import dev.notalpha.dashloader.mixin.accessor.WeightedBakedModelAccessor; -import java.util.function.Function; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.renderer.block.model.WeightedBakedModel; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.Material; -import net.minecraft.util.random.DataPool; - -import java.util.ArrayList; -import java.util.List; - -public final class DashWeightedBakedModel implements DashObject { - public final List models; - - public DashWeightedBakedModel(List models) { - this.models = models; - } - - public DashWeightedBakedModel(WeightedBakedModel model, RegistryWriter writer) { - this.models = new ArrayList<>(); - for (var weightedModel : ((WeightedBakedModelAccessor) model).getModels().getEntries()) { - this.models.add(new DashWeightedModelEntry(weightedModel, writer)); - } - } - - @Override - public DazyImpl export(RegistryReader reader) { - var modelsOut = new ArrayList(); - for (DashWeightedModelEntry model : this.models) { - modelsOut.add(model.export(reader)); - } - return new DazyImpl(modelsOut); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashWeightedBakedModel that = (DashWeightedBakedModel) o; - - return models.equals(that.models); - } - - @Override - public int hashCode() { - return models.hashCode(); - } - - public static class DazyImpl extends Dazy { - public final List entries; - - public DazyImpl(List entries) { - this.entries = entries; - } - - @Override - protected WeightedBakedModel resolve(Function spriteLoader) { - DataPool.Builder models = DataPool.builder(); - for (Entry entry : this.entries) { - BakedModel model = entry.model.get(spriteLoader); - models.add(model, entry.weight); - } - return new WeightedBakedModel(models.build()); - } - - public static class Entry { - public final int weight; - public final Dazy model; - - public Entry(int weight, Dazy model) { - this.weight = weight; - this.model = model; - } - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java b/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java index ec24130a..bd4f706d 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/ModelModule.java @@ -1,263 +1,25 @@ package dev.notalpha.dashloader.client.model; -import dev.notalpha.dashloader.DashLoader; -import dev.notalpha.dashloader.api.CachingData; import dev.notalpha.dashloader.api.DashModule; import dev.notalpha.dashloader.api.cache.Cache; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.api.collection.IntIntList; -import dev.notalpha.dashloader.api.collection.IntObjectList; -import dev.notalpha.dashloader.api.collection.ObjectIntList; -import dev.notalpha.dashloader.api.registry.RegistryAddException; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.client.Dazy; -import dev.notalpha.dashloader.client.model.components.DashModelBakeSettings; -import dev.notalpha.dashloader.client.model.fallback.MultiUnbakedBakedModel; -import dev.notalpha.dashloader.client.model.fallback.UnbakedBakedGroupableModel; -import dev.notalpha.dashloader.client.model.fallback.UnbakedBakedModel; import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.config.Option; -import dev.notalpha.dashloader.mixin.accessor.ModelLoaderAccessor; import dev.notalpha.taski.builtin.StepTask; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import it.unimi.dsi.fastutil.ints.IntArrayList; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.client.renderer.block.model.*; -import net.minecraft.client.renderer.block.model.multipart.Condition; -import net.minecraft.client.resources.model.ModelResourceLocation; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.resources.ResourceLocation; -import org.apache.commons.lang3.tuple.Pair; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; public class ModelModule implements DashModule { - public static final CachingData> BAKED_MODEL_PARTS = new CachingData<>(CacheStatus.SAVE); - - public static final CachingData> BLOCK_MODELS_SAVE = new CachingData<>(CacheStatus.SAVE); - public static final CachingData> RAW_BLOCK_MODELS = new CachingData<>(CacheStatus.SAVE); - -// public static final CachingData> ITEM_MODELS_SAVE = new CachingData<>(CacheStatus.SAVE); -// public static final CachingData> ITEM_PROPERTIES = new CachingData<>(CacheStatus.SAVE); - - public static final CachingData> MODEL_PARTS = new CachingData<>(CacheStatus.LOAD); - public static final CachingData> MISSING_MODEL_PARTS = new CachingData<>(CacheStatus.LOAD); - - public static final CachingData> BLOCK_MODELS = new CachingData<>(CacheStatus.LOAD); - public static final CachingData> MISSING_BLOCK_MODELS = new CachingData<>(CacheStatus.LOAD); - -// public static final CachingData> ITEM_MODELS = new CachingData<>(CacheStatus.LOAD); -// public static final CachingData> MISSING_ITEM_MODELS = new CachingData<>(CacheStatus.LOAD); - - - public static final CachingData, StateDefinition>>> MULTIPART_PREDICATES = new CachingData<>(CacheStatus.SAVE); - public static final CachingData> UNBAKED_TO_BAKED_MULTIPART_MODELS = new CachingData<>(CacheStatus.SAVE); - - public static StateDefinition getStateManager(ResourceLocation identifier) { - StateDefinition staticDef = ModelLoaderAccessor.getStaticDefinitions().get(identifier); - if (staticDef != null) { - return staticDef; - } else { - return BuiltInRegistries.BLOCK.get(identifier).getStateDefinition(); - } - } - - @NotNull - public static ResourceLocation getStateManagerIdentifier(StateDefinition stateManager) { - // Static definitions like itemframes. - for (Map.Entry> entry : ModelLoaderAccessor.getStaticDefinitions().entrySet()) { - if (entry.getValue() == stateManager) { - return entry.getKey(); - } - } - - return BuiltInRegistries.BLOCK.getId(stateManager.getOwner()); - } - @Override public void reset(Cache cache) { - BAKED_MODEL_PARTS.reset(cache, new HashMap<>()); - - BLOCK_MODELS_SAVE.reset(cache, new HashMap<>()); - RAW_BLOCK_MODELS.reset(cache, new HashMap<>()); - -// ITEM_MODELS_SAVE.reset(cache, new HashMap<>()); -// ITEM_PROPERTIES.reset(cache, new HashMap<>()); - - MODEL_PARTS.reset(cache, new HashMap<>()); - MISSING_MODEL_PARTS.reset(cache, new ArrayList<>()); - - BLOCK_MODELS.reset(cache, new HashMap<>()); - MISSING_BLOCK_MODELS.reset(cache, new ArrayList<>()); - -// ITEM_MODELS.reset(cache, new HashMap<>()); -// MISSING_ITEM_MODELS.reset(cache, new ArrayList<>()); - - - MULTIPART_PREDICATES.reset(cache, new HashMap<>()); - UNBAKED_TO_BAKED_MULTIPART_MODELS.reset(cache, new HashMap<>()); } @Override public Data save(RegistryWriter factory, StepTask task) { - var bakedModelCache = BAKED_MODEL_PARTS.get(CacheStatus.SAVE); - var blockModels = BLOCK_MODELS_SAVE.get(CacheStatus.SAVE); - var rawBlockModels = RAW_BLOCK_MODELS.get(CacheStatus.SAVE); -// var itemModels = ITEM_MODELS_SAVE.get(CacheStatus.SAVE); -// var itemProperties = ITEM_PROPERTIES.get(CacheStatus.SAVE); - - - if (bakedModelCache == null || blockModels == null || rawBlockModels == null) { - return null; - } - - // split models that have been baked with multiple vs one setting - var modelPartsRemap = new Int2ObjectOpenHashMap>(bakedModelCache.size()); - var outModelPartsVariants = new IntObjectList(new ArrayList<>(bakedModelCache.size())); - var outModelParts = new IntIntList(new ArrayList<>(bakedModelCache.size())); - - var missingModelParts = new IntArrayList(); - - var outBlockModels = new IntObjectList(new ArrayList<>(blockModels.size())); - var missingBlockModels = new IntArrayList(); - -// var outItemModels = new IntObjectList(new ArrayList<>(itemModels.size())); -// var missingItemModels = new IntArrayList(); - - task.doForEach(bakedModelCache, (key, model) -> { - if (model == null) return; - - try { - var regId = factory.add(model); - - modelPartsRemap.compute(factory.add(key.id()), (id, models) -> { - if (models == null) models = new ObjectIntList<>(); - // don't add bake settings to the registry yet, might not need - models.put(new DashModelBakeSettings.BakeSettings(key.transformation(), key.isUvLocked()), regId); - - return models; - }); - } catch (RegistryAddException ignored) { - missingModelParts.add(factory.add(key.id())); - } - }); - - final int[] num = {0}; - - modelPartsRemap.forEach((id, models) -> { - var list = models.list(); - num[0] += list.size(); - - if (list.size() == 1) { // can ignore bake settings - outModelParts.put(id, list.getFirst().value()); - } else { - var data = new IntIntList(new ArrayList<>(list.size())); - list.forEach(entry -> { - data.put(factory.add(entry.key()), entry.value()); - }); - outModelPartsVariants.put(id, data); - } - }); - - DashLoader.LOG.info("saved {}/{} model parts", num, bakedModelCache.size()); - DashLoader.LOG.info("missing {} model parts", missingModelParts.size()); - - task.doForEach(blockModels, (modelId, model) -> { - if (model == null) return; - - try { - var regId = factory.add(model); - var blockModel = new IntIntList.IntInt(factory.add(rawBlockModels.get(modelId).state()), regId); - outBlockModels.put(factory.add(modelId), blockModel); - } catch (RegistryAddException ignored) { - missingBlockModels.add(factory.add(modelId.id())); - } - }); - - DashLoader.LOG.info("saved {}/{} block models", outBlockModels.list().size(), blockModels.size()); - DashLoader.LOG.info("missing {} block models", missingBlockModels.size()); - -// task.doForEach(itemModels, (id, model) -> { -// if (model == null) return; -// -// try { -// var regId = factory.add(model); // TODO: ItemModel caching. fyi there's 6 variants and more to add -// var itemAsset = new IntIntList.IntInt(factory.add(itemProperties.getOrDefault(id, ItemAsset.Properties.DEFAULT)), regId); -// outItemModels.put(factory.add(id), itemAsset); -// } catch (RegistryAddException ignored) { -// missingItemModels.add(factory.add(id)); -// } -// }); -// -// DashLoader.LOG.info("saved {}/{} item models", outItemModels.list().size(), itemModels.size()); -// DashLoader.LOG.info("missing {} item models", missingItemModels.size()); - - return new Data( - outModelPartsVariants, - outModelParts, - missingModelParts.toIntArray(), - outBlockModels, - missingBlockModels.toIntArray() -// outItemModels, -// missingItemModels.toIntArray() - ); + return new Data(); } @Override public void load(Data data, RegistryReader reader, StepTask task) { - var modelParts = new HashMap(data.modelParts.list().size() + data.modelPartsVariants.list().size()); - var missingModelParts = new ArrayList(data.missingModelParts.length); - - var blockModels = new HashMap(data.blockModels.list().size()); - var missingBlockModels = new ArrayList(data.missingBlockModels.length); -// var itemModels = new HashMap(data.itemModels.list().size()); -// var missingItemModels = new ArrayList(data.missingItemModels.length); - - data.modelPartsVariants.forEach((id, entry) -> { - var thing = new HashMap>(); - entry.forEach((settings, model) -> { - thing.put(reader.get(settings), reader.get(model)); - }); - modelParts.put(reader.get(id), new MultiUnbakedBakedModel(thing)); - }); - - data.modelParts.forEach((id, model) -> { - modelParts.put(reader.get(id), new UnbakedBakedModel(reader.get(model))); - }); - - for (int id : data.missingModelParts) { - missingModelParts.add(reader.get(id)); - } - - data.blockModels.forEach((id, blockModel) -> { - BlockState blockState = reader.get(blockModel.key()); - var dazyModel = new UnbakedBakedGroupableModel(reader.get(blockModel.value())); - blockModels.put(reader.get(id), new BlockStatesLoader.BlockModel(blockState, dazyModel)); - }); - - for (int id : data.missingBlockModels) { - missingBlockModels.add(reader.get(id)); - } - -// data.itemModels.forEach((id, itemAsset) -> { -// ItemAsset.Properties properties = reader.get(itemAsset.value()); -// var model = reader.get(itemAsset.key()); -// itemModels.put(reader.get(id), new ItemAsset(model, properties)); -// }); - - MODEL_PARTS.set(CacheStatus.LOAD, modelParts); - MISSING_MODEL_PARTS.set(CacheStatus.LOAD, missingModelParts); - BLOCK_MODELS.set(CacheStatus.LOAD, blockModels); - MISSING_BLOCK_MODELS.set(CacheStatus.LOAD, missingBlockModels); -// ITEM_MODELS.set(CacheStatus.IDLE, itemModels); -// MISSING_ITEM_MODELS.set(CacheStatus.IDLE, missingItemModels); } @Override @@ -276,30 +38,5 @@ public boolean isActive() { } public static final class Data { - public final IntObjectList modelPartsVariants; - public final IntIntList modelParts; - public final int[] missingModelParts; - public final IntObjectList blockModels; - public final int[] missingBlockModels; -// public final IntObjectList itemModels; -// public final int[] missingItemModels; - - public Data( - IntObjectList modelPartsVariants, - IntIntList modelParts, - int[] missingModelParts, - IntObjectList blockModels, - int[] missingBlockModels -// IntObjectList itemModels, -// int[] missingItemModels - ) { - this.modelPartsVariants = modelPartsVariants; - this.modelParts = modelParts; - this.missingModelParts = missingModelParts; - this.blockModels = blockModels; - this.missingBlockModels = missingBlockModels; -// this.itemModels = itemModels; -// this.missingItemModels = missingItemModels; - } } } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java b/src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java deleted file mode 100644 index 353be4cc..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/BakedQuadCollection.java +++ /dev/null @@ -1,13 +0,0 @@ -package dev.notalpha.dashloader.client.model.components; - -import net.minecraft.client.renderer.block.model.BakedQuad; - -import java.util.List; - -public class BakedQuadCollection { - public final List quads; - - public BakedQuadCollection(List quads) { - this.quads = quads; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java deleted file mode 100644 index 3884939d..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuad.java +++ /dev/null @@ -1,89 +0,0 @@ -package dev.notalpha.dashloader.client.model.components; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.client.Dazy; -import dev.notalpha.dashloader.client.sprite.content.DashSprite; -import java.util.function.Function; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.Material; -import net.minecraft.core.Direction; - -import java.util.Arrays; - -public final class DashBakedQuad implements DashObject { - public final int[] vertexData; - public final int colorIndex; - public final Direction face; - public final boolean shade; - public final int sprite; - public final int lightEmission; - - public DashBakedQuad(int[] vertexData, int colorIndex, Direction face, boolean shade, - int sprite, int lightEmission) { - this.vertexData = vertexData; - this.colorIndex = colorIndex; - this.face = face; - this.shade = shade; - this.sprite = sprite; - this.lightEmission = lightEmission; - } - - public DashBakedQuad(BakedQuad bakedQuad, RegistryWriter writer) { - this(bakedQuad.getVertexData(), bakedQuad.getTintIndex(), bakedQuad.getFace(), bakedQuad.hasShade(), writer.add(bakedQuad.getSprite()), bakedQuad.getLightEmission()); - } - - public DazyImpl export(RegistryReader handler) { - return new DazyImpl(this.vertexData, this.colorIndex, this.face, this.shade, handler.get(this.sprite), this.lightEmission); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashBakedQuad that = (DashBakedQuad) o; - - if (colorIndex != that.colorIndex) return false; - if (shade != that.shade) return false; - if (sprite != that.sprite) return false; - if (!Arrays.equals(vertexData, that.vertexData)) return false; - return face == that.face; - } - - @Override - public int hashCode() { - int result = Arrays.hashCode(vertexData); - result = 31 * result + colorIndex; - result = 31 * result + face.hashCode(); - result = 31 * result + (shade ? 1 : 0); - result = 31 * result + sprite; - return result; - } - - public static class DazyImpl extends Dazy { - public final int[] vertexData; - public final int colorIndex; - public final Direction face; - public final boolean shade; - public final DashSprite.DazyImpl sprite; - public final int lightEmission; - - public DazyImpl(int[] vertexData, int colorIndex, Direction face, boolean shade, DashSprite.DazyImpl sprite, int lightEmission) { - this.vertexData = vertexData; - this.colorIndex = colorIndex; - this.face = face; - this.shade = shade; - this.sprite = sprite; - this.lightEmission = lightEmission; - } - - @Override - protected BakedQuad resolve(Function spriteLoader) { - TextureAtlasSprite sprite = this.sprite.get(spriteLoader); - return new BakedQuad(vertexData, colorIndex, face, sprite, shade, lightEmission); - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java deleted file mode 100644 index 45421d49..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashBakedQuadCollection.java +++ /dev/null @@ -1,69 +0,0 @@ -package dev.notalpha.dashloader.client.model.components; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.client.Dazy; -import java.util.function.Function; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.Material; - -import java.util.ArrayList; -import java.util.List; - -public class DashBakedQuadCollection implements DashObject { - public final List quads; - - public DashBakedQuadCollection(List quads) { - this.quads = quads; - } - - public DashBakedQuadCollection(BakedQuadCollection quads, RegistryWriter writer) { - this.quads = new ArrayList<>(); - for (BakedQuad quad : quads.quads) { - this.quads.add(writer.add(quad)); - } - } - - @Override - public DazyImpl export(RegistryReader reader) { - var out = new ArrayList(this.quads.size()); - for (Integer quad : this.quads) { - out.add(reader.get(quad)); - } - return new DazyImpl(out); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashBakedQuadCollection that = (DashBakedQuadCollection) o; - - return quads.equals(that.quads); - } - - @Override - public int hashCode() { - return quads.hashCode(); - } - - public static class DazyImpl extends Dazy> { - public final List quads; - - public DazyImpl(List quads) { - this.quads = quads; - } - - @Override - protected List resolve(Function spriteLoader) { - var out = new ArrayList(quads.size()); - quads.forEach( - dazyBakedQuad -> out.add(dazyBakedQuad.get(spriteLoader)) - ); - return out; - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashMesh.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashMesh.java deleted file mode 100644 index 809b85d5..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashMesh.java +++ /dev/null @@ -1,83 +0,0 @@ -package dev.notalpha.dashloader.client.model.components; - -import dev.notalpha.dashloader.misc.UnsafeHelper; -import net.fabricmc.fabric.api.renderer.v1.mesh.Mesh; - -import java.lang.reflect.Field; -import java.util.Arrays; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -public final class DashMesh { - public static final Map> CLASS_CACHE = new ConcurrentHashMap<>(); - public final int[] data; - public final String className; - - public DashMesh(int[] data, String className) { - this.data = data; - this.className = className; - } - - public DashMesh(Mesh mesh) { - this(getData(mesh), mesh.getClass().getName()); - } - - private static int[] getData(Mesh mesh) { - final int[] data; - try { - final Field field = mesh.getClass().getDeclaredField("data"); - field.setAccessible(true); - data = (int[]) field.get(mesh); - } catch (IllegalAccessException | NoSuchFieldException e) { - throw new RuntimeException("Could not use Mesh field hack. ", e); - } - return data; - } - - public static Class getClass(final String className) { - final Class closs = CLASS_CACHE.get(className); - if (closs != null) { - return closs; - } - try { - final Class clz = Class.forName(className); - CLASS_CACHE.put(className, clz); - return clz; - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - public Mesh export() { - final Class aClass = getClass(this.className); - final Mesh mesh = (Mesh) UnsafeHelper.allocateInstance(aClass); - try { - assert aClass != null; - final Field data = aClass.getDeclaredField("data"); - data.setAccessible(true); - data.set(mesh, this.data); - } catch (IllegalAccessException | NoSuchFieldException e) { - throw new RuntimeException("Could not use Mesh field hack. ", e); - } - return mesh; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashMesh dashMesh = (DashMesh) o; - - if (!Arrays.equals(data, dashMesh.data)) return false; - return className.equals(dashMesh.className); - } - - @Override - public int hashCode() { - int result = Arrays.hashCode(data); - result = 31 * result + className.hashCode(); - return result; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java deleted file mode 100644 index 51777d10..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelBakeSettings.java +++ /dev/null @@ -1,66 +0,0 @@ -package dev.notalpha.dashloader.client.model.components; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import com.mojang.math.Transformation; -import net.minecraft.client.resources.model.ModelState; -import org.joml.Matrix4f; - -import java.util.Arrays; - -public class DashModelBakeSettings implements DashObject { - public final float[] rotation; - public final boolean uvLock; - - public DashModelBakeSettings(float[] rotation, boolean uvLock) { - this.rotation = rotation; - this.uvLock = uvLock; - } - - public DashModelBakeSettings(BakeSettings settings, RegistryWriter writer) { - this.rotation = settings.getRotation().getMatrix().get(new float[16]); - this.uvLock = settings.isUvLocked(); - } - - public BakeSettings export(RegistryReader reader) { - return new BakeSettings(new Transformation(new Matrix4f().set(rotation)), uvLock); - } - - public record BakeSettings(Transformation rotation, boolean uvLock) implements ModelState /* TODO: verify Mojang name */ { - - public BakeSettings(ModelState /* TODO: verify Mojang name */ settings) { - this(settings.getRotation(), settings.isUvLocked()); - } - - @Override - public Transformation getRotation() { - return rotation; - } - - @Override - public boolean isUvLocked() { - return uvLock; - } - - @Override - public boolean equals(Object o) { - if (o == null || getClass() != o.getClass()) return false; - var that = (BakeSettings) o; - - boolean b = Arrays.equals( - this.rotation.getMatrix().get(new float[16]), - that.rotation.getMatrix().get(new float[16]) - ); - - return b && uvLock == that.uvLock; - } - - @Override - public int hashCode() { - int result = this.rotation.getMatrix().hashCode(); - result = 31 * result + (this.uvLock ? 1 : 0); - return result; - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java deleted file mode 100644 index 4bc909cf..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashModelTransformation.java +++ /dev/null @@ -1,133 +0,0 @@ -package dev.notalpha.dashloader.client.model.components; - -import dev.notalpha.hyphen.scan.annotations.DataNullable; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.renderer.block.model.ItemTransform; -import org.jetbrains.annotations.Nullable; - -import java.util.Objects; - -public final class DashModelTransformation { - @DataNullable - public final ItemTransform thirdPersonLeftHand; - @DataNullable - public final ItemTransform thirdPersonRightHand; - @DataNullable - public final ItemTransform firstPersonLeftHand; - @DataNullable - public final ItemTransform firstPersonRightHand; - @DataNullable - public final ItemTransform head; - @DataNullable - public final ItemTransform gui; - @DataNullable - public final ItemTransform ground; - @DataNullable - public final ItemTransform fixed; - public transient int nullTransformations = 0; - - public DashModelTransformation(@Nullable ItemTransform thirdPersonLeftHand, @Nullable ItemTransform thirdPersonRightHand, @Nullable ItemTransform firstPersonLeftHand, @Nullable ItemTransform firstPersonRightHand, @Nullable ItemTransform head, @Nullable ItemTransform gui, @Nullable ItemTransform ground, @Nullable ItemTransform fixed) { - this.thirdPersonLeftHand = thirdPersonLeftHand; - this.thirdPersonRightHand = thirdPersonRightHand; - this.firstPersonLeftHand = firstPersonLeftHand; - this.firstPersonRightHand = firstPersonRightHand; - this.head = head; - this.gui = gui; - this.ground = ground; - this.fixed = fixed; - } - - public DashModelTransformation(ItemTransforms other) { - this.thirdPersonLeftHand = this.createTransformation(other.thirdPersonLeftHand); - this.thirdPersonRightHand = this.createTransformation(other.thirdPersonRightHand); - this.firstPersonLeftHand = this.createTransformation(other.firstPersonLeftHand); - this.firstPersonRightHand = this.createTransformation(other.firstPersonRightHand); - this.head = this.createTransformation(other.head); - this.gui = this.createTransformation(other.gui); - this.ground = this.createTransformation(other.ground); - this.fixed = this.createTransformation(other.fixed); - } - - @Nullable - public static DashModelTransformation createDashOrReturnNullIfDefault(ItemTransforms other) { - if (other == ItemTransforms.NONE) { - return null; - } - - DashModelTransformation out = new DashModelTransformation(other); - - if (out.nullTransformations == 8) { - return null; - } - - return out; - } - - public static ItemTransforms exportOrDefault(@Nullable DashModelTransformation other) { - if (other == null) { - return ItemTransforms.NONE; - } - - return other.export(); - } - - private ItemTransform createTransformation(ItemTransform transformation) { - if (transformation == ItemTransform.IDENTITY) { - this.nullTransformations++; - return null; - } else { - return transformation; - } - } - - private ItemTransform unTransformation(ItemTransform transformation) { - return transformation == null ? ItemTransform.IDENTITY : transformation; - } - - public ItemTransforms export() { - return new ItemTransforms( - this.unTransformation(this.thirdPersonLeftHand), - this.unTransformation(this.thirdPersonRightHand), - this.unTransformation(this.firstPersonLeftHand), - this.unTransformation(this.firstPersonRightHand), - this.unTransformation(this.head), - this.unTransformation(this.gui), - this.unTransformation(this.ground), - this.unTransformation(this.fixed) - ); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashModelTransformation that = (DashModelTransformation) o; - - if (!Objects.equals(thirdPersonLeftHand, that.thirdPersonLeftHand)) - return false; - if (!Objects.equals(thirdPersonRightHand, that.thirdPersonRightHand)) - return false; - if (!Objects.equals(firstPersonLeftHand, that.firstPersonLeftHand)) - return false; - if (!Objects.equals(firstPersonRightHand, that.firstPersonRightHand)) - return false; - if (!Objects.equals(head, that.head)) return false; - if (!Objects.equals(gui, that.gui)) return false; - if (!Objects.equals(ground, that.ground)) return false; - return Objects.equals(fixed, that.fixed); - } - - @Override - public int hashCode() { - int result = thirdPersonLeftHand != null ? thirdPersonLeftHand.hashCode() : 0; - result = 31 * result + (thirdPersonRightHand != null ? thirdPersonRightHand.hashCode() : 0); - result = 31 * result + (firstPersonLeftHand != null ? firstPersonLeftHand.hashCode() : 0); - result = 31 * result + (firstPersonRightHand != null ? firstPersonRightHand.hashCode() : 0); - result = 31 * result + (head != null ? head.hashCode() : 0); - result = 31 * result + (gui != null ? gui.hashCode() : 0); - result = 31 * result + (ground != null ? ground.hashCode() : 0); - result = 31 * result + (fixed != null ? fixed.hashCode() : 0); - return result; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java b/src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java deleted file mode 100644 index 12b1c103..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/components/DashWeightedModelEntry.java +++ /dev/null @@ -1,43 +0,0 @@ -package dev.notalpha.dashloader.client.model.components; - -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.client.model.DashWeightedBakedModel; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.util.random.Weighted; - -public final class DashWeightedModelEntry { - public final int model; - public final int weight; - - public DashWeightedModelEntry(int model, int weight) { - this.model = model; - this.weight = weight; - } - - public DashWeightedModelEntry(Weighted.Present entry, RegistryWriter writer) { - this(writer.add(entry.data()), entry.getWeight().getValue()); - } - - public DashWeightedBakedModel.DazyImpl.Entry export(RegistryReader handler) { - return new DashWeightedBakedModel.DazyImpl.Entry(this.weight, handler.get(this.model)); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashWeightedModelEntry that = (DashWeightedModelEntry) o; - - if (model != that.model) return false; - return weight == that.weight; - } - - @Override - public int hashCode() { - int result = model; - result = 31 * result + weight; - return result; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java deleted file mode 100644 index 80d06b2b..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/fallback/MultiUnbakedBakedModel.java +++ /dev/null @@ -1,30 +0,0 @@ -package dev.notalpha.dashloader.client.model.fallback; - -import dev.notalpha.dashloader.client.Dazy; -import dev.notalpha.dashloader.client.model.components.DashModelBakeSettings; -import net.minecraft.client.renderer.block.model.*; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.resources.model.BakedModel; - -import java.util.Map; - -/** - * Same as {@linkplain UnbakedBakedModel}, but respects provided bake settings - */ -public class MultiUnbakedBakedModel implements UnbakedModel { - private final Map> models; - - public MultiUnbakedBakedModel(Map> models) { - this.models = models; - } - - @Override - public void resolve(Resolver resolver) { - } - - @Override - public BakedModel bake(ModelTextures textures, Baker baker, ModelState /* TODO: verify Mojang name */ settings, boolean ambientOcclusion, boolean isSideLit, ItemTransforms transformation) { - var model = this.models.get(new DashModelBakeSettings.BakeSettings(settings)); - return model.get(baker.getSpriteGetter()); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java deleted file mode 100644 index 989321d3..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedGroupableModel.java +++ /dev/null @@ -1,33 +0,0 @@ -package dev.notalpha.dashloader.client.model.fallback; - -import dev.notalpha.dashloader.client.Dazy; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.renderer.block.model.Baker; // TODO: verify Mojang name -import net.minecraft.client.renderer.block.model.GroupableModel; // TODO: verify Mojang name - -/** - * Same as {@linkplain UnbakedBakedModel}, but for {@linkplain GroupableModel} - */ -public class UnbakedBakedGroupableModel implements GroupableModel { - private final Dazy bakedModel; - - public UnbakedBakedGroupableModel(Dazy bakedModel) { - this.bakedModel = bakedModel; - } - - @Override - public BakedModel bake(Baker baker) { - return this.bakedModel.get(baker.getSpriteGetter()); - } - - @Override - public Object getEqualityGroup(BlockState state) { - return null; - } - - @Override - public void resolve(Resolver resolver) { - - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java b/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java deleted file mode 100644 index 2e332cdc..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/model/fallback/UnbakedBakedModel.java +++ /dev/null @@ -1,26 +0,0 @@ -package dev.notalpha.dashloader.client.model.fallback; - -import dev.notalpha.dashloader.client.Dazy; -import net.minecraft.client.renderer.block.model.*; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.resources.model.BakedModel; - -/** - * An unbaked model which holds a baked model, used for fallback to reuse cached models. - */ -public class UnbakedBakedModel implements UnbakedModel { - private final Dazy bakedModel; - - public UnbakedBakedModel(Dazy bakedModel) { - this.bakedModel = bakedModel; - } - - @Override - public void resolve(Resolver resolver) { - } - - @Override - public BakedModel bake(ModelTextures textures, Baker baker, ModelState /* TODO: verify Mojang name */ settings, boolean ambientOcclusion, boolean isSideLit, ItemTransforms transformation) { - return this.bakedModel.get(baker.getSpriteGetter()); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java index 6502ebbd..956ab7cd 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/BooleanSelector.java @@ -4,6 +4,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.client.renderer.block.model.multipart.Condition; import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.StateHolder; import java.util.function.Predicate; @@ -14,12 +15,12 @@ public BooleanSelector(boolean selector) { this.selector = selector; } -public BooleanSelector(Condition selector) { -this.selector = selector == Condition.TRUE; -} + public BooleanSelector(Condition selector) { + this.selector = selector instanceof BooleanSelector b && b.selector; + } -@Override -public Predicate getPredicate(StateDefinition stateFactory) { -return blockState -> selector; -} + @Override + public > Predicate instantiate(StateDefinition stateFactory) { + return stateHolder -> selector; + } } diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java index 1d70d0e8..0afa092a 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashAndPredicate.java @@ -3,45 +3,35 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.mixin.accessor.AndMultipartModelSelectorAccessor; -import net.minecraft.client.renderer.block.model.multipart.AndCondition; +import net.minecraft.client.renderer.block.model.multipart.CombinedCondition; import net.minecraft.client.renderer.block.model.multipart.Condition; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -public final class DashAndPredicate implements DashObject { +public final class DashAndPredicate implements DashObject { public final int[] selectors; public DashAndPredicate(int[] selectors) { this.selectors = selectors; } -public DashAndPredicate(AndCondition selector, RegistryWriter writer) { -AndMultipartModelSelectorAccessor access = ((AndMultipartModelSelectorAccessor) selector); - -Iterable accessSelectors = access.getSelectors(); -int count = 0; -for (Condition ignored : accessSelectors) { -count += 1; -} -this.selectors = new int[count]; - -int i = 0; -for (Condition accessSelector : accessSelectors) { -this.selectors[i++] = writer.add(accessSelector); -} +public DashAndPredicate(CombinedCondition selector, RegistryWriter writer) { + this.selectors = new int[selector.terms().size()]; + for (int i = 0; i < selector.terms().size(); i++) { + this.selectors[i] = writer.add(selector.terms().get(i)); + } } @Override -public AndCondition export(RegistryReader handler) { +public CombinedCondition export(RegistryReader handler) { final List selectors = new ArrayList<>(this.selectors.length); for (int accessSelector : this.selectors) { selectors.add(handler.get(accessSelector)); } -return new AndCondition(selectors); +return new CombinedCondition(CombinedCondition.Operation.AND, selectors); } @Override diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java index 021bb99e..0af5a4cc 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashOrPredicate.java @@ -3,45 +3,35 @@ import dev.notalpha.dashloader.api.DashObject; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.mixin.accessor.OrMultipartModelSelectorAccessor; +import net.minecraft.client.renderer.block.model.multipart.CombinedCondition; import net.minecraft.client.renderer.block.model.multipart.Condition; -import net.minecraft.client.renderer.block.model.multipart.OrCondition; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -public final class DashOrPredicate implements DashObject { +public final class DashOrPredicate implements DashObject { public final int[] selectors; public DashOrPredicate(int[] selectors) { this.selectors = selectors; } -public DashOrPredicate(OrCondition selector, RegistryWriter writer) { -OrMultipartModelSelectorAccessor access = ((OrMultipartModelSelectorAccessor) selector); - -Iterable accessSelectors = access.getSelectors(); -int count = 0; -for (Condition ignored : accessSelectors) { -count += 1; -} -this.selectors = new int[count]; - -int i = 0; -for (Condition accessSelector : accessSelectors) { -this.selectors[i++] = writer.add(accessSelector); -} +public DashOrPredicate(CombinedCondition selector, RegistryWriter writer) { + this.selectors = new int[selector.terms().size()]; + for (int i = 0; i < selector.terms().size(); i++) { + this.selectors[i] = writer.add(selector.terms().get(i)); + } } @Override -public OrCondition export(RegistryReader handler) { +public CombinedCondition export(RegistryReader handler) { final List selectors = new ArrayList<>(this.selectors.length); for (int accessSelector : this.selectors) { selectors.add(handler.get(accessSelector)); } -return new OrCondition(selectors); +return new CombinedCondition(CombinedCondition.Operation.OR, selectors); } @Override diff --git a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java index 42ec0d34..9fa09768 100644 --- a/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java +++ b/src/main/java/dev/notalpha/dashloader/client/model/predicates/DashSimplePredicate.java @@ -1,28 +1,33 @@ package dev.notalpha.dashloader.client.model.predicates; import dev.notalpha.dashloader.api.DashObject; +import dev.notalpha.dashloader.api.collection.ObjectObjectList; import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.mixin.accessor.SimpleMultipartModelSelectorAccessor; import net.minecraft.client.renderer.block.model.multipart.KeyValueCondition; +import java.util.HashMap; +import java.util.Map; + public final class DashSimplePredicate implements DashObject { -public final String key; -public final String valueString; +public final ObjectObjectList tests; -public DashSimplePredicate(String key, String valueString) { -this.key = key; -this.valueString = valueString; +public DashSimplePredicate(ObjectObjectList tests) { +this.tests = tests; } public DashSimplePredicate(KeyValueCondition simpleMultipartModelSelector) { -var access = ((SimpleMultipartModelSelectorAccessor) simpleMultipartModelSelector); -this.key = access.getKey(); -this.valueString = access.getValueString(); +this.tests = new ObjectObjectList<>(); +simpleMultipartModelSelector.tests().forEach((key, value) -> this.tests.put(key, value.toString())); } @Override public KeyValueCondition export(RegistryReader handler) { -return new KeyValueCondition(this.key, this.valueString); +Map out = new HashMap<>(this.tests.list().size()); +this.tests.forEach((key, value) -> out.put( + key, + KeyValueCondition.Terms.parse(value).result().orElseThrow(() -> new IllegalStateException("Invalid key-value condition term: " + value)) +)); +return new KeyValueCondition(out); } @Override @@ -32,14 +37,11 @@ public boolean equals(Object o) { DashSimplePredicate that = (DashSimplePredicate) o; -if (!key.equals(that.key)) return false; -return valueString.equals(that.valueString); +return tests.equals(that.tests); } @Override public int hashCode() { -int result = key.hashCode(); -result = 31 * result + valueString.hashCode(); -return result; +return tests.hashCode(); } } diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java deleted file mode 100644 index eb39fc88..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashDefines.java +++ /dev/null @@ -1,35 +0,0 @@ -package dev.notalpha.dashloader.client.shader; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.collection.ObjectObjectList; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import net.minecraft.client.renderer.Defines; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; - -public class DashDefines implements DashObject { - public final ObjectObjectList values; - public final String[] flags; - - public DashDefines(Defines defines) { - this.values = new ObjectObjectList<>(new ArrayList<>(defines.values().size())); - defines.values().forEach(this.values::put); - - this.flags = defines.flags().toArray(new String[0]); - } - - public DashDefines(ObjectObjectList values, String[] flags) { - this.values = values; - this.flags = flags; - } - - @Override - public Defines export(RegistryReader reader) { - var map = new HashMap(this.values.list().size()); - this.values.forEach(map::put); - return new Defines(map, new HashSet<>(List.of(this.flags))); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java deleted file mode 100644 index a778ed28..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashPostEffectPipeline.java +++ /dev/null @@ -1,44 +0,0 @@ -package dev.notalpha.dashloader.client.shader; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.collection.IntIntList; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.renderer.PostEffectPipeline; -import net.minecraft.resources.ResourceLocation; - -import java.util.ArrayList; -import java.util.HashMap; - -public class DashPostEffectPipeline implements DashObject { - public final IntIntList targets; - public final int[] passes; - - public DashPostEffectPipeline(PostEffectPipeline pipeline, RegistryWriter writer) { - this.targets = new IntIntList(new ArrayList<>(pipeline.internalTargets().size())); - pipeline.internalTargets().forEach((identifier, targets) -> { - this.targets.put(writer.add(identifier), writer.add(targets)); - }); - - this.passes = new int[pipeline.passes().size()]; - for (int i = 0; i < this.passes.length; i++) { - this.passes[i] = writer.add(pipeline.passes().get(i)); - } - } - - public DashPostEffectPipeline(IntIntList targets, int[] passes) { - this.targets = targets; - this.passes = passes; - } - - @Override - public PostEffectPipeline export(RegistryReader reader) { - var targets = new HashMap(this.targets.list().size()); - var passes = new ArrayList(this.passes.length); - this.targets.forEach((key, value) -> targets.put(reader.get(key), reader.get(value))); - for (int pass : this.passes) { - passes.add(reader.get(pass)); - } - return new PostEffectPipeline(targets, passes); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java deleted file mode 100644 index 2ab33a87..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinition.java +++ /dev/null @@ -1,54 +0,0 @@ -package dev.notalpha.dashloader.client.shader; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.renderer.ShaderProgramConfig; - -import java.util.ArrayList; - -public class DashShaderProgramDefinition implements DashObject { - public final int vertex; - public final int fragment; - public final String[] samplers; - public final int[] uniforms; - public final int defines; - - public DashShaderProgramDefinition(ShaderProgramConfig thing, RegistryWriter writer) { - this.vertex = writer.add(thing.vertex()); - this.fragment = writer.add(thing.fragment()); - this.samplers = new String[thing.samplers().size()]; - for (int i = 0; i < this.samplers.length; i++) { - this.samplers[i] = thing.samplers().get(i).name(); - } - this.uniforms = new int[thing.uniforms().size()]; - for (int i = 0; i < this.uniforms.length; i++) { - this.uniforms[i] = writer.add(thing.uniforms().get(i)); - } - this.defines = writer.add(thing.defines()); - } - - public DashShaderProgramDefinition(int vertex, int fragment, String[] samplers, int[] uniforms, int defines) { - this.vertex = vertex; - this.fragment = fragment; - this.samplers = samplers; - this.uniforms = uniforms; - this.defines = defines; - } - - @Override - public ShaderProgramConfig export(RegistryReader reader) { - var samplers = new ArrayList(this.samplers.length); - var uniforms = new ArrayList(this.uniforms.length); - - for (String sampler : this.samplers) { - samplers.add(new ShaderProgramConfig.Sampler(sampler)); - } - for (int uniform : this.uniforms) { - uniforms.add(reader.get(uniform)); - } - - return new ShaderProgramConfig(reader.get(this.vertex), reader.get(this.fragment), - samplers, uniforms, reader.get(this.defines)); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java deleted file mode 100644 index a354cea1..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramDefinitionUniform.java +++ /dev/null @@ -1,42 +0,0 @@ -package dev.notalpha.dashloader.client.shader; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import net.minecraft.client.renderer.ShaderProgramConfig; - -import java.util.ArrayList; -import java.util.List; - - -public class DashShaderProgramDefinitionUniform implements DashObject { - public final String name; - public final String type; - public final int count; - public final float[] values; - - public DashShaderProgramDefinitionUniform(ShaderProgramConfig.Uniform uniform) { - this.name = uniform.name(); - this.type = uniform.type(); - this.count = uniform.count(); - this.values = new float[uniform.values().size()]; - for (int i = 0; i < uniform.values().size(); i++) { - this.values[i] = uniform.values().get(i); - } - } - - public DashShaderProgramDefinitionUniform(String name, String type, int count, float[] values) { - this.name = name; - this.type = type; - this.count = count; - this.values = values; - } - - @Override - public ShaderProgramConfig.Uniform export(RegistryReader reader) { - List values = new ArrayList<>(this.values.length); - for (float f : this.values) { - values.add(f); - } - return new ShaderProgramConfig.Uniform(this.name, this.type, this.count, values); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java deleted file mode 100644 index 08b49f2f..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderProgramKey.java +++ /dev/null @@ -1,37 +0,0 @@ -package dev.notalpha.dashloader.client.shader; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.renderer.Defines; -import net.minecraft.client.renderer.ShaderProgramKey; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; - -public class DashShaderProgramKey implements DashObject { - public final int id; - public final int vertex; - public final Map values; - public final String[] flags; - - public DashShaderProgramKey(ShaderProgramKey key, RegistryWriter writer) { - this.id = writer.add(key.configId()); - this.vertex = writer.add(key.vertexFormat()); - this.values = key.defines().values(); - this.flags = key.defines().flags().toArray(String[]::new); - } - - public DashShaderProgramKey(int id, int vertex, Map values, String[] flags) { - this.id = id; - this.vertex = vertex; - this.values = values; - this.flags = flags; - } - - @Override - public ShaderProgramKey export(RegistryReader reader) { - return new ShaderProgramKey(reader.get(id), reader.get(vertex), new Defines(this.values, new HashSet<>(List.of(this.flags)))); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java b/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java deleted file mode 100644 index 21b3b7a1..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/shader/DashShaderSourceKey.java +++ /dev/null @@ -1,27 +0,0 @@ -package dev.notalpha.dashloader.client.shader; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import com.mojang.blaze3d.shaders.ShaderType; -import net.minecraft.client.renderer.ShaderManager; - -public class DashShaderSourceKey implements DashObject { - public final int id; - public final int type; - - public DashShaderSourceKey(ShaderManager.ShaderSourceKey key, RegistryWriter writer) { - this.id = writer.add(key.id()); - this.type = key.type().ordinal(); - } - - public DashShaderSourceKey(int id, int type) { - this.id = id; - this.type = type; - } - - @Override - public ShaderManager.ShaderSourceKey export(RegistryReader reader) { - return new ShaderManager.ShaderSourceKey(reader.get(this.id), ShaderType.values()[this.type]); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java b/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java index f7e2e4e3..7878bae4 100644 --- a/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java +++ b/src/main/java/dev/notalpha/dashloader/client/shader/ShaderModule.java @@ -1,75 +1,25 @@ package dev.notalpha.dashloader.client.shader; -import dev.notalpha.dashloader.api.CachingData; import dev.notalpha.dashloader.api.DashModule; import dev.notalpha.dashloader.api.cache.Cache; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.api.collection.IntIntList; -import dev.notalpha.dashloader.api.collection.IntObjectList; import dev.notalpha.dashloader.api.registry.RegistryReader; import dev.notalpha.dashloader.api.registry.RegistryWriter; import dev.notalpha.dashloader.config.ConfigHandler; import dev.notalpha.dashloader.config.Option; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.renderer.ShaderManager; -import net.minecraft.client.renderer.ShaderProgramConfig; -import net.minecraft.resources.ResourceLocation; - -import java.util.ArrayList; -import java.util.HashMap; public class ShaderModule implements DashModule { - public static final CachingData> SHADER_SOURCES = new CachingData<>(); - public static final CachingData> SHADER_DEFINITIONS = new CachingData<>(); -// public static final CachingData> POST_EFFECTS = new CachingData<>(); // TODO - - @Override public void reset(Cache cache) { - SHADER_SOURCES.reset(cache, new HashMap<>()); - SHADER_DEFINITIONS.reset(cache, new HashMap<>()); -// POST_EFFECTS.reset(cache, new HashMap<>()); } @Override public Data save(RegistryWriter factory, StepTask task) { - var data1 = SHADER_SOURCES.get(CacheStatus.SAVE); - var data2 = SHADER_DEFINITIONS.get(CacheStatus.SAVE); - - if (data1 == null || data2 == null) { - return null; - } - - var out = new IntObjectList(new ArrayList<>(data1.size())); - var out2 = new IntIntList(new ArrayList<>(data2.size())); - - data1.forEach((identifier, entry) -> { - out.put(factory.add(identifier), entry); - }); - - data2.forEach(((identifier, entry) -> { - out2.put(factory.add(identifier), factory.add(entry)); - })); - -// data3.forEach((identifier, entry) -> { -// out3.put(factory.add(identifier), factory.add(entry)); -// }); - - return new Data(out, out2); + return new Data(); } @Override public void load(Data data, RegistryReader reader, StepTask task) { - var out1 = new HashMap(data.data1.list().size()); - var out2 = new HashMap(data.data2.list().size()); -// var out3 = new HashMap(data.data3.list().size()); - data.data1.forEach((key, value) -> out1.put(reader.get(key), value)); - data.data2.forEach((key, value) -> out2.put(reader.get(key), reader.get(value))); -// data.data3.forEach((key, value) -> out3.put(reader.get(key), reader.get(value))); - - SHADER_SOURCES.set(CacheStatus.LOAD, out1); - SHADER_DEFINITIONS.set(CacheStatus.LOAD, out2); -// POST_EFFECTS.set(CacheStatus.LOAD, out3); } @Override @@ -83,14 +33,5 @@ public boolean isActive() { } public static final class Data { - public final IntObjectList data1; - public final IntIntList data2; -// public final IntIntList data3; - - public Data(IntObjectList data1, IntIntList data2) { - this.data1 = data1; - this.data2 = data2; -// this.data3 = data3; - } } } diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java deleted file mode 100644 index 191ec4ad..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashImage.java +++ /dev/null @@ -1,55 +0,0 @@ -package dev.notalpha.dashloader.client.sprite.content; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.io.def.NativeImageData; -import dev.notalpha.dashloader.mixin.accessor.NativeImageAccessor; -import com.mojang.blaze3d.platform.NativeImage; -import org.lwjgl.system.MemoryUtil; - -import java.nio.ByteBuffer; - -public final class DashImage implements DashObject { - public final NativeImageData image; - public final NativeImage.Format format; - public final boolean useSTB; - public final int width; - public final int height; - - public DashImage(NativeImage nativeImage) { - NativeImageAccessor nativeImageAccess = (NativeImageAccessor) (Object) nativeImage; - this.format = nativeImage.getFormat(); - this.width = nativeImage.getWidth(); - this.height = nativeImage.getHeight(); - - final int capacity = this.width * this.height * this.format.getChannelCount(); - final long pointer = nativeImageAccess.getPointer(); - - this.useSTB = nativeImageAccess.getIsStbImage(); - - ByteBuffer image1 = MemoryUtil.memByteBuffer(pointer, capacity); - image1.limit(capacity); - this.image = new NativeImageData(image1, this.useSTB); - } - - public DashImage(NativeImageData image, NativeImage.Format format, boolean useSTB, int width, int height) { - this.image = image; - this.format = format; - this.useSTB = useSTB; - this.width = width; - this.height = height; - } - - /** - *

    I can bet that next dashloader version will change this again. This method needs some serious over engineering.

    - * - * @param registry da registry - * @return da image - */ - @Override - public NativeImage export(final RegistryReader registry) { - image.buffer.rewind(); - long pointer = MemoryUtil.memAddress(image.buffer); - return NativeImageAccessor.init(this.format, this.width, this.height, this.useSTB, pointer); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java deleted file mode 100644 index 8eaaa6fd..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSprite.java +++ /dev/null @@ -1,54 +0,0 @@ -package dev.notalpha.dashloader.client.sprite.content; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.client.Dazy; -import java.util.function.Function; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.Material; - -public class DashSprite implements DashObject { - public final int id; - - public DashSprite(int id) { - this.id = id; - } - - public DashSprite(TextureAtlasSprite sprite, RegistryWriter writer) { - this.id = writer.add(new Material(sprite.atlasLocation(), sprite.getContents().name())); - } - - @Override - public DazyImpl export(final RegistryReader registry) { - return new DazyImpl(registry.get(id)); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashSprite that = (DashSprite) o; - - return id == that.id; - } - - @Override - public int hashCode() { - return id; - } - - public static class DazyImpl extends Dazy { - public final Material location; - - public DazyImpl(Material location) { - this.location = location; - } - - @Override - protected TextureAtlasSprite resolve(Function spriteLoader) { - return spriteLoader.apply(location); - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java deleted file mode 100644 index 3ac2ade1..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimation.java +++ /dev/null @@ -1,67 +0,0 @@ -package dev.notalpha.dashloader.client.sprite.content; - -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.mixin.accessor.SpriteAnimationAccessor; -import net.minecraft.client.renderer.texture.SpriteContents; - -import java.util.ArrayList; -import java.util.List; - -public final class DashSpriteAnimation { - public final List frames; - public final int frameCount; - public final boolean interpolation; - - public DashSpriteAnimation( - List frames, - int frameCount, - boolean interpolation) { - this.frames = frames; - this.frameCount = frameCount; - this.interpolation = interpolation; - } - - public DashSpriteAnimation(SpriteContents.AnimatedTexture animation) { - SpriteAnimationAccessor access = ((SpriteAnimationAccessor) animation); - this.frames = new ArrayList<>(); - for (var frame : access.getFrames()) { - this.frames.add(new DashSpriteAnimationFrame(frame)); - } - this.frameCount = access.getFrameCount(); - this.interpolation = access.getInterpolation(); - } - - public SpriteContents.AnimatedTexture export(SpriteContents owner, RegistryReader registry) { - var framesOut = new ArrayList(); - for (var frame : this.frames) { - framesOut.add(frame.export(registry)); - } - - return SpriteAnimationAccessor.init( - owner, - framesOut, - this.frameCount, - this.interpolation - ); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashSpriteAnimation that = (DashSpriteAnimation) o; - - if (frameCount != that.frameCount) return false; - if (interpolation != that.interpolation) return false; - return frames.equals(that.frames); - } - - @Override - public int hashCode() { - int result = frames.hashCode(); - result = 31 * result + frameCount; - result = 31 * result + (interpolation ? 1 : 0); - return result; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java deleted file mode 100644 index 78e61145..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteAnimationFrame.java +++ /dev/null @@ -1,44 +0,0 @@ -package dev.notalpha.dashloader.client.sprite.content; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.mixin.accessor.SpriteAnimationFrameAccessor; -import net.minecraft.client.renderer.texture.SpriteContents; - -public final class DashSpriteAnimationFrame implements DashObject { - public final int index; - public final int time; - - public DashSpriteAnimationFrame(int index, int time) { - this.index = index; - this.time = time; - } - - public DashSpriteAnimationFrame(SpriteContents.FrameInfo frame) { - this.index = frame.index(); - this.time = frame.time(); - } - - @Override - public SpriteContents.FrameInfo export(RegistryReader exportHandler) { - return SpriteAnimationFrameAccessor.newSpriteFrame(this.index, this.time); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashSpriteAnimationFrame that = (DashSpriteAnimationFrame) o; - - if (index != that.index) return false; - return time == that.time; - } - - @Override - public int hashCode() { - int result = index; - result = 31 * result + time; - return result; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java deleted file mode 100644 index 716254c9..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/DashSpriteContents.java +++ /dev/null @@ -1,100 +0,0 @@ -package dev.notalpha.dashloader.client.sprite.content; - -import dev.notalpha.dashloader.api.DashObject; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.misc.UnsafeHelper; -import dev.notalpha.dashloader.mixin.accessor.SpriteContentsAccessor; -import dev.notalpha.hyphen.scan.annotations.DataNullable; -import com.mojang.blaze3d.platform.NativeImage; -import net.minecraft.client.renderer.texture.SpriteContents; -import org.jetbrains.annotations.Nullable; - -import java.lang.reflect.Method; -import java.util.Objects; - -public final class DashSpriteContents implements DashObject { - private final static Method sodiumScanMethod = getSodiumScanner(); - public final int id; - public final int image; - @Nullable - @DataNullable - public final DashSpriteAnimation animation; - public final int width; - public final int height; - - public DashSpriteContents(int id, int image, @Nullable DashSpriteAnimation animation, int width, int height) { - this.id = id; - this.image = image; - this.animation = animation; - this.width = width; - this.height = height; - } - - public DashSpriteContents(SpriteContents contents, RegistryWriter writer) { - var access = (SpriteContentsAccessor) contents; - this.id = writer.add(contents.getId()); - this.image = writer.add(access.getImage()); - this.width = contents.getWidth(); - this.height = contents.getHeight(); - SpriteContents.AnimatedTexture animation = access.getAnimation(); - this.animation = animation == null ? null : new DashSpriteAnimation(animation); - } - - public SpriteContents export(RegistryReader reader) { - final SpriteContents out = UnsafeHelper.allocateInstance(SpriteContents.class); - var access = (SpriteContentsAccessor) out; - access.setId(reader.get(this.id)); - - NativeImage image = reader.get(this.image); - access.setImage(image); - access.setHeight(height); - access.setWidth(width); - access.setMipmapLevelsImages(new NativeImage[]{image}); - access.setAnimation(this.animation == null ? null : animation.export(out, reader)); - applySodiumScanning(out, image); // run important sodium method if present - return out; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashSpriteContents that = (DashSpriteContents) o; - - if (id != that.id) return false; - if (image != that.image) return false; - if (width != that.width) return false; - if (height != that.height) return false; - return Objects.equals(animation, that.animation); - } - - @Override - public int hashCode() { - int result = id; - result = 31 * result + image; - result = 31 * result + (animation != null ? animation.hashCode() : 0); - result = 31 * result + width; - result = 31 * result + height; - return result; - } - - private static Method getSodiumScanner() { - try { - Method scanSpriteContents = SpriteContents.class.getDeclaredMethod("scanSpriteContents", NativeImage.class); - scanSpriteContents.setAccessible(true); - return scanSpriteContents; - } catch (ReflectiveOperationException ignored) { - return null; - } - } - - private void applySodiumScanning(SpriteContents contents, NativeImage image) { - if (sodiumScanMethod == null) return; - try { - sodiumScanMethod.invoke(contents, image); - } catch (ReflectiveOperationException ignored) { - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java b/src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java deleted file mode 100644 index 49dba5ca..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/content/SpriteContentModule.java +++ /dev/null @@ -1,70 +0,0 @@ -package dev.notalpha.dashloader.client.sprite.content; - -import dev.notalpha.dashloader.api.CachingData; -import dev.notalpha.dashloader.api.DashModule; -import dev.notalpha.dashloader.api.cache.Cache; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.api.collection.IntIntList; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.config.ConfigHandler; -import dev.notalpha.dashloader.config.Option; -import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.renderer.texture.SpriteContents; -import net.minecraft.resources.ResourceLocation; - -import java.util.HashMap; -import java.util.Map; - -public class SpriteContentModule implements DashModule { - public final static CachingData> SOURCE = new CachingData<>(); - - @Override - public void reset(Cache cache) { - SOURCE.reset(cache, new HashMap<>()); - } - - @Override - public Data save(RegistryWriter writer, StepTask task) { - var spriteData = SOURCE.get(CacheStatus.SAVE); - assert spriteData != null; - - var map = new IntIntList(); - task.doForEach(spriteData, (identifier, spriteContents) -> { - if (spriteContents != null) - map.put(writer.add(identifier), writer.add(spriteContents)); - }); - - return new Data(map); - } - - @Override - public void load(Data data, RegistryReader reader, StepTask task) { - Map spriteData = SOURCE.get(CacheStatus.LOAD); - assert spriteData != null; - - data.sprites.forEach((key, value) -> { - ResourceLocation identifier = reader.get(key); - SpriteContents contents = reader.get(value); - spriteData.put(identifier, contents); - }); - } - - @Override - public boolean isActive() { - return ConfigHandler.optionActive(Option.CACHE_SPRITE_CONTENT); - } - - @Override - public Class getDataClass() { - return Data.class; - } - - public static class Data { - public final IntIntList sprites; - - public Data(IntIntList sprites) { - this.sprites = sprites; - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java deleted file mode 100644 index 668ed62a..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashStitchResult.java +++ /dev/null @@ -1,84 +0,0 @@ -package dev.notalpha.dashloader.client.sprite.stitch; - -import dev.notalpha.dashloader.api.collection.IntIntList; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.taski.builtin.StepTask; -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.texture.SpriteLoader; // TODO: verify Mojang name -import net.minecraft.resources.ResourceLocation; - -import java.util.Map; -import java.util.concurrent.CompletableFuture; - -public final class DashStitchResult { - public final int width; - public final int height; - public final int mipLevel; - public final int missing; - public final IntIntList regions; - - public DashStitchResult(int width, int height, int mipLevel, int missing, IntIntList regions) { - this.width = width; - this.height = height; - this.mipLevel = mipLevel; - this.missing = missing; - this.regions = regions; - } - - public DashStitchResult(SpriteLoader.StitchResult stitchResult, RegistryWriter writer, StepTask task) { - this.width = stitchResult.width(); - this.height = stitchResult.height(); - this.mipLevel = stitchResult.mipLevel(); - this.missing = writer.add(stitchResult.missing()); - - this.regions = new IntIntList(); - stitchResult.regions().forEach((identifier, sprite) -> { - this.regions.put(writer.add(identifier), writer.add(sprite)); - task.next(); - }); - } - - public SpriteLoader.StitchResult export(RegistryReader reader) { - Map regions = new Object2ObjectOpenHashMap<>(); - this.regions.forEach((key, value) -> regions.put(reader.get(key), reader.get(value))); - - return new SpriteLoader.StitchResult( - this.width, - this.height, - this.mipLevel, - reader.get(this.missing), - regions, - CompletableFuture.runAsync( - () -> { - throw new RuntimeException("Cached object not yet finalized"); - } - ) - ); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DashStitchResult that = (DashStitchResult) o; - - if (width != that.width) return false; - if (height != that.height) return false; - if (mipLevel != that.mipLevel) return false; - if (missing != that.missing) return false; - return regions.equals(that.regions); - } - - @Override - public int hashCode() { - int result = width; - result = 31 * result + height; - result = 31 * result + mipLevel; - result = 31 * result + missing; - result = 31 * result + regions.hashCode(); - return result; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java deleted file mode 100644 index 9d45ab6b..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureSlot.java +++ /dev/null @@ -1,18 +0,0 @@ -package dev.notalpha.dashloader.client.sprite.stitch; - -import net.minecraft.client.renderer.texture.Stitcher; // TODO: verify Mojang name (Stitcher) - -public class DashTextureSlot { - public final int x; - public final int y; - public final int width; - public final int height; - public transient T contents; - - public DashTextureSlot(int x, int y, int width, int height) { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java deleted file mode 100644 index fa40b0cf..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/DashTextureStitcher.java +++ /dev/null @@ -1,155 +0,0 @@ -package dev.notalpha.dashloader.client.sprite.stitch; - -import dev.notalpha.dashloader.DashLoader; -import dev.notalpha.dashloader.api.collection.IntObjectList; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import net.minecraft.client.renderer.texture.Stitcher; // TODO: verify Mojang name (Stitcher) -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.Nullable; - -import java.util.HashMap; -import java.util.Map; - -public class DashTextureStitcher extends Stitcher { - @Nullable - private ExportedData data; - private int remainingSlots; - - public DashTextureStitcher(int maxWidth, int maxHeight, int mipLevel, @Nullable ExportedData data) { - super(maxWidth, maxHeight, mipLevel); - this.data = data; - this.remainingSlots = data == null ? 0 : data.slots.size(); - } - - @Override - public int getWidth() { - if (this.data == null) { - return super.getWidth(); - } - return data.width; - } - - @Override - public int getHeight() { - if (this.data == null) { - return super.getHeight(); - } - return data.height; - } - - @Override - public void add(T info) { - if (data == null) { - super.add(info); - return; - } - - // If it starts recaching, doRecache will re-add the entries to the list. - var id = info.getId(); - var slot = data.slots.get(id); - if (slot == null) { - DashLoader.LOG.warn("TextureAtlasSprite {} was not cached last time.", id); - - doFallback(); - // This was never added to the slot, so it would not get added to super. - this.add(info); - return; - } - - if (slot.contents != null) { - DashLoader.LOG.warn("TextureAtlasSprite {} was added twice??", id); - } - - remainingSlots -= 1; - slot.contents = info; - - if (slot.width != info.getWidth() || slot.height != info.getHeight()) { - DashLoader.LOG.warn("TextureAtlasSprite {} had changed dimensions since last launch, falling back.", id); - doFallback(); - } - } - - public void doFallback() { - if (data != null) { - DashLoader.LOG.error("Using fallback on texture stitcher."); - var slots = data.slots; - data = null; - slots.forEach((identifier, tDashTextureSlot) -> { - if (tDashTextureSlot.contents != null) { - this.add(tDashTextureSlot.contents); - } - }); - } else { - DashLoader.LOG.error("Tried to fallback stitcher twice."); - } - } - - @Override - public void stitch() { - if (data != null && remainingSlots != 0) { - DashLoader.LOG.warn("Remaining slots did not match the cached amount, Falling back."); - data.slots.forEach((identifier, tDashTextureSlot) -> { - if (tDashTextureSlot.contents == null) { - DashLoader.LOG.error("TextureAtlasSprite {} was not requested", identifier); - } - }); - doFallback(); - } - - if (data == null) { - super.stitch(); - } - } - - @Override - public void getStitchedSprites(SpriteConsumer consumer) { - if (data == null) { - super.getStitchedSprites(consumer); - } else { - data.slots.forEach((identifier, dashTextureSlot) -> consumer.load(dashTextureSlot.contents, dashTextureSlot.x, dashTextureSlot.y)); - } - } - - public static class Data { - public final IntObjectList> slots; - public final int width; - public final int height; - - public Data(IntObjectList> slots, int width, int height) { - this.slots = slots; - this.width = width; - this.height = height; - } - - public Data(RegistryWriter factory, Stitcher stitcher) { - this.slots = new IntObjectList<>(); - stitcher.getStitchedSprites((info, x, y) -> this.slots.put(factory.add(info.getId()), new DashTextureSlot<>(x, y, info.getWidth(), info.getHeight()))); - this.width = stitcher.getWidth(); - this.height = stitcher.getHeight(); - } - - public ExportedData export(RegistryReader reader) { - var output = new HashMap>(); - this.slots.forEach((key, value) -> output.put(reader.get(key), value)); - - return new ExportedData<>( - output, - width, - height - ); - } - } - - public static class ExportedData { - public final Map> slots; - public final int width; - public final int height; - - public ExportedData(Map> slots, int width, int height) { - this.slots = slots; - this.width = width; - this.height = height; - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java b/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java deleted file mode 100644 index 19005d60..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/sprite/stitch/SpriteStitcherModule.java +++ /dev/null @@ -1,91 +0,0 @@ -package dev.notalpha.dashloader.client.sprite.stitch; - -import dev.notalpha.dashloader.DashLoader; -import dev.notalpha.dashloader.api.CachingData; -import dev.notalpha.dashloader.api.DashModule; -import dev.notalpha.dashloader.api.cache.Cache; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.api.collection.IntObjectList; -import dev.notalpha.dashloader.api.registry.RegistryReader; -import dev.notalpha.dashloader.api.registry.RegistryWriter; -import dev.notalpha.dashloader.config.ConfigHandler; -import dev.notalpha.dashloader.config.Option; -import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.renderer.texture.Stitcher; // TODO: verify Mojang name (Stitcher) -import net.minecraft.resources.ResourceLocation; -import org.apache.commons.lang3.tuple.Pair; - -import java.util.*; - -public class SpriteStitcherModule implements DashModule { - public final static CachingData>>> STITCHERS_SAVE = new CachingData<>(CacheStatus.SAVE); - public final static CachingData>> STITCHERS_LOAD = new CachingData<>(CacheStatus.LOAD); - - @Override - public void reset(Cache cache) { - STITCHERS_SAVE.reset(cache, new ArrayList<>()); - STITCHERS_LOAD.reset(cache, new HashMap<>()); - } - - @Override - public Data save(RegistryWriter writer, StepTask task) { - task.reset(2); - - var stitchers = new HashMap>(); - var duplicate = new HashSet(); - task.run(new StepTask("Caching Stitchers"), (stepTask) -> stepTask.doForEach(STITCHERS_SAVE.get(CacheStatus.SAVE), (pair) -> { - var identifier = pair.getLeft(); - var textureStitcher = pair.getRight(); - DashTextureStitcher.Data existing = stitchers.put(identifier, new DashTextureStitcher.Data<>(writer, textureStitcher)); - if (existing != null) { - duplicate.add(identifier); - } - })); - duplicate.forEach(identifier -> { - DashLoader.LOG.warn("Duplicate stitcher {}", identifier); - stitchers.remove(identifier); - }); - - var output = new IntObjectList>(); - - stitchers.forEach((identifier, data) -> output.put(writer.add(identifier), data)); - - //var results = new IntObjectList(); - //task.run(new StepTask("Caching Atlases"), (stepTask) -> { - // var map = ATLASES.get(CacheStatus.SAVE); - // stepTask.doForEach(map, (identifier, stitchResult) -> { - // StepTask atlases = new StepTask("atlas", stitchResult.regions().size()); - // task.setSubTask(atlases); - // results.put(factory.add(identifier), new DashStitchResult(stitchResult, factory, atlases)); - // }); - //}); - - return new Data(output); - } - - @Override - public void load(Data data, RegistryReader reader, StepTask task) { - var map = new HashMap>(); - data.stitchers.forEach((key, value) -> map.put(reader.get(key), value.export(reader))); - STITCHERS_LOAD.set(CacheStatus.LOAD, map); - } - - @Override - public Class getDataClass() { - return Data.class; - } - - @Override - public boolean isActive() { - return ConfigHandler.optionActive(Option.CACHE_SPRITE_STITCHING); - } - - public static final class Data { - public final IntObjectList> stitchers; - - public Data( - IntObjectList> stitchers) { - this.stitchers = stitchers; - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/Color.java b/src/main/java/dev/notalpha/dashloader/client/ui/Color.java deleted file mode 100644 index 82f86854..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/ui/Color.java +++ /dev/null @@ -1,45 +0,0 @@ -package dev.notalpha.dashloader.client.ui; - -public class Color { - private final int rgba; - - public Color(int rgba) { - this.rgba = rgba; - } - - public Color(int red, int green, int blue, int alpha) { - this.rgba = ((red & 0xFF) << 24) | ((green & 0xFF) << 16) | ((blue & 0xFF) << 8) | (alpha & 0xFF); - } - - public Color(int red, int green, int blue) { - this(red, green, blue, 255); - } - - public int red() { - return (rgba >>> 24) & 0xFF; - } - - public int green() { - return (rgba >>> 16) & 0xFF; - } - - public int blue() { - return (rgba >>> 8) & 0xFF; - } - - public int alpha() { - return rgba & 0xFF; - } - - public int rgb() { - return rgba >>> 8; - } - - public int rgba() { - return rgba; - } - - public int argb() { - return this.rgb() | (this.alpha() << 24); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java b/src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java deleted file mode 100644 index 2e6078d5..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/ui/ConfigScreen.java +++ /dev/null @@ -1,78 +0,0 @@ -package dev.notalpha.dashloader.client.ui; - -import dev.notalpha.dashloader.client.ui.widget.ConfigListWidget; -import dev.notalpha.dashloader.config.ConfigHandler; -import dev.notalpha.dashloader.config.Option; -import dev.notalpha.dashloader.misc.TranslationHelper; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.components.Button; -import net.minecraft.client.gui.components.StringWidget; -import net.minecraft.client.gui.components.CommonTexts; // TODO: verify Mojang name -import net.minecraft.network.chat.Component; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -public class ConfigScreen extends Screen { - private final Screen parent; - private final TranslationHelper translations = TranslationHelper.getInstance(); - private boolean listInitialized; - private ConfigListWidget configWidget; - - public ConfigScreen(Screen parent) { - super(Component.of("Dashloader config")); - this.parent = parent; - } - - @Override - public void init() { - initConfigWidget(); - - this.addDrawable(new StringWidget(0, 10, this.width, this.textRenderer.fontHeight / 2, Component.of(translations.get("config.title")), this.textRenderer)); - this.addDrawableChild(configWidget).update(); - - this.addDrawableChild(Button.builder(CommonTexts.CANCEL, button -> this.client.setScreen(this.parent)).dimensions(this.width / 2 - 154, this.height - 28, 150, 20).build()); - this.addDrawableChild(Button.builder(CommonTexts.DONE, button -> { - this.saveConfig(); - this.client.setScreen(this.parent); - }).dimensions(this.width / 2 + 4, this.height - 28, 150, 20).build()); - } - - private void initConfigWidget() { - if (this.listInitialized) { - this.configWidget.setDimensionsAndPosition(this.width, this.height - 57, 0, 24); - return; - } - - this.listInitialized = true; - this.configWidget = new ConfigListWidget(this.client, this.width, this.height - 57, 24, 20); - var list = configWidget; - - var config = ConfigHandler.INSTANCE.config; - - list.addCategory("config.category.behaviour"); - list.addIntSlider("config.compression", config.compression, 3, 0, 23, v -> config.compression = (byte) v); - list.addIntField("config.max_caches", config.maxCaches, 5, v -> config.maxCaches = v); - list.addBoolToggle("config.single_threaded_reading", config.singleThreadedReading, false, v -> config.singleThreadedReading = v); - - list.addCategory("config.category.visuals"); - list.addBoolToggle("config.caching_toast", config.showCachingToast, true, v -> config.showCachingToast = v); - list.addBoolToggle("config.default_splashes", config.addDefaultSplashLines, true, v -> config.addDefaultSplashLines = v); - - var splashes = config.customSplashLines.stream().map(s -> s.replace(";", ";;")).collect(Collectors.joining(";")); - - list.addTextField("config.custom_splashes", splashes, "", - v -> config.customSplashLines = v.isEmpty() ? List.of() : Arrays.stream(v.replace(";;", "\u0001").split(";")).map(s -> s.replace("\u0001", ";")).toList()); - - list.addCategory("config.category.features"); - for (Option module : Option.values()) { - list.addBoolToggle("config." + module.toString(), config.options.getOrDefault(module.toString(), true), true, v -> config.options.put(module.toString(), v)); - } - } - - private void saveConfig() { - this.configWidget.saveValues(); - ConfigHandler.INSTANCE.saveConfig(); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java b/src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java deleted file mode 100644 index 21d0e4b4..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/ui/DrawerUtil.java +++ /dev/null @@ -1,154 +0,0 @@ -package dev.notalpha.dashloader.client.ui; - -import net.minecraft.client.gui.Font; // TODO: verify Mojang name (Font) -import net.minecraft.client.gui.GuiGraphics; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.network.chat.Component; -import org.joml.Matrix4f; - -public class DrawerUtil { - public static final float GLOW_SIZE = 30f; - public static final float GLOW_STRENGTH = 0.1f; - public static final Color FAILED_COLOR = new Color(250, 68, 51); - public static final Color BACKGROUND_COLOR = new Color(34, 31, 34); - public static final Color FOREGROUND_COLOR = new Color(252, 252, 250); - public static final Color STATUS_COLOR = new Color(180, 180, 180); - public static final Color NEUTRAL_LINE = new Color(45, 42, 46); - public static final Color PROGRESS_TRACK = new Color(25, 25, 25); - private static final Color[] PROGRESS_COLORS = new Color[]{ - new Color(0xff, 0x61, 0x88), - new Color(0xfc, 0x98, 0x67), - new Color(0xff, 0xd8, 0x66), - new Color(0xa9, 0xdc, 0x76) - }; - - public static void drawRect(GuiGraphics context, int x, int y, int width, int height, Color color) { - final int x2 = width + x; - final int y2 = height + y; - context.fill(x, y, x2, y2, color.argb()); - } - - public static void drawText(GuiGraphics context, Font textRenderer, int x, int y, String text, Color color) { - context.drawTextWithShadow(textRenderer, Component.of(text), x, y - (textRenderer.fontHeight), color.argb()); - } - - private static void drawVertex(Matrix4f m4f, VertexConsumer c, float x, float y, Color color) { - c.vertex(m4f, x, y, 0f).color(color.red(), color.green(), color.blue(), color.alpha()); - } - - public static void drawGlow(Matrix4f b4, VertexConsumer c, float x, float y, float width, float height, float strength, Color color, boolean topLeft, boolean topRight, boolean bottomLeft, boolean bottomRight) { - Color end = withOpacity(color, 0); - Color glow = withOpacity(color, GLOW_STRENGTH * strength); - - Color tl = topLeft ? glow : end; - Color tr = topRight ? glow : end; - Color bl = bottomLeft ? glow : end; - Color br = bottomRight ? glow : end; - - Color tlEnd = new Color(tl.red(), tl.green(), tl.blue(), 0); - Color trEnd = new Color(tr.red(), tr.green(), tr.blue(), 0); - Color blEnd = new Color(bl.red(), bl.green(), bl.blue(), 0); - Color brEnd = new Color(br.red(), br.green(), br.blue(), 0); - - float x2 = x + width; - float y2 = y + height; - - // Inside - drawVertex(b4, c, x, y2, bl); // left bottom - drawVertex(b4, c, x2, y2, br); // right bottom - drawVertex(b4, c, x2, y, tr); // right top - drawVertex(b4, c, x, y, tl); // left top - - // Top - drawVertex(b4, c, x, y, tl); // left bottom - drawVertex(b4, c, x2, y, tr); // right bottom - drawVertex(b4, c, x2, y - GLOW_SIZE, trEnd); // right top - drawVertex(b4, c, x, y - GLOW_SIZE, tlEnd); // left top - - // Top Right - drawVertex(b4, c, x2, y - GLOW_SIZE, trEnd); // left top - drawVertex(b4, c, x2, y, tr); // left bottom - drawVertex(b4, c, x2 + GLOW_SIZE, y, trEnd); // right bottom - drawVertex(b4, c, x2 + GLOW_SIZE, y - GLOW_SIZE, trEnd); // right top - - // Top Left - drawVertex(b4, c, x, y - GLOW_SIZE, tlEnd); // right top - drawVertex(b4, c, x - GLOW_SIZE, y - GLOW_SIZE, tlEnd); // left top - drawVertex(b4, c, x - GLOW_SIZE, y, tlEnd); // left bottom - drawVertex(b4, c, x, y, tl); // right bottom - - // Bottom - drawVertex(b4, c, x2, y2 + GLOW_SIZE, brEnd); // right bottom - drawVertex(b4, c, x2, y2, br); // right top - drawVertex(b4, c, x, y2, bl); // left top - drawVertex(b4, c, x, y2 + GLOW_SIZE, blEnd); // left bottom - - // Bottom Right - drawVertex(b4, c, x2 + GLOW_SIZE, y2, brEnd); // right top - drawVertex(b4, c, x2, y2, br); // left top - drawVertex(b4, c, x2, y2 + GLOW_SIZE, brEnd); // left bottom - drawVertex(b4, c, x2 + GLOW_SIZE, y2 + GLOW_SIZE, brEnd); // right bottom - - // Bottom Left - drawVertex(b4, c, x - GLOW_SIZE, y2, blEnd); // left top - drawVertex(b4, c, x - GLOW_SIZE, y2 + GLOW_SIZE, blEnd); // left bottom - drawVertex(b4, c, x, y2 + GLOW_SIZE, blEnd); // right bottom - drawVertex(b4, c, x, y2, bl); // right top - - // Right - drawVertex(b4, c, x2, y, tr); // left top - drawVertex(b4, c, x2, y2, br); // left bottom - drawVertex(b4, c, x2 + GLOW_SIZE, y2, brEnd); // right bottom - drawVertex(b4, c, x2 + GLOW_SIZE, y, trEnd); // right top - - // Left - drawVertex(b4, c, x - GLOW_SIZE, y2, blEnd); // left bottom - drawVertex(b4, c, x, y2, bl); // right bottom - drawVertex(b4, c, x, y, tl); // right top - drawVertex(b4, c, x - GLOW_SIZE, y, tlEnd); // left top - } - - public static int convertColor(Color color) { - return color.rgb() | color.alpha() << 24; - } - - public static Color withOpacity(Color color, float opacity) { - float currentOpacity = color.alpha() / 255f; - return new Color(color.red(), color.green(), color.blue(), (int) ((opacity * currentOpacity) * 255)); - } - - public static Color getProgressColor(double progress) { - return mix(progress, PROGRESS_COLORS); - } - - private static Color mix(double pos, Color... colors) { - if (colors.length == 1) { - return colors[0]; - } - pos = Math.min(1, Math.max(0, pos)); - int breaks = colors.length - 1; - if (pos == 1) { - return colors[breaks]; - } - int colorPos = (int) Math.floor(pos * (breaks)); - final double step = 1d / (breaks); - double localRatio = (pos % step) * breaks; - return blend(colors[colorPos], colors[colorPos + 1], localRatio); - } - - private static Color blend(Color i1, Color i2, double ratio) { - if (ratio > 1f) { - ratio = 1f; - } else if (ratio < 0f) { - ratio = 0f; - } - double iRatio = 1.0f - ratio; - - int a = (int) ((i1.alpha() * iRatio) + (i2.alpha() * ratio)); - int r = (int) ((i1.red() * iRatio) + (i2.red() * ratio)); - int g = (int) ((i1.green() * iRatio) + (i2.green() * ratio)); - int b = (int) ((i1.blue() * iRatio) + (i2.blue() * ratio)); - - return new Color(r, g, b, a); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java deleted file mode 100644 index 2ddc2498..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToast.java +++ /dev/null @@ -1,255 +0,0 @@ -package dev.notalpha.dashloader.client.ui.toast; - -import dev.notalpha.dashloader.client.ui.Color; -import dev.notalpha.dashloader.client.ui.DrawerUtil; -import dev.notalpha.dashloader.misc.HahaManager; -import net.minecraft.client.gui.Font; // TODO: verify Mojang name (Font) -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.RenderType; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.gui.components.toasts.Toast; -import net.minecraft.client.gui.components.toasts.ToastComponent; -import net.minecraft.util.Mth; -import org.jetbrains.annotations.Nullable; -import org.joml.Matrix4f; -import org.joml.Vector4f; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; -import java.util.function.BiConsumer; - -public class DashToast implements Toast { - private static final int PROGRESS_BAR_HEIGHT = 2; - private static final int PADDING = 8; - private static final int LINES = 125; - public final DashToastState state; - private final Random random = new Random(); - @Nullable - private final String fact = HahaManager.getFact(); - private List lines = new ArrayList<>(); - private long oldTime = System.currentTimeMillis(); - private float progress = 0; - private Color progressColor = DrawerUtil.getProgressColor(progress); - private Visibility visibility; - - public DashToast() { - this.state = new DashToastState(); - // Create lines - for (int i = 0; i < LINES; i++) { - this.lines.add(new Line()); - } - } - - private static void drawVertex(Matrix4f m4f, VertexConsumer consumer, float z, float x, float y, Color color) { - consumer.vertex(m4f, x, y, z).color(color.red(), color.green(), color.blue(), color.alpha()); - } - - public int getWidth() { - return 200; - } - - public int getHeight() { - return 40; - } - - @Override - public Visibility getVisibility() { - return visibility; - } - - @Override - public void update(ToastComponent manager, long time) { - // Get progress - if (state.getStatus() == DashToastStatus.CRASHED) { - progress = (float) this.state.getProgress(); - progressColor = DrawerUtil.FAILED_COLOR; - } else { - progress = (float) this.state.getProgress(); - progressColor = DrawerUtil.getProgressColor(progress); - } - - if (state.getStatus() == DashToastStatus.CRASHED && System.currentTimeMillis() - state.getTimeDone() > 10000) { - visibility = Visibility.HIDE; - } else if (state.getStatus() == DashToastStatus.DONE && System.currentTimeMillis() - state.getTimeDone() > 2000) { - visibility = Visibility.HIDE; - } else { - visibility = Visibility.SHOW; - } - } - - @Override - public void draw(GuiGraphics context, Font textRenderer, long startTime) { - final int width = this.getWidth(); - final int height = this.getHeight(); - final int barY = height - PROGRESS_BAR_HEIGHT; - - // Tick progress - List newList = new ArrayList<>(); - List newListPrio = new ArrayList<>(); - long currentTime = System.currentTimeMillis(); - for (Line line : this.lines) { - if (line.tick(width, height, progress, (currentTime - this.oldTime) / 17f)) { - newListPrio.add(line); - } else { - newList.add(line); - } - } - this.oldTime = currentTime; - this.lines = newList; - this.lines.addAll(newListPrio); - - // Setup scissor - { - Vector4f vec = new Vector4f(0.0f, 0.0f, 0.0f, 1.0f); - vec.mul(context.getMatrices().peek().getPositionMatrix()); - context.enableScissor((int) vec.x, (int) vec.y, (int) (vec.x + width), (int) (vec.y + height)); - } - - // Draw the ui - DrawerUtil.drawRect(context, 0, 0, width, height, DrawerUtil.BACKGROUND_COLOR); - - // Draw the background lines. - this.drawRaw(context, (matrix4f, consumer) -> { - for (Line line : lines) { - line.draw(matrix4f, consumer); - } - }); - - // Draw progress text - String progressText = this.state.getProgressText(); - int progressTextY = this.fact != null ? barY - PADDING : (barY / 2) + (textRenderer.fontHeight / 2); - DrawerUtil.drawText(context, textRenderer, PADDING, progressTextY, this.state.getText(), DrawerUtil.STATUS_COLOR); - DrawerUtil.drawText(context, textRenderer, (width - PADDING) - textRenderer.getWidth(progressText), progressTextY, progressText, DrawerUtil.STATUS_COLOR); - - if (this.fact != null) { - // Draw the fun fact - DrawerUtil.drawText(context, textRenderer, PADDING, textRenderer.fontHeight + PADDING, this.fact, DrawerUtil.FOREGROUND_COLOR); - } - - // Draw progress bar - DrawerUtil.drawRect(context, 0, barY, width, PROGRESS_BAR_HEIGHT, DrawerUtil.PROGRESS_TRACK); - DrawerUtil.drawRect(context, 0, barY, (int) (width * progress), PROGRESS_BAR_HEIGHT, progressColor); - - // Epic rtx graphics. aka I slapped some glow on the things. - this.drawRaw(context, (matrix4f, consumer) -> { - // Line glow - for (Line line : lines) { - line.drawGlow(matrix4f, consumer); - } - // Progress bar glow - DrawerUtil.drawGlow(matrix4f, consumer, 0, barY, (int) (width * progress), PROGRESS_BAR_HEIGHT, 0.75f, progressColor, true, true, true, true); - }); - context.disableScissor(); - } - - private void drawRaw(GuiGraphics context, BiConsumer consumer) { - var matrix = context.getMatrices().peek().getPositionMatrix(); - var vertexConsumer = context.vertexConsumers.getBuffer(RenderType.getGui()); - - consumer.accept(matrix, vertexConsumer); - } - - public enum ColorKind { - Neutral, - Progress, - Crashed, - } - - private final class Line { - public final int width; - public final int height; - public ColorKind colorKind; - public float x; - public float y; - public float speedBoost; - private Color color; - - public Line() { - this.x = -1000; - this.y = -1000; - this.width = DashToast.this.random.nextInt(30, 50); - this.height = DashToast.this.random.nextInt(2, 5); - this.colorKind = ColorKind.Neutral; - this.color = new Color(0xFF0000FF); - } - - public boolean tick(int screenWidth, int screenHeight, float progress, float delta) { - // Move the values - this.x += (float) (speedBoost * (0.8 + (2.5 * progress))) * delta; - - // Check if not visible - if (x > screenWidth || x + width < 0) { - // Randomize position - this.x = -width; - this.y = screenHeight * DashToast.this.random.nextFloat(); - - // Randomise color - if (state.getStatus() == DashToastStatus.CRASHED) { - if (DashToast.this.random.nextFloat() > 0.9 || this.colorKind == ColorKind.Progress) { - this.colorKind = ColorKind.Crashed; - } - } else { - if (DashToast.this.random.nextFloat() > 0.95) { - this.colorKind = ColorKind.Progress; - } else { - this.colorKind = ColorKind.Neutral; - } - } - - // Randomise speed based on some values. - // Weight (the size of the line), 0.2 deviation - float weight = 1f - getWeight(); - float weightSpeed = (float) (0.7 + (weight * 0.6)); - - // Kind (The type of line), - float kindSpeed; - if (this.colorKind == ColorKind.Neutral) { - kindSpeed = (float) (1.0 + (DashToast.this.random.nextFloat() * 0.2f)); - } else { - kindSpeed = (float) (1.0 + (DashToast.this.random.nextFloat() * 0.8f)); - } - - this.speedBoost = kindSpeed * weightSpeed; - return this.colorKind != ColorKind.Neutral; - } - this.color = getColor(progress); - - return false; - } - - public void draw(Matrix4f b4, VertexConsumer c) { - Color end = DrawerUtil.withOpacity(color, 0f); - drawVertex(b4, c, 0f, x + width, y, color); // right top - drawVertex(b4, c, 0f, x, y, end); // left top - drawVertex(b4, c, 0f, x, y + height, end); // left bottom - drawVertex(b4, c, 0f, x + width, y + height, color); // right bottom - } - - public void drawGlow(Matrix4f b4, VertexConsumer c) { - if (this.colorKind != ColorKind.Neutral) { - DrawerUtil.drawGlow(b4, c, x, y, width, height, (getWeight() + 2.0f) / 3.0f, this.color, false, true, false, true); - } - } - - public Color getColor(double progress) { - Color color = switch (this.colorKind) { - case Neutral -> DrawerUtil.NEUTRAL_LINE; - case Progress -> { - if (state.getStatus() == DashToastStatus.CRASHED) { - yield DrawerUtil.FAILED_COLOR; - } - - yield DrawerUtil.getProgressColor(progress); - } - case Crashed -> DrawerUtil.FAILED_COLOR; - }; - - return DrawerUtil.withOpacity(color, Mth.clamp(((this.x) / (this.width)), 0.0f, 1.0f)); - } - - public float getWeight() { - return ((this.width * (float) this.height) - 60f) / 190f; - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java deleted file mode 100644 index 279812bd..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastState.java +++ /dev/null @@ -1,113 +0,0 @@ -package dev.notalpha.dashloader.client.ui.toast; - -import dev.notalpha.dashloader.DashLoader; -import dev.notalpha.dashloader.misc.TranslationHelper; -import dev.notalpha.taski.ParentTask; -import dev.notalpha.taski.Task; -import dev.notalpha.taski.builtin.AbstractTask; -import dev.notalpha.taski.builtin.StaticTask; -import net.minecraft.client.Minecraft; - -public final class DashToastState { - private final TranslationHelper translations; - public Task task = new StaticTask("Idle", 0); - private String overwriteText; - private DashToastStatus status; - private double currentProgress = 0; - private long lastUpdate = System.currentTimeMillis(); - private long timeDone = System.currentTimeMillis(); - - public DashToastState() { - var langCode = Minecraft.getInstance().getLanguageManager().getLanguage(); - DashLoader.LOG.info(langCode); - this.translations = TranslationHelper.getInstance(); - } - - private void tickProgress() { - if (Double.isNaN(this.currentProgress)) { - this.currentProgress = 0.0; - } - final double actualProgress = task.getProgress(); - final double divisionSpeed = (actualProgress < this.currentProgress) ? 3 : 30; - double currentProgress1 = (actualProgress - this.currentProgress) / divisionSpeed; - this.currentProgress += currentProgress1; - } - - public double getProgress() { - final long currentTime = System.currentTimeMillis(); - while (currentTime > this.lastUpdate) { - this.tickProgress(); - this.lastUpdate += 10; // ~100ups - } - return this.currentProgress; - } - - public String getText() { - if (this.overwriteText != null) { - return this.overwriteText; - } - - String text = concatTask(3, task); - return this.translations.get(text); - } - - public String getProgressText() { - return this.getProgressText(3, task); - } - - private String concatTask(int depth, Task task) { - String name = null; - if (task instanceof AbstractTask abstractTask) { - name = abstractTask.getName(); - } - - if (task instanceof ParentTask stepTask) { - Task subTask = stepTask.getChild(); - if (depth > 1) { - String subName = concatTask(depth - 1, subTask); - if (subName != null) { - return name + "." + subName; - } - } - } - - return name; - } - - private String getProgressText(int depth, Task task) { - if (task instanceof ParentTask stepTask) { - Task subTask = stepTask.getChild(); - if (depth > 1) { - String subName = getProgressText(depth - 1, subTask); - if (subName != null) { - return subName; - } - } - } - - if (task instanceof AbstractTask abstractTask) { - return abstractTask.getProgressText(); - } - return null; - } - - public void setOverwriteText(String overwriteText) { - this.overwriteText = this.translations.get(overwriteText); - } - - public DashToastStatus getStatus() { - return status; - } - - public void setStatus(DashToastStatus status) { - this.status = status; - } - - public long getTimeDone() { - return timeDone; - } - - public void setDone() { - this.timeDone = System.currentTimeMillis(); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastStatus.java b/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastStatus.java deleted file mode 100644 index 3b3e79b9..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/ui/toast/DashToastStatus.java +++ /dev/null @@ -1,7 +0,0 @@ -package dev.notalpha.dashloader.client.ui.toast; - -public enum DashToastStatus { - PROGRESS, - CRASHED, - DONE -} diff --git a/src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java b/src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java deleted file mode 100644 index 0c8d53be..00000000 --- a/src/main/java/dev/notalpha/dashloader/client/ui/widget/ConfigListWidget.java +++ /dev/null @@ -1,298 +0,0 @@ -package dev.notalpha.dashloader.client.ui.widget; - -import dev.notalpha.dashloader.misc.TranslationHelper; -import it.unimi.dsi.fastutil.booleans.BooleanConsumer; -import it.unimi.dsi.fastutil.chars.CharPredicate; -import it.unimi.dsi.fastutil.ints.IntConsumer; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.components.events.GuiEventListener; -import net.minecraft.client.gui.narration.NarratableEntry; -import net.minecraft.client.gui.components.Tooltip; -import net.minecraft.client.gui.components.*; // TODO: verify Mojang package for widget.* -import net.minecraft.client.gui.components.CommonTexts; // TODO: verify Mojang name -import net.minecraft.network.chat.Component; - -import java.util.List; -import java.util.Objects; -import java.util.function.Consumer; - -public class ConfigListWidget extends ElementListWidget { - public static final int INPUT_FIELD_WIDTH = 75; - public static final int RESET_BUTTON_WIDTH = 50; - private final TranslationHelper translations = TranslationHelper.getInstance(); - - public ConfigListWidget(Minecraft minecraftClient, int i, int j, int k, int l) { - super(minecraftClient, i, j, k, l); - } - - @SuppressWarnings("UnusedReturnValue") - public int addCategory(String label) { - return addEntry(new CategoryEntry(label)); - } - - @SuppressWarnings("UnusedReturnValue") - public int addBoolToggle(String label, boolean value, boolean defaultValue, BooleanConsumer saveCallback) { - return addEntry(new BoolConfigEntry(label, value, defaultValue, saveCallback)); - } - - @SuppressWarnings("UnusedReturnValue") - public int addIntSlider(String label, int value, int defaultValue, int min, int max, IntConsumer saveCallback) { - return addEntry(new IntSliderConfigEntry(label, value, defaultValue, min, max, saveCallback)); - } - - @SuppressWarnings("UnusedReturnValue") - public int addTextField(String label, String value, String defaultValue, Consumer saveCallback) { - return addEntry(new TextFieldEntry(label, value, defaultValue, c -> true, saveCallback)); - } - - @SuppressWarnings("UnusedReturnValue") - public int addIntField(String label, int value, int defaultValue, IntConsumer saveCallback) { - return addEntry(new IntFieldEntry(label, value, defaultValue, saveCallback)); - } - - public void saveValues() { - this.children().forEach(child -> { - if (child instanceof ConfigEntry entry) { - entry.saveValue(); - } - }); - } - - @Override - public int getRowWidth() { - return 340; - } - - public void update() { - this.children().forEach(Entry::update); - } - - abstract class Entry extends ElementListWidget.Entry { - public Component label; - - Entry(String label) { - this.label = Component.of(translations.get(label)); - } - - void update() { - } - } - - class CategoryEntry extends Entry { - CategoryEntry(String label) { - super(label); - } - - @Override - public void render(GuiGraphics context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { - final var textRenderer = ConfigListWidget.this.client.textRenderer; - context.drawText( - textRenderer, - this.label, - (ConfigListWidget.this.width - textRenderer.getWidth(label)) / 2, - y + entryHeight - ConfigListWidget.this.client.textRenderer.fontHeight - 1, - 0xFFFFFF, - false - ); - } - - @Override - public List selectableChildren() { - return List.of(); - } - - @Override - public List children() { - return List.of(); - } - } - - abstract class ConfigEntry extends Entry { - static final Component RESET_TEXT = Component.translatable("controls.reset"); - protected final T defaultValue; - public ClickableWidget widget; - public Button resetButton; - protected T value; - protected Tooltip tooltip; - protected Consumer saveFunc; - - ConfigEntry(String label, T value, T defaultValue, Consumer saveCallback) { - super(label); - this.value = value; - this.defaultValue = defaultValue; - this.saveFunc = saveCallback; - if (translations.has(label + ".tooltip")) { - this.tooltip = Tooltip.of(Component.of(translations.get(label + ".tooltip"))); - } - - this.resetButton = new Button.Builder(RESET_TEXT, button -> { - this.value = this.defaultValue; - this.updateWidgetText(); - ConfigListWidget.this.update(); - }).width(RESET_BUTTON_WIDTH).build(); - } - - @Override - public void render(GuiGraphics context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { - context.drawText( - ConfigListWidget.this.client.textRenderer, - this.label, - x, - y + (entryHeight - ConfigListWidget.this.client.textRenderer.fontHeight) / 2, - 0xFFFFFF, - false - ); - - this.widget.setPosition(x + entryWidth - INPUT_FIELD_WIDTH - RESET_BUTTON_WIDTH - 5, y - 2); - this.widget.render(context, mouseX, mouseY, tickDelta); - this.resetButton.setPosition(x + entryWidth - RESET_BUTTON_WIDTH, y - 2); - this.resetButton.render(context, mouseX, mouseY, tickDelta); - } - - @Override - public List selectableChildren() { - return List.of(this.widget, this.resetButton); - } - - @Override - public List children() { - return List.of(this.widget, this.resetButton); - } - - @Override - void update() { - this.resetButton.active = !Objects.equals(this.value, this.defaultValue); - } - - public T getValue() { - return this.value; - } - - public void saveValue() { - this.saveFunc.accept(this.value); - } - - abstract void updateWidgetText(); - } - - class BoolConfigEntry extends ConfigEntry { - BoolConfigEntry(String label, boolean value, boolean defaultValue, BooleanConsumer saveCallback) { - super(label, value, defaultValue, saveCallback); - - this.widget = new Button.Builder(CommonTexts.onOrOff(this.value), button -> { - this.value = !(boolean) this.value; - updateWidgetText(); - ConfigListWidget.this.update(); - }).width(INPUT_FIELD_WIDTH).build(); - - this.widget.setTooltip(this.tooltip); - } - - @Override - void updateWidgetText() { - this.widget.setMessage(CommonTexts.onOrOff(this.value)); - } - } - - class IntSliderConfigEntry extends ConfigEntry { - private final int min; - private final int max; - - IntSliderConfigEntry(String label, int value, int defaultValue, int min, int max, IntConsumer saveCallback) { - super(label, value, defaultValue, saveCallback); - this.min = min; - this.max = max; - - this.widget = new Slider(0, 0, INPUT_FIELD_WIDTH, ConfigListWidget.this.itemHeight, Component.of(String.valueOf(value)), min, max, (double) (this.value - min) / (max - min)); - this.widget.setTooltip(this.tooltip); - } - - @Override - void updateWidgetText() { - ((Slider) this.widget).setValue((double) (this.value - this.min) / (this.max - this.min)); - } - - public class Slider extends SliderWidget { - private final double min; - private final double max; - - public Slider(int x, int y, int width, int height, Component message, double min, double max, double value) { - super(x, y, width, height, message, value); - this.min = min; - this.max = max; - } - - @Override - protected void updateMessage() { - this.setMessage(Component.of(String.valueOf((int) this.getValue()))); - } - - @Override - protected void applyValue() { - IntSliderConfigEntry.this.value = (int) this.getValue(); - ConfigListWidget.this.update(); - } - - public double getValue() { - return this.value * (max - min) + min; - } - - public void setValue(double value) { - this.value = value; - updateMessage(); - applyValue(); - } - } - } - - class TextFieldEntry extends ConfigEntry { - CharPredicate filter; - - TextFieldEntry(String label, String value, String defaultValue, CharPredicate filter, Consumer saveCallback) { - super(label, value, defaultValue, saveCallback); - this.filter = filter; - - var textWidget = new TextFieldWidget(ConfigListWidget.this.client.textRenderer, 0, 0, INPUT_FIELD_WIDTH, 20, Component.empty()) { - @Override - public boolean charTyped(char chr, int modifiers) { - if (TextFieldEntry.this.filter.test(chr)) { - return super.charTyped(chr, modifiers); - } - return false; - } - }; - - this.widget = textWidget; - textWidget.setMaxLength(Integer.MAX_VALUE); - textWidget.setText(String.valueOf(this.value)); - textWidget.setChangedListener(text -> { - this.value = text; - ConfigListWidget.this.update(); - }); - - textWidget.setTooltip(this.tooltip); - } - - @Override - void updateWidgetText() { - ((TextFieldWidget) this.widget).setText(this.value); - } - } - - class IntFieldEntry extends TextFieldEntry { - IntFieldEntry(String label, int value, int defaultValue, IntConsumer saveCallback) { - super(label, String.valueOf(value), String.valueOf(defaultValue), chr -> chr >= '0' && chr <= '9', str -> saveCallback.accept(Integer.parseInt(str))); - - ((TextFieldWidget) this.widget).setChangedListener(text -> { - this.value = text.isEmpty() ? "0" : text; - ConfigListWidget.this.update(); - }); - } - - @Override - void updateWidgetText() { - ((TextFieldWidget) this.widget).setText(String.valueOf(this.value)); - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/io/Serializer.java b/src/main/java/dev/notalpha/dashloader/io/Serializer.java index c86414c0..00e1f495 100644 --- a/src/main/java/dev/notalpha/dashloader/io/Serializer.java +++ b/src/main/java/dev/notalpha/dashloader/io/Serializer.java @@ -9,7 +9,6 @@ import dev.notalpha.hyphen.io.ByteBufferIO; import dev.notalpha.hyphen.scan.annotations.DataSubclasses; import dev.notalpha.taski.builtin.StepTask; -import net.minecraft.client.gui.font.UnihexFont; import org.jetbrains.annotations.NotNull; import java.io.IOException; @@ -33,21 +32,6 @@ public Class[] value() { } }); factory.setClassName(getSerializerClassName(aClass)); - factory.addAnnotationProvider(UnihexFont.BitmapGlyph.class, new DataSubclasses() { - @Override - public Class annotationType() { - return DataSubclasses.class; - } - - @Override - public Class[] value() { - return new Class[]{ - UnihexFont.FontImage32x16.class, - UnihexFont.FontImage16x16.class, - UnihexFont.FontImage8x16.class, - }; - } - }); factory.addDynamicDef(NativeImageData.class, NativeImageDataDef::new); this.serializer = factory.build(); diff --git a/src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java b/src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java index e94cb401..01a3ede7 100644 --- a/src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java +++ b/src/main/java/dev/notalpha/dashloader/misc/ObjectDumper.java @@ -41,7 +41,7 @@ public void appendDetail(StringBuffer buffer, String fieldName, Object value) { case HashMap map -> appendDetail(buffer, fieldName, map); case ArrayList list -> appendDetail(buffer, fieldName, list); case NativeImage image -> - buffer.append("Image{ format: ").append(image.getFormat()).append(", size: ").append(image.getWidth()).append("x").append(image.getHeight()).append(" }"); + buffer.append("Image{ format: ").append(image.format()).append(", size: ").append(image.getWidth()).append("x").append(image.getHeight()).append(" }"); case IntBuffer buffer1 -> appendBuff(buffer, buffer1, buffer1::get); case FloatBuffer buffer1 -> appendBuff(buffer, buffer1, buffer1::get); case ByteBuffer buffer1 -> appendBuff(buffer, buffer1, buffer1::get); diff --git a/src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java b/src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java index 2c543c4a..eadefaa4 100644 --- a/src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java +++ b/src/main/java/dev/notalpha/dashloader/misc/TranslationHelper.java @@ -16,7 +16,7 @@ private TranslationHelper() { } public static TranslationHelper getInstance() { - var langCode = Minecraft.getInstance().getLanguageManager().getLanguage(); + var langCode = Minecraft.getInstance().getLanguageManager().getSelected(); if (!Objects.equals(INSTANCE.langCode, langCode)) { INSTANCE.langCode = langCode; INSTANCE.loadLang(langCode); @@ -28,11 +28,11 @@ private void loadLang(String langCode) { this.langCode = langCode; var stream = this.getClass().getClassLoader().getResourceAsStream("dashloader/lang/" + langCode + ".json"); if (stream != null) { - Language.load(stream, this.translations::put); + Language.loadFromJson(stream, this.translations::put); } else { stream = this.getClass().getClassLoader().getResourceAsStream("dashloader/lang/en_us.json"); if (stream != null) { - Language.load(stream, this.translations::put); + Language.loadFromJson(stream, this.translations::put); } } } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java deleted file mode 100644 index 3cb7c484..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/AndMultipartModelSelectorAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.client.renderer.block.model.multipart.AndCondition; -import net.minecraft.client.renderer.block.model.multipart.Condition; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(AndCondition.class) -public interface AndMultipartModelSelectorAccessor { -@Accessor -Iterable getSelectors(); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java deleted file mode 100644 index b752a93d..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BasicBakedModelAccessor.java +++ /dev/null @@ -1,25 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.client.renderer.block.model.SimpleBakedModel; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(SimpleBakedModel.class) -public interface BasicBakedModelAccessor { - @Accessor - boolean getUsesAo(); - - @Accessor - boolean getHasDepth(); - - @Accessor - boolean getIsSideLit(); - - @Accessor - TextureAtlasSprite getSprite(); - - @Accessor - ItemTransforms getTransformation(); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java index 9954fa3b..e657650e 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontAccessor.java @@ -1,6 +1,6 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gui.font.GlyphContainer; +import net.minecraft.client.gui.font.CodepointMap; import net.minecraft.client.gui.font.providers.BitmapProvider; import com.mojang.blaze3d.platform.NativeImage; import org.spongepowered.asm.mixin.Mixin; @@ -10,12 +10,12 @@ @Mixin(BitmapProvider.class) public interface BitmapFontAccessor { @Invoker("") -static BitmapProvider init(NativeImage image, GlyphContainer glyphs) { +static BitmapProvider init(NativeImage image, CodepointMap glyphs) { throw new AssertionError(); } @Accessor -GlyphContainer getGlyphs(); +CodepointMap getGlyphs(); @Accessor NativeImage getImage(); diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java index 85b0efc5..97fe436b 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/BitmapFontGlyphAccessor.java @@ -1,28 +1,27 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gui.font.providers.BitmapProvider; import com.mojang.blaze3d.platform.NativeImage; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(BitmapProvider.BitmapFontGlyph.class) +@Mixin(targets = "net.minecraft.client.gui.font.providers.BitmapProvider$Glyph") public interface BitmapFontGlyphAccessor { @Invoker("") -static BitmapProvider.BitmapFontGlyph init(float scaleFactor, NativeImage image, int x, int y, int width, int height, int advance, int ascent) { +static Object init(float scaleFactor, NativeImage image, int x, int y, int width, int height, int advance, int ascent) { throw new AssertionError(); } @Accessor NativeImage getImage(); -@Accessor("x") +@Accessor("offsetX") int getX(); -@Accessor("y") +@Accessor("offsetY") int getY(); -@Accessor +@Accessor("scale") float getScaleFactor(); @Accessor diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java index 89ee0c9a..be966684 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FilterMapAccessor.java @@ -1,13 +1,13 @@ package dev.notalpha.dashloader.mixin.accessor; -import net.minecraft.client.gui.font.FontFilterType; +import net.minecraft.client.gui.font.FontOption; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import java.util.Map; -@Mixin(FontFilterType.FilterMap.class) +@Mixin(FontOption.Filter.class) public interface FilterMapAccessor { @Accessor -Map getActiveFilters(); +Map getValues(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerPreparationAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerPreparationAccessor.java new file mode 100644 index 00000000..93058075 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerPreparationAccessor.java @@ -0,0 +1,24 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import com.mojang.blaze3d.font.GlyphProvider; +import net.minecraft.resources.ResourceLocation; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +import java.util.List; +import java.util.Map; + +@Mixin(targets = "net.minecraft.client.gui.font.FontManager$Preparation") +public interface FontManagerPreparationAccessor { + @Invoker("") + static Object create(Map> fontSets, List allProviders) { + throw new AssertionError(); + } + + @Accessor("fontSets") + Map> getFontSets(); + + @Accessor("allProviders") + List getAllProviders(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java deleted file mode 100644 index 6362dc35..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/FontManagerProviderIndexAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.client.gui.font.FontManager; -import net.minecraft.client.gui.font.providers.GlyphProvider; -import net.minecraft.resources.ResourceLocation; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -import java.util.List; -import java.util.Map; - -@Mixin(FontManager.ProviderIndex.class) -public interface FontManagerProviderIndexAccessor { -@Invoker("") -static FontManager.ProviderIndex create(Map> providers, List allProviders) { -throw new AssertionError(); -} -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java deleted file mode 100644 index 4daffb79..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/GlUniformAccessor.java +++ /dev/null @@ -1,30 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import com.mojang.blaze3d.shaders.Uniform; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.nio.FloatBuffer; -import java.nio.IntBuffer; - -@Mixin(Uniform.class) -public interface GlUniformAccessor { - @Accessor - IntBuffer getIntData(); - - @Accessor - @Mutable - void setIntData(IntBuffer intData); - - @Accessor - FloatBuffer getFloatData(); - - @Accessor - @Mutable - void setFloatData(FloatBuffer floatData); - - @Accessor - @Mutable - void setName(String name); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java index 1a75b2f5..2aaeb5e2 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ModelLoaderAccessor.java @@ -3,7 +3,7 @@ import dev.notalpha.hyphen.thr.HyphenException; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.client.renderer.block.model.BlockStatesLoader; // TODO: verify Mojang name +import net.minecraft.client.resources.model.BlockStateDefinitions; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; @@ -11,9 +11,9 @@ import java.util.Map; -@Mixin(BlockStatesLoader.class) +@Mixin(BlockStateDefinitions.class) public interface ModelLoaderAccessor { - @Accessor("ITEM_FRAME_STATE_MANAGER") + @Accessor("ITEM_FRAME_FAKE_DEFINITION") static StateDefinition getTheItemFrameThing() { throw new HyphenException("froge", "your dad"); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java deleted file mode 100644 index 896cf455..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartBakedModelAccessor.java +++ /dev/null @@ -1,24 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.client.renderer.block.model.MultiPartBakedModel; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.BitSet; -import java.util.List; -import java.util.Map; - -@Mixin(MultiPartBakedModel.class) -public interface MultipartBakedModelAccessor { - @Accessor - List getSelectors(); - - @Accessor - Map getStateCache(); - - @Accessor - @Mutable - void setStateCache(Map stateBitSetMap); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java deleted file mode 100644 index 0954e087..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/MultipartModelComponentAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.client.renderer.block.model.MultipartUnbakedModel; -import net.minecraft.client.renderer.block.model.multipart.Condition; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(MultipartUnbakedModel.Selector.class) -public interface MultipartModelComponentAccessor { -@Accessor() -Condition getSelector(); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java index 8501009e..72f3e639 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/NativeImageAccessor.java @@ -12,9 +12,9 @@ static NativeImage init(NativeImage.Format format, int width, int height, boolea throw new AssertionError(); } - @Accessor + @Accessor("pixels") long getPointer(); - @Accessor + @Accessor("useStbFree") boolean getIsStbImage(); } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java deleted file mode 100644 index e43dabaf..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/OrMultipartModelSelectorAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.client.renderer.block.model.multipart.Condition; -import net.minecraft.client.renderer.block.model.multipart.OrCondition; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(OrCondition.class) -public interface OrMultipartModelSelectorAccessor { -@Accessor -Iterable getSelectors(); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java deleted file mode 100644 index d96f3816..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ShaderProgramAccessor.java +++ /dev/null @@ -1,61 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import it.unimi.dsi.fastutil.ints.IntList; -import it.unimi.dsi.fastutil.objects.Object2IntMap; -import com.mojang.blaze3d.shaders.Uniform; -import net.minecraft.client.renderer.CompiledShaderProgram; -import net.minecraft.client.renderer.ShaderProgramConfig; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.List; -import java.util.Map; - -@Mixin(CompiledShaderProgram.class) -public interface ShaderProgramAccessor { - @Accessor - List getSamplers(); - - @Accessor - @Mutable - void setSamplers(List samplers); - - @Accessor - Object2IntMap getSamplerTextures(); - - @Accessor - @Mutable - void setSamplerTextures(Object2IntMap samplerTextures); - - @Accessor - IntList getSamplerLocations(); - - @Accessor - @Mutable - void setSamplerLocations(IntList samplerLocations); - - @Accessor - List getUniforms(); - - @Accessor - @Mutable - void setUniforms(List uniforms); - - @Accessor - Map getUniformsByName(); - - @Accessor - @Mutable - void setUniformsByName(Map uniformsByName); - - @Accessor - @Mutable - Map getUniformDefinitionsByName(); - - @Accessor - @Mutable - void setGlRef(int glRef); -} - - diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java deleted file mode 100644 index 94fee3d3..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SimpleMultipartModelSelectorAccessor.java +++ /dev/null @@ -1,14 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.client.renderer.block.model.multipart.KeyValueCondition; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(KeyValueCondition.class) -public interface SimpleMultipartModelSelectorAccessor { -@Accessor -String getKey(); - -@Accessor -String getValueString(); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java deleted file mode 100644 index 5177e046..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationAccessor.java +++ /dev/null @@ -1,25 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.client.renderer.texture.SpriteContents; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.asm.mixin.gen.Invoker; - -import java.util.List; - -@Mixin(SpriteContents.AnimatedTexture.class) -public interface SpriteAnimationAccessor { - @Invoker("") - static SpriteContents.AnimatedTexture init(SpriteContents parent, List frames, int frameCount, boolean interpolation) { - throw new AssertionError(); - } - - @Accessor - List getFrames(); - - @Accessor - int getFrameCount(); - - @Accessor - boolean getInterpolation(); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java deleted file mode 100644 index e14ffd09..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteAnimationFrameAccessor.java +++ /dev/null @@ -1,20 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.client.renderer.texture.SpriteContents; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(SpriteContents.FrameInfo.class) -public interface SpriteAnimationFrameAccessor { - @Invoker("") - static SpriteContents.FrameInfo newSpriteFrame(int index, int time) { - throw new AssertionError(); - } - - @Accessor - int getIndex(); - - @Accessor - int getTime(); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java deleted file mode 100644 index 8b9f144b..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/SpriteContentsAccessor.java +++ /dev/null @@ -1,46 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import com.mojang.blaze3d.platform.NativeImage; -import net.minecraft.client.renderer.texture.SpriteContents; -import net.minecraft.server.packs.resources.ResourceMetadata; -import net.minecraft.resources.ResourceLocation; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(SpriteContents.class) -public interface SpriteContentsAccessor { - @Accessor - NativeImage getImage(); - - @Accessor - @Mutable - void setImage(NativeImage image); - - @Accessor - SpriteContents.AnimatedTexture getAnimation(); - - @Accessor - @Mutable - void setAnimation(SpriteContents.AnimatedTexture animation); - - @Accessor - @Mutable - void setMipmapLevelsImages(NativeImage[] mipmapLevelsImages); - - @Accessor - @Mutable - void setId(ResourceLocation id); - - @Accessor - @Mutable - void setWidth(int width); - - @Accessor - @Mutable - void setHeight(int height); - - @Accessor - @Mutable - void setMetadata(ResourceMetadata animation); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java deleted file mode 100644 index a5d442ff..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeFontAccessor.java +++ /dev/null @@ -1,35 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.client.gui.font.GlyphContainer; -import net.minecraft.client.gui.font.TrueTypeFont; -import org.lwjgl.util.freetype.FT_Face; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.nio.ByteBuffer; - -@Mixin(TrueTypeFont.class) -public interface TrueTypeFontAccessor { -@Accessor -@Mutable -void setBuffer(ByteBuffer thing); - -@Accessor -FT_Face getFace(); - -@Accessor -@Mutable -void setFace(FT_Face thing); - -@Accessor -float getOversample(); - -@Accessor -@Mutable -void setOversample(float thing); - -@Accessor -@Mutable -void setContainer(GlyphContainer container); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeGlyphProviderAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeGlyphProviderAccessor.java new file mode 100644 index 00000000..8f350916 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/TrueTypeGlyphProviderAccessor.java @@ -0,0 +1,15 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import com.mojang.blaze3d.font.TrueTypeGlyphProvider; +import org.lwjgl.util.freetype.FT_Face; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(TrueTypeGlyphProvider.class) +public interface TrueTypeGlyphProviderAccessor { + @Accessor("face") + FT_Face getFace(); + + @Accessor("oversample") + float getOversample(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java deleted file mode 100644 index 178b394a..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexFontAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.client.gui.font.GlyphContainer; -import net.minecraft.client.gui.font.UnihexFont; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(UnihexFont.class) -public interface UnihexFontAccessor { -@Invoker("") -static UnihexFont create(GlyphContainer glyphs) { -throw new AssertionError(); -} - -@Accessor -GlyphContainer getGlyphs(); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexProviderAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexProviderAccessor.java new file mode 100644 index 00000000..6456bd30 --- /dev/null +++ b/src/main/java/dev/notalpha/dashloader/mixin/accessor/UnihexProviderAccessor.java @@ -0,0 +1,18 @@ +package dev.notalpha.dashloader.mixin.accessor; + +import net.minecraft.client.gui.font.CodepointMap; +import net.minecraft.client.gui.font.providers.UnihexProvider; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(UnihexProvider.class) +public interface UnihexProviderAccessor { + @Invoker("") + static UnihexProvider create(CodepointMap glyphs) { + throw new AssertionError(); + } + + @Accessor("glyphs") + CodepointMap getGlyphs(); +} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java deleted file mode 100644 index 8c9bcce8..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/WeightedBakedModelAccessor.java +++ /dev/null @@ -1,13 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.renderer.block.model.WeightedBakedModel; -import net.minecraft.util.random.DataPool; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(WeightedBakedModel.class) -public interface WeightedBakedModelAccessor { -@Accessor -DataPool getModels(); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java deleted file mode 100644 index fc849c50..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipResourcePackAccessor.java +++ /dev/null @@ -1,11 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.server.packs.FilePackResources; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(FilePackResources.class) -public interface ZipResourcePackAccessor { - @Accessor - FilePackResources.ZipFileWrapper getZipFile(); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java b/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java deleted file mode 100644 index bde43dc5..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/accessor/ZipWrapperResourcePackAccessor.java +++ /dev/null @@ -1,13 +0,0 @@ -package dev.notalpha.dashloader.mixin.accessor; - -import net.minecraft.server.packs.FilePackResources; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.io.File; - -@Mixin(FilePackResources.ZipFileWrapper.class) -public interface ZipWrapperResourcePackAccessor { - @Accessor - File getFile(); -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java deleted file mode 100644 index 5596cc8e..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/main/BootstrapMixin.java +++ /dev/null @@ -1,26 +0,0 @@ -package dev.notalpha.dashloader.mixin.main; - -import dev.notalpha.dashloader.DashLoader; -import dev.notalpha.dashloader.misc.ProfilerUtil; -import net.minecraft.server.Bootstrap; -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; - -@Mixin(value = Bootstrap.class, priority = -69) -public class BootstrapMixin { - @Unique - private static long BOOTSTRAP_START = -1; - - @Inject(method = "initialize", at = @At("HEAD")) - private static void timeStart(CallbackInfo ci) { - BOOTSTRAP_START = System.currentTimeMillis(); - } - - @Inject(method = "initialize", at = @At("TAIL")) - private static void timeStop(CallbackInfo ci) { - DashLoader.LOG.info("Minecraft bootstrap in {}", ProfilerUtil.getTimeStringFromStart(BOOTSTRAP_START)); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java deleted file mode 100644 index 48e6a872..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/main/KeyboardMixin.java +++ /dev/null @@ -1,47 +0,0 @@ -package dev.notalpha.dashloader.mixin.main; - -import dev.notalpha.dashloader.DashLoader; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.DashLoaderClient; -import net.minecraft.client.KeyboardHandler; -import org.lwjgl.glfw.GLFW; -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; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -/** - * Makes f3 + t reset the cache. Also makes shift + f3 + t not reset it. - */ -@Mixin(KeyboardHandler.class) -public class KeyboardMixin { - @Unique - private boolean shiftHeld = false; - - @Inject( - method = "processF3", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/Minecraft;reloadResources()Ljava/util/concurrent/CompletableFuture;", - shift = At.Shift.BEFORE - ) - ) - private void f3tReloadWorld(int key, CallbackInfoReturnable cir) { - if (!this.shiftHeld) { - if (DashLoaderClient.CACHE.getStatus() == CacheStatus.IDLE) { - DashLoader.LOG.info("Clearing cache."); - DashLoaderClient.CACHE.remove(); - } - } - } - - @Inject( - method = "onKey", - at = @At("HEAD") - ) - private void keyPress(long window, int key, int scancode, int action, int modifiers, CallbackInfo ci) { - this.shiftHeld = action != 0 && modifiers == GLFW.GLFW_MOD_SHIFT; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java deleted file mode 100644 index 655b1474..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/main/MinecraftClientMixin.java +++ /dev/null @@ -1,34 +0,0 @@ -package dev.notalpha.dashloader.mixin.main; - -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.DashLoaderClient; -import net.minecraft.client.Minecraft; -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.concurrent.CompletableFuture; - -@Mixin(Minecraft.class) -public abstract class MinecraftClientMixin { - @Shadow - protected abstract void render(boolean tick); - - @Inject(method = "reloadResources()Ljava/util/concurrent/CompletableFuture;", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;reloadResources(ZLnet/minecraft/client/Minecraft$LoadingContext;)Ljava/util/concurrent/CompletableFuture;")) - private void requestReload(CallbackInfoReturnable> cir) { - DashLoaderClient.NEEDS_RELOAD = true; - } - - @Inject(method = "reloadResources(ZLnet/minecraft/client/Minecraft$LoadingContext;)Ljava/util/concurrent/CompletableFuture;", at = @At(value = "RETURN")) - private void reloadComplete(boolean force, Minecraft.LoadingContext loadingContext, CallbackInfoReturnable> cir) { - cir.getReturnValue().thenRun(() -> { - // If the state is SAVE, then this will reset before the caching process can initialize from the splash screen. - if (DashLoaderClient.CACHE.getStatus() != CacheStatus.SAVE) { - DashLoaderClient.CACHE.reset(); - } - }); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java deleted file mode 100644 index 2339525d..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/main/ReloadableResourceManagerImplMixin.java +++ /dev/null @@ -1,57 +0,0 @@ -package dev.notalpha.dashloader.mixin.main; - -import dev.notalpha.dashloader.DashLoader; -import dev.notalpha.dashloader.client.DashLoaderClient; -import dev.notalpha.dashloader.misc.ProfilerUtil; -import dev.notalpha.dashloader.mixin.accessor.ZipResourcePackAccessor; -import dev.notalpha.dashloader.mixin.accessor.ZipWrapperResourcePackAccessor; -import net.minecraft.client.Minecraft; -import net.minecraft.server.packs.resources.*; -import net.minecraft.util.Unit; -import org.apache.commons.codec.digest.DigestUtils; -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; - -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; - -@Mixin(ReloadableResourceManagerImpl.class) -public class ReloadableResourceManagerImplMixin { - @Inject(method = "reload", - at = @At(value = "RETURN", shift = At.Shift.BEFORE)) - private void reloadDash(Executor prepareExecutor, Executor applyExecutor, CompletableFuture initialStage, List packs, CallbackInfoReturnable cir) { - ProfilerUtil.RELOAD_START = System.currentTimeMillis(); - ResourcePackManager manager = Minecraft.getInstance().getResourcePackManager(); - List values = new ArrayList<>(); - - // Use server resource pack display name to differentiate them across each-other - for (ResourcePack pack : packs) { - if (Objects.equals(pack.getId(), "server")) { - if (pack instanceof FilePackResources zipResourcePack) { - ZipResourcePackAccessor zipPack = (ZipResourcePackAccessor) zipResourcePack; - Path path = ((ZipWrapperResourcePackAccessor) zipPack.getZipFile()).getFile().toPath(); - values.add(path.toString()); - } - } - } - - for (ResourcePackProfile profile : manager.getEnabledProfiles()) { - if (profile != null) { - // Skip server as we have a special case where we use its path instead which contains its hash - if (!Objects.equals(profile.getId(), "server")) { - values.add(profile.getId() + "/"); - } - } - } - - String hash = DigestUtils.md5Hex(values.toString()).toUpperCase(); - DashLoader.LOG.info("Hash changed to {}", hash); - DashLoaderClient.CACHE.load(hash); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java deleted file mode 100644 index db99e6ff..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/main/SplashScreenMixin.java +++ /dev/null @@ -1,105 +0,0 @@ -package dev.notalpha.dashloader.mixin.main; - -import dev.notalpha.dashloader.DashLoader; -import dev.notalpha.dashloader.api.cache.Cache; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.DashLoaderClient; -import dev.notalpha.dashloader.client.ui.toast.DashToast; -import dev.notalpha.dashloader.client.ui.toast.DashToastState; -import dev.notalpha.dashloader.client.ui.toast.DashToastStatus; -import dev.notalpha.dashloader.config.ConfigHandler; -import dev.notalpha.dashloader.misc.ProfilerUtil; -import dev.notalpha.taski.builtin.StaticTask; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.screens.SplashScreen; -import net.minecraft.client.gui.screens.TitleScreen; -import net.minecraft.client.gui.components.toasts.Toast; -import net.minecraft.server.packs.resources.PreparableReloadListener; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -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; - -@Mixin(value = SplashScreen.class, priority = 69420) -public class SplashScreenMixin { - @Shadow - @Final - private Minecraft client; - @Shadow - private long reloadCompleteTime; - @Shadow - @Final - private PreparableReloadListener reload; - @Mutable - @Shadow - @Final - private boolean reloading; - - @Inject( - method = "render", - at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J", shift = At.Shift.BEFORE, ordinal = 1) - ) - private void done(GuiGraphics context, int mouseX, int mouseY, float delta, CallbackInfo ci) { - this.client.setOverlay(null); - if (this.client.currentScreen != null) { - if (this.client.currentScreen instanceof TitleScreen) { - this.client.currentScreen = new TitleScreen(false); - } - } - - DashLoader.LOG.info("Minecraft reloaded in {}", ProfilerUtil.getTimeStringFromStart(ProfilerUtil.RELOAD_START)); - Cache cache = DashLoaderClient.CACHE; - if (DashLoaderClient.CACHE.getStatus() == CacheStatus.SAVE && client.getToastManager().getToast(DashToast.class, Toast.TYPE) == null) { - DashToastState rawState; - if (ConfigHandler.INSTANCE.config.showCachingToast) { - DashToast toast = new DashToast(); - client.getToastManager().add(toast); - rawState = toast.state; - } else { - rawState = new DashToastState(); - } - - final Thread thread = new Thread(() -> { - DashToastState state = rawState; - DashToastState finalState = state; - state.setStatus(DashToastStatus.PROGRESS); - long start = System.currentTimeMillis(); - boolean save = cache.save(stepTask -> finalState.task = stepTask); - if (save) { - state.setOverwriteText("Created cache in " + ProfilerUtil.getTimeStringFromStart(start)); - state.setStatus(DashToastStatus.DONE); - } else { - // Only show toast on fail. - if (!ConfigHandler.INSTANCE.config.showCachingToast) { - DashToast toast = new DashToast(); - client.getToastManager().add(toast); - state = toast.state; - } - state.setOverwriteText("Internal error, Please check logs."); - state.task = new StaticTask("Crash", 0); - state.setStatus(DashToastStatus.CRASHED); - } - cache.reset(); - state.setDone(); - }); - thread.setName("dashloader-thread"); - thread.start(); - } else { - cache.reset(); - } - } - - @Inject( - method = "render", - at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/PreparableReloadListener;isComplete()Z", shift = At.Shift.BEFORE) - ) - private void removeMinimumTime(GuiGraphics context, int mouseX, int mouseY, float delta, CallbackInfo ci) { - if (this.reloadCompleteTime == -1L && this.reload.isComplete()) { - this.reloading = false; - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java deleted file mode 100644 index 5c26ccfa..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/WallBlockMixin.java +++ /dev/null @@ -1,166 +0,0 @@ -package dev.notalpha.dashloader.mixin.option; - -import com.google.common.collect.ImmutableMap; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.WallBlock; -import net.minecraft.world.level.block.SimpleWaterloggedBlock; -import net.minecraft.world.level.block.state.properties.WallSide; -import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.EnumProperty; -import net.minecraft.world.phys.shapes.VoxelShape; -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.CallbackInfoReturnable; - -import java.util.Map; - -@Mixin(WallBlock.class) -public abstract class WallBlockMixin extends Block implements SimpleWaterloggedBlock { - @Unique - private static final int LENGTH = WallSide.values().length; - @Shadow - @Final - public static BooleanProperty UP; - @Shadow - @Final - public static EnumProperty EAST_SHAPE; - @Shadow - @Final - public static EnumProperty NORTH_SHAPE; - @Shadow - @Final - public static EnumProperty WEST_SHAPE; - @Shadow - @Final - public static EnumProperty SOUTH_SHAPE; - @Shadow - @Final - public static BooleanProperty WATERLOGGED; - @Unique - private static VoxelShape[][][][][] SHAPE_CACHE; - @Unique - private static VoxelShape[][][][][] COLLISION_CACHE; - - public WallBlockMixin(Settings settings) { - super(settings); - } - - @Inject(method = "getShapeMap", at = @At(value = "HEAD"), cancellable = true) - private void getShapeMapCache(float f, float g, float h, float i, float j, float k, CallbackInfoReturnable> cir) { - if (this.isCommon(f, g, i)) { - if (this.isShape(h, j, k)) { - if (SHAPE_CACHE != null) { - cir.setReturnValue(this.createFromCache(SHAPE_CACHE)); - } - } else if (this.isCollision(h, j, k)) { - if (COLLISION_CACHE != null) { - cir.setReturnValue(this.createFromCache(COLLISION_CACHE)); - } - } - } - } - - @Inject(method = "getShapeMap", at = @At(value = "RETURN")) - private void getShapeMapCacheCreate(float f, float g, float h, float i, float j, float k, CallbackInfoReturnable> cir) { - if (SHAPE_CACHE == null || COLLISION_CACHE == null) { - if (this.isCommon(f, g, i)) { - if (this.isShape(h, j, k)) { - if (SHAPE_CACHE == null) { - SHAPE_CACHE = new VoxelShape[2][LENGTH][LENGTH][LENGTH][LENGTH]; - this.createCache(SHAPE_CACHE, cir.getReturnValue()); - } - } else if (this.isCollision(h, j, k)) { - if (COLLISION_CACHE == null) { - COLLISION_CACHE = new VoxelShape[2][LENGTH][LENGTH][LENGTH][LENGTH]; - this.createCache(COLLISION_CACHE, cir.getReturnValue()); - } - } - } - } - } - - @Unique - private ImmutableMap createFromCache(VoxelShape[][][][][] rawCache) { - ImmutableMap.Builder builder = ImmutableMap.builder(); - for (Boolean up : UP.getValues()) { - VoxelShape[][][][] cache = up ? rawCache[1] : rawCache[0]; - for (WallSide east : EAST_SHAPE.getValues()) { - for (WallSide north : NORTH_SHAPE.getValues()) { - for (WallSide west : WEST_SHAPE.getValues()) { - for (WallSide south : SOUTH_SHAPE.getValues()) { - final VoxelShape cached = this.getCached(cache, east, north, west, south); - - BlockState blockState = this.getDefaultState() - .with(UP, up) - .with(EAST_SHAPE, east) - .with(WEST_SHAPE, west) - .with(NORTH_SHAPE, north) - .with(SOUTH_SHAPE, south); - - builder.put(blockState.with(WATERLOGGED, false), cached); - builder.put(blockState.with(WATERLOGGED, true), cached); - } - } - } - } - } - return builder.build(); - } - - @Unique - private void createCache(VoxelShape[][][][][] rawCache, Map map) { - for (Boolean up : UP.getValues()) { - VoxelShape[][][][] cache = up ? rawCache[1] : rawCache[0]; - for (WallSide east : EAST_SHAPE.getValues()) { - for (WallSide north : NORTH_SHAPE.getValues()) { - for (WallSide west : WEST_SHAPE.getValues()) { - for (WallSide south : SOUTH_SHAPE.getValues()) { - - BlockState blockState = this.getDefaultState() - .with(UP, up) - .with(EAST_SHAPE, east) - .with(WEST_SHAPE, west) - .with(NORTH_SHAPE, north) - .with(SOUTH_SHAPE, south) - .with(WATERLOGGED, false); - - this.setCached(cache, east, north, west, south, map.get(blockState)); - } - } - } - } - } - } - - //shape 4.0F, 3.0F, 16.0F, 0.0F, 14.0F, 16.0F - //collision 4.0F, 3.0F, 24.0F, 0.0F, 24.0F, 24.0F - @Unique - private boolean isShape(float h, float j, float k) { - return h == 16.0F && j == 14.0F && k == 16.0F; - } - - @Unique - private boolean isCollision(float h, float j, float k) { - return h == 24.0F && j == 24.0F && k == 24.0F; - } - - @Unique - private boolean isCommon(float f, float g, float i) { - return f == 4.0F && g == 3.0F && i == 0.0F; - } - - @Unique - private VoxelShape getCached(VoxelShape[][][][] cache, WallSide east, WallSide north, WallSide west, WallSide south) { - return cache[east.ordinal()][north.ordinal()][west.ordinal()][south.ordinal()]; - } - - @Unique - private void setCached(VoxelShape[][][][] cache, WallSide east, WallSide north, WallSide west, WallSide south, VoxelShape shape) { - cache[east.ordinal()][north.ordinal()][west.ordinal()][south.ordinal()] = shape; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java deleted file mode 100644 index 2a541e9e..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/SpriteAtlasTextureMixin.java +++ /dev/null @@ -1,94 +0,0 @@ -package dev.notalpha.dashloader.mixin.option.cache; - -import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; -import com.llamalad7.mixinextras.sugar.Share; -import com.llamalad7.mixinextras.sugar.ref.LocalRef; -import com.mojang.blaze3d.platform.GlStateManager; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.atlas.AtlasModule; -import net.minecraft.client.renderer.texture.*; -import net.minecraft.resources.ResourceLocation; -import org.apache.commons.codec.digest.DigestUtils; -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.CallbackInfo; - -import java.io.IOException; -import java.nio.file.Files; -import java.util.concurrent.ExecutionException; - -@Mixin(TextureAtlas.class) -public abstract class SpriteAtlasTextureMixin extends AbstractTexture { - @Final - @Shadow - private ResourceLocation id; - @Shadow - private int mipLevel; - @Shadow - private int width; - @Shadow - private int height; - - @Inject(method = "upload", at = @At(value = "INVOKE", target = "Ljava/util/ArrayList;()V", ordinal = 1, remap = false)) - private void uploadCached(SpriteLoader.StitchResult stitchResult, CallbackInfo ci, @Share("cached") LocalRef cached) { - cached.set(false); - AtlasModule.ATLASES.visit(CacheStatus.LOAD, map -> { - var tasks = map.get(this.id.toUnderscoreSeparatedString()); - if (tasks == null) return; - - try { - // mipLevel should never be greater than tasks.size() - if (mipLevel + 1 != tasks.size()) { - for (var task : tasks) { - task.get().close(); - } - return; - } - - cached.set(true); - bindTexture(); - - for (int i = 0; i < tasks.size(); i++) { - var img = tasks.get(i).get(); - img.upload(i, 0, 0, true); - } - } catch (InterruptedException | ExecutionException e) { - throw new RuntimeException(e); - } - }); - } - - @WrapWithCondition(method = "upload", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;upload()V")) - private boolean shouldBuildAtlas(TextureAtlasSprite instance, @Share("cached") LocalRef cached) { - return !cached.get(); - } - - @Inject(method = "upload", at = @At("TAIL")) - private void saveAtlas(SpriteLoader.StitchResult stitchResult, CallbackInfo ci, @Share("cached") LocalRef cached) throws IOException { - if (cached.get()) { - return; - } - - var stringId = this.id.toUnderscoreSeparatedString(); - - AtlasModule.ATLASES.visit(CacheStatus.SAVE, map -> { - map.put(stringId, null); // just for the string - }); - - var atlasFolder = AtlasModule.getAtlasFolder(); - Files.createDirectories(atlasFolder); - - GlStateManager._bindTexture(this.getGlId()); - - for (int i = 0; i <= this.mipLevel; i++) { - try (NativeImage nativeImage = new NativeImage(width >> i, height >> i, false)) { - nativeImage.loadFromTextureImage(i, false); - var path = atlasFolder.resolve(DigestUtils.md5Hex(stringId + i).toUpperCase()); - nativeImage.writeTo(path); - } - } - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java index 2454e66e..f0a6fd2d 100644 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java +++ b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/FontManagerOverride.java @@ -3,11 +3,9 @@ import dev.notalpha.dashloader.DashLoader; import dev.notalpha.dashloader.api.cache.CacheStatus; import dev.notalpha.dashloader.client.font.FontModule; -import dev.notalpha.dashloader.mixin.accessor.FontManagerProviderIndexAccessor; +import dev.notalpha.dashloader.mixin.accessor.FontManagerPreparationAccessor; import net.minecraft.client.gui.font.FontManager; -import net.minecraft.client.gui.font.providers.GlyphProvider; import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.util.profiling.ProfilerFiller; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -20,25 +18,26 @@ @Mixin(FontManager.class) public class FontManagerOverride { @Inject( - method = "loadIndex", + method = "prepare", at = @At(value = "HEAD"), cancellable = true ) - private void loadFonts(ResourceManager resourceManager, Executor executor, CallbackInfoReturnable> cir) { + private void loadFonts(ResourceManager resourceManager, Executor executor, CallbackInfoReturnable> cir) { FontModule.DATA.visit(CacheStatus.LOAD, data -> { DashLoader.LOG.info("Providing fonts"); - cir.setReturnValue(CompletableFuture.completedFuture(FontManagerProviderIndexAccessor.create(data.providers, data.allProviders))); + cir.setReturnValue(CompletableFuture.completedFuture(FontManagerPreparationAccessor.create(data.providers, data.allProviders))); }); } @Inject( - method = "reload(Lnet/minecraft/client/gui/font/FontManager$ProviderIndex;Lnet/minecraft/util/profiler/ProfilerFiller;)V", + method = "apply", at = @At(value = "HEAD") ) - private void saveFonts(FontManager.ProviderIndex index, ProfilerFiller profiler, CallbackInfo ci) { + private void saveFonts(Object preparation, Object profiler, CallbackInfo ci) { if (FontModule.DATA.active(CacheStatus.SAVE)) { DashLoader.LOG.info("Saving fonts"); - FontModule.DATA.set(CacheStatus.SAVE, new FontModule.ProviderIndex(index.fontSets(), index.allProviders())); + FontManagerPreparationAccessor access = (FontManagerPreparationAccessor) preparation; + FontModule.DATA.set(CacheStatus.SAVE, new FontModule.ProviderIndex(access.getFontSets(), access.getAllProviders())); } } } diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java deleted file mode 100644 index 4efc32da..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/font/TrueTypeFontLoaderMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -package dev.notalpha.dashloader.mixin.option.cache.font; - -import com.llamalad7.mixinextras.sugar.Local; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.font.DashTrueTypeFont; -import dev.notalpha.dashloader.client.font.FontModule; -import net.minecraft.client.gui.font.providers.GlyphProvider; -import net.minecraft.client.gui.font.providers.TrueTypeFontLoader; -import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.resources.ResourceLocation; -import org.lwjgl.util.freetype.FT_Face; -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; - -@Mixin(TrueTypeFontLoader.class) -public abstract class TrueTypeFontLoaderMixin { -@Shadow -public abstract float size(); - -@Shadow -public abstract ResourceLocation location(); - -@Shadow -public abstract String skip(); - -@Inject( -method = "load", -at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/font/TrueTypeFont;(Ljava/nio/ByteBuffer;Lorg/lwjgl/util/freetype/FT_Face;FFFFLjava/lang/String;)V") -) -private void loadInject(ResourceManager resourceManager, CallbackInfoReturnable cir, @Local FT_Face ft_face) { -FontModule.FONT_TO_DATA.visit(CacheStatus.SAVE, map -> map.put(ft_face, new DashTrueTypeFont.FontPrams(location(), size(), skip()))); -} -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java deleted file mode 100644 index 2af37c79..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BakedModelManagerOverride.java +++ /dev/null @@ -1,61 +0,0 @@ -package dev.notalpha.dashloader.mixin.option.cache.model; - -import com.llamalad7.mixinextras.injector.ModifyReturnValue; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.model.ModelModule; -import net.minecraft.client.resources.model.ModelBakery; -import net.minecraft.client.resources.model.ModelBaker; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.server.packs.resources.Resource; -import net.minecraft.server.packs.resources.ResourceProvider; -import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.resources.ResourceLocation; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.CompletionStage; - -@Mixin(value = ModelBakery.class, priority = 69420) -public abstract class BakedModelManagerOverride { - @WrapOperation(method = "bake", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/model/ModelBaker;bake(Lnet/minecraft/client/resources/model/ModelBaker$ErrorCollectingSpriteGetter;)Lnet/minecraft/client/resources/model/ModelBaker$BakedModels;")) - private static ModelBaker.BakedModels yoinkBakedModels(ModelBaker instance, ModelBaker.ErrorCollectingSpriteGetter spriteGetter, Operation original) { - var bakedModels = original.call(instance, spriteGetter); -// ModelModule.ITEM_MODELS_SAVE.visit(CacheStatus.SAVE, map -> map.putAll(bakedModels.itemStackModels())); -// ModelModule.ITEM_PROPERTIES.visit(CacheStatus.SAVE, map -> map.putAll(bakedModels.itemProperties())); - ModelModule.BLOCK_MODELS_SAVE.visit(CacheStatus.SAVE, map -> map.putAll(bakedModels.blockStateModels())); - ModelModule.BAKED_MODEL_PARTS.visit(CacheStatus.SAVE, map -> map.putAll(instance.bakedModelCache)); - return bakedModels; - } - - @ModifyReturnValue(method = "method_45899", at = @At(value = "RETURN")) - private static CompletionStage injectModels(CompletionStage> original) { - var models = ModelModule.MODEL_PARTS.get(CacheStatus.LOAD); - if (models != null) { - return original.thenApply(unbakedModels -> { - if (!(unbakedModels instanceof HashMap)) { - unbakedModels = new HashMap<>(unbakedModels); - } - - unbakedModels.putAll(models); - return unbakedModels; - }); - } - return original; - } - - @WrapOperation(method = "method_62663", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/ResourceProvider;findResources(Lnet/minecraft/server/packs/resources/ResourceManager;)Ljava/util/Map;")) - private static Map loadMissingModels(ResourceProvider instance, ResourceManager resourceManager, Operation> original) { - var modelIds = ModelModule.MISSING_MODEL_PARTS.get(CacheStatus.LOAD); - if (modelIds != null) { - var out = new HashMap(modelIds.size()); - modelIds.forEach(id -> resourceManager.getResource(id).ifPresent(resource -> out.put(id, resource))); - return out; - } - - return original.call(instance, resourceManager); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java deleted file mode 100644 index d71dedaf..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/BlockStatesLoaderMixin.java +++ /dev/null @@ -1,29 +0,0 @@ -package dev.notalpha.dashloader.mixin.option.cache.model; - -import com.llamalad7.mixinextras.injector.ModifyReturnValue; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.model.ModelModule; -import net.minecraft.client.renderer.block.model.BlockStatesLoader; // TODO: verify Mojang name -import net.minecraft.server.packs.resources.Resource; -import net.minecraft.resources.ResourceLocation; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -import java.util.List; -import java.util.Map; - -@Mixin(BlockStatesLoader.class) -public abstract class BlockStatesLoaderMixin { - @ModifyReturnValue(method = "method_65719", at = @At("TAIL")) - private static BlockStatesLoader.BlockStateDefinition inject(BlockStatesLoader.BlockStateDefinition original) { - ModelModule.RAW_BLOCK_MODELS.visit(CacheStatus.SAVE, map -> map.putAll(original.models())); - ModelModule.BLOCK_MODELS.visit(CacheStatus.LOAD, original.models()::putAll); - return original; - } - - @ModifyReturnValue(method = "method_65717", at = @At("TAIL")) - private static Map> loadMissing(Map> original) { - ModelModule.MISSING_BLOCK_MODELS.visit(CacheStatus.LOAD, original.keySet()::retainAll); - return original; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java deleted file mode 100644 index a9275a75..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelMixin.java +++ /dev/null @@ -1,24 +0,0 @@ -package dev.notalpha.dashloader.mixin.option.cache.model; - -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.model.ModelModule; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.renderer.block.model.Baker; // TODO: verify Mojang name -import net.minecraft.client.renderer.block.model.MultipartUnbakedModel; // TODO: verify Mojang name -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; - -@Mixin(MultipartUnbakedModel.class) -public abstract class MultipartUnbakedModelMixin { - @Inject( - method = "bake", - at = @At(value = "RETURN") - ) - private void addPredicateInfo(Baker baker, CallbackInfoReturnable cir) { - ModelModule.UNBAKED_TO_BAKED_MULTIPART_MODELS.visit(CacheStatus.SAVE, map -> { - map.put(cir.getReturnValue(), (MultipartUnbakedModel) (Object) this); - }); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java deleted file mode 100644 index 40532dde..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/model/MultipartUnbakedModelSerializedMixin.java +++ /dev/null @@ -1,31 +0,0 @@ -package dev.notalpha.dashloader.mixin.option.cache.model; - -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.model.ModelModule; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.client.renderer.block.model.MultipartUnbakedModel; -import net.minecraft.world.level.block.state.StateDefinition; -import org.apache.commons.lang3.tuple.Pair; -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; - -@Mixin(MultipartUnbakedModel.Serialized.class) -public abstract class MultipartUnbakedModelSerializedMixin { - @Shadow - @Final - private List selectors; - - @Inject(method = "toModel", at = @At(value = "RETURN")) - private void thing(StateDefinition stateManager, CallbackInfoReturnable cir) { - ModelModule.MULTIPART_PREDICATES.visit(CacheStatus.SAVE, map -> { - map.put(cir.getReturnValue(), Pair.of(selectors, stateManager)); - }); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java deleted file mode 100644 index 1a60b657..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/shader/ShaderLoaderMixin.java +++ /dev/null @@ -1,68 +0,0 @@ -package dev.notalpha.dashloader.mixin.option.cache.shader; - -import com.google.common.collect.ImmutableMap; -import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import com.llamalad7.mixinextras.sugar.Local; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.shader.ShaderModule; -import net.minecraft.client.renderer.ShaderManager; -import net.minecraft.client.renderer.ShaderProgramConfig; -import net.minecraft.server.packs.resources.Resource; -import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.profiling.ProfilerFiller; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -import java.util.Map; -import java.util.function.Predicate; - -@Mixin(ShaderManager.class) -public abstract class ShaderLoaderMixin { - @WrapOperation( - method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Lnet/minecraft/client/renderer/ShaderManager$Definitions;", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/server/packs/resources/ResourceManager;findResources(Ljava/lang/String;Ljava/util/function/Predicate;)Ljava/util/Map;" - ) - ) - private Map skipCached(ResourceManager instance, String s, Predicate identifierPredicate, Operation> original, @Local(ordinal = 0) ImmutableMap.Builder builder, @Local(ordinal = 1) ImmutableMap.Builder builder2) { - var sources = ShaderModule.SHADER_SOURCES.get(CacheStatus.LOAD); - var definitions = ShaderModule.SHADER_DEFINITIONS.get(CacheStatus.LOAD); - if (sources != null && definitions != null) { - builder2.putAll(sources); - builder.putAll(definitions); - return Map.of(); - } - - return original.call(instance, s, identifierPredicate); - } - -// @WrapOperation( -// method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiler/ProfilerFiller;)Lnet/minecraft/client/gl/ShaderLoader$Definitions;", -// at = @At( -// value = "INVOKE", -// target = "Lnet/minecraft/resource/ResourceProvider;findResources(Lnet/minecraft/server/packs/resources/ResourceManager;)Ljava/util/Map;" -// ) -// ) -// private Map thing(ResourceProvider instance, ResourceManager resourceManager, Operation> original, @Local(ordinal = 2) ImmutableMap.Builder builder3) { -// var post = ShaderModule.POST_EFFECTS.get(CacheStatus.LOAD); -// if (post != null) { -// builder3.putAll(post); -// return Map.of(); -// } -// return original.call(instance, resourceManager); -// } - - @WrapMethod(method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Lnet/minecraft/client/renderer/ShaderManager$Definitions;") - private ShaderManager.Definitions thing(ResourceManager resourceManager, ProfilerFiller profiler, Operation original) { - var og = original.call(resourceManager, profiler); - ShaderModule.SHADER_SOURCES.visit(CacheStatus.SAVE, map -> map.putAll(og.shaderSources())); - ShaderModule.SHADER_DEFINITIONS.visit(CacheStatus.SAVE, map -> map.putAll(og.programs())); -// ShaderModule.POST_EFFECTS.visit(CacheStatus.SAVE, map -> map.putAll(og.postChains())); - - return og; - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java deleted file mode 100644 index 6f598184..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/content/SpriteOpenerMixin.java +++ /dev/null @@ -1,53 +0,0 @@ -package dev.notalpha.dashloader.mixin.option.cache.sprite.content; - -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.sprite.content.SpriteContentModule; -import dev.notalpha.dashloader.mixin.accessor.SpriteContentsAccessor; -import net.minecraft.client.renderer.texture.SpriteContents; -import net.minecraft.client.renderer.texture.SpriteOpener; -import net.minecraft.server.packs.resources.Resource; -import net.minecraft.server.packs.resources.ResourceMetadata; -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; -import net.minecraft.resources.ResourceLocation; -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; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -import java.util.Collection; - -@Mixin(SpriteOpener.class) -public interface SpriteOpenerMixin { -@Inject( -method = "method_52851", -cancellable = true, -locals = LocalCapture.CAPTURE_FAILEXCEPTION, -at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/Resource;getInputStream()Ljava/io/InputStream;", shift = At.Shift.BEFORE) -) -private static void dashloaderLoad(Collection> metadatas, ResourceLocation id, Resource resource, CallbackInfoReturnable cir, ResourceMetadata resourceMetadata) { -var dashSpriteData = SpriteContentModule.SOURCE.get(CacheStatus.LOAD); -if (dashSpriteData != null) { -SpriteContents spriteContents = dashSpriteData.get(id); -if (spriteContents != null) { -((SpriteContentsAccessor) spriteContents).setMetadata(resourceMetadata); -cir.setReturnValue(spriteContents); -} -} -} - -@Inject( -method = "method_52851", -at = @At(value = "RETURN") -) -private static void dashloaderSave(Collection collection, ResourceLocation id, Resource resource, CallbackInfoReturnable cir) { -var dashSpriteData = SpriteContentModule.SOURCE.get(CacheStatus.SAVE); -if (dashSpriteData != null) { -if (dashSpriteData.containsKey(id)) { -dashSpriteData.put(id, null); -return; -} -dashSpriteData.put(id, cir.getReturnValue()); -} -} -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java deleted file mode 100644 index c59064c1..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/cache/sprite/stitch/StitchSpriteLoaderMixin.java +++ /dev/null @@ -1,54 +0,0 @@ -package dev.notalpha.dashloader.mixin.option.cache.sprite.stitch; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import dev.notalpha.dashloader.api.cache.CacheStatus; -import dev.notalpha.dashloader.client.sprite.stitch.DashTextureStitcher; -import dev.notalpha.dashloader.client.sprite.stitch.SpriteStitcherModule; -import net.minecraft.client.renderer.texture.SpriteContents; -import net.minecraft.client.renderer.texture.SpriteLoader; // TODO: verify Mojang name -import net.minecraft.client.renderer.texture.Stitcher; // TODO: verify Mojang name (Stitcher) -import net.minecraft.resources.ResourceLocation; -import org.apache.commons.lang3.tuple.Pair; -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 org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -import java.util.List; -import java.util.concurrent.Executor; - -@Mixin(SpriteLoader.class) -public final class StitchSpriteLoaderMixin { - @Shadow - @Final - private ResourceLocation id; - - @WrapOperation( - method = "stitch", - at = @At(value = "NEW", target = "(III)Lnet/minecraft/client/renderer/texture/Stitcher;") - ) - private Stitcher dashloaderStitcherLoad(int maxWidth, int maxHeight, int mipLevel, Operation> original) { - var map = SpriteStitcherModule.STITCHERS_LOAD.get(CacheStatus.LOAD); - if (map != null) { - var data = map.get(id); - if (data != null) { - return new DashTextureStitcher<>(maxWidth, maxHeight, mipLevel, data); - } - } - - return original.call(maxWidth, maxHeight, mipLevel); - } - - @Inject( - method = "stitch", - at = @At(value = "RETURN"), - locals = LocalCapture.CAPTURE_FAILSOFT - ) - private void dashloaderStitcherSave(List sprites, int mipLevel, Executor executor, CallbackInfoReturnable cir, int i, Stitcher textureStitcher) { - SpriteStitcherModule.STITCHERS_SAVE.visit(CacheStatus.SAVE, map -> map.add(Pair.of(id, textureStitcher))); - } -} diff --git a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java b/src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java deleted file mode 100644 index 6d22a3d1..00000000 --- a/src/main/java/dev/notalpha/dashloader/mixin/option/misc/ModelIdentifierMixin.java +++ /dev/null @@ -1,39 +0,0 @@ -package dev.notalpha.dashloader.mixin.option.misc; - -import net.minecraft.client.resources.model.ModelResourceLocation; -import net.minecraft.resources.ResourceLocation; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import java.util.Objects; - -@Mixin(value = ModelResourceLocation.class, priority = 999) -public abstract class ModelIdentifierMixin { - @Shadow - @Final - private ResourceLocation id; - @Shadow - @Final - private String variant; - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof ModelResourceLocation that)) { - return false; - } - if (!this.id.equals(that.id())) { - return false; - } - - return Objects.equals(this.variant, that.getVariant()); - } - - @Override - public int hashCode() { - return 31 * id.hashCode() + variant.hashCode(); - } -} diff --git a/src/main/resources/dashloader.accesswidener b/src/main/resources/dashloader.accesswidener index acf389f3..3fde5170 100644 --- a/src/main/resources/dashloader.accesswidener +++ b/src/main/resources/dashloader.accesswidener @@ -1,63 +1 @@ accessWidener v1 named -accessible class net/minecraft/client/renderer/texture/SpriteContents$Interpolation -accessible class net/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture -accessible class net/minecraft/client/renderer/texture/SpriteContents$FrameInfo -# TODO: verify Mojang name for ParticleManager$SimpleSpriteProvider -accessible class net/minecraft/client/particle/ParticleManager$SimpleSpriteProvider -accessible class net/minecraft/client/gui/font/providers/BitmapProvider$BitmapFontGlyph -# BakedModelManager (YARN) = ModelBakery (Mojang) in net.minecraft.client.resources.model -accessible class net/minecraft/client/resources/model/ModelBakery$BakingResult -# ModelBaker (YARN) = ModelBaker (Mojang) in net.minecraft.client.resources.model -accessible class net/minecraft/client/resources/model/ModelBaker$BakedModelCacheKey -# TODO: verify Mojang inner class name for BakerImpl -accessible class net/minecraft/client/resources/model/ModelBaker$BakerImpl -# TODO: verify Mojang name for MultipartUnbakedModel$Selector -accessible class net/minecraft/client/renderer/block/model/MultipartUnbakedModel$Selector -# TODO: verify Mojang name for TrueTypeFont$LazyGlyph -accessible class net/minecraft/client/gui/font/TrueTypeFont$LazyGlyph -# TODO: verify Mojang name for UnihexFont$UnicodeTextureGlyph -accessible class net/minecraft/client/gui/font/UnihexFont$UnicodeTextureGlyph -# TODO: verify Mojang name for UnihexFont$FontImage16x16 -accessible class net/minecraft/client/gui/font/UnihexFont$FontImage16x16 -# TODO: verify Mojang name for UnihexFont$FontImage8x16 -accessible class net/minecraft/client/gui/font/UnihexFont$FontImage8x16 -# TODO: verify Mojang name for UnihexFont$FontImage32x16 -accessible class net/minecraft/client/gui/font/UnihexFont$FontImage32x16 -# TODO: verify Mojang name for FontSet$GlyphPair (was FontStorage$GlyphPair) -accessible class net/minecraft/client/gui/font/FontSet$GlyphPair -# TODO: verify Mojang name for FontManager$ProviderIndex -accessible class net/minecraft/client/gui/font/FontManager$ProviderIndex -# ShaderManager (Mojang) = ShaderLoader (YARN) in net.minecraft.client.renderer -accessible class net/minecraft/client/renderer/ShaderManager$Cache -# ShaderManager.ShaderSourceKey (Mojang) = ShaderLoader.ShaderSourceKey (YARN) -accessible class net/minecraft/client/renderer/ShaderManager$ShaderSourceKey -# TODO: verify VertexConsumerProvider$Immediate equivalent in Mojang (was DrawContext.vertexConsumers) -accessible field net/minecraft/client/gui/GuiGraphics vertexConsumers Lcom/mojang/blaze3d/vertex/VertexConsumer; -# TODO: verify Mojang name for ZipFileWrapper (was ZipResourcePack$ZipFileWrapper) -accessible class net/minecraft/server/packs/FilePackResources$SharedZipFileAccess -accessible class net/minecraft/client/Minecraft$LoadingContext -accessible field net/minecraft/client/renderer/ShaderManager$Cache shaderPrograms Ljava/util/Map; -accessible field net/minecraft/client/renderer/block/model/ItemTransforms thirdPersonLeftHand Lnet/minecraft/client/renderer/block/model/ItemTransform; -accessible field net/minecraft/client/renderer/block/model/ItemTransforms thirdPersonRightHand Lnet/minecraft/client/renderer/block/model/ItemTransform; -accessible field net/minecraft/client/renderer/block/model/ItemTransforms firstPersonLeftHand Lnet/minecraft/client/renderer/block/model/ItemTransform; -accessible field net/minecraft/client/renderer/block/model/ItemTransforms firstPersonRightHand Lnet/minecraft/client/renderer/block/model/ItemTransform; -accessible field net/minecraft/client/renderer/block/model/ItemTransforms head Lnet/minecraft/client/renderer/block/model/ItemTransform; -accessible field net/minecraft/client/renderer/block/model/ItemTransforms gui Lnet/minecraft/client/renderer/block/model/ItemTransform; -accessible field net/minecraft/client/renderer/block/model/ItemTransforms ground Lnet/minecraft/client/renderer/block/model/ItemTransform; -accessible field net/minecraft/client/renderer/block/model/ItemTransforms fixed Lnet/minecraft/client/renderer/block/model/ItemTransform; -# ModelBaker.bakedModelCache (Mojang) in net.minecraft.client.resources.model -accessible field net/minecraft/client/resources/model/ModelBaker bakedModelCache Ljava/util/Map; -# TODO: verify Mojang name for WrapperBakedModel.wrapped -accessible field net/minecraft/client/renderer/block/model/WrapperBakedModel wrapped Lnet/minecraft/client/resources/model/BakedModel; -# TODO: verify Mojang name for TrueTypeFont$LazyGlyph. -accessible method net/minecraft/client/gui/font/TrueTypeFont$LazyGlyph (I)V -# TODO: verify Mojang name for UnihexFont$FontImage8x16. -accessible method net/minecraft/client/gui/font/UnihexFont$FontImage8x16 ([B)V -# TODO: verify Mojang name for UnihexFont$FontImage16x16. -accessible method net/minecraft/client/gui/font/UnihexFont$FontImage16x16 ([S)V -# TODO: verify Mojang name for UnihexFont$FontImage32x16. -accessible method net/minecraft/client/gui/font/UnihexFont$FontImage32x16 ([II)V -# TODO: verify Mojang name for UnihexFont$UnicodeTextureGlyph. and UnihexFont$BitmapGlyph -accessible method net/minecraft/client/gui/font/UnihexFont$UnicodeTextureGlyph (Lnet/minecraft/client/gui/font/UnihexFont$BitmapGlyph;II)V -accessible method net/minecraft/client/renderer/ShaderManager$ShaderSourceKey (Lnet/minecraft/resources/ResourceLocation;Lcom/mojang/blaze3d/shaders/ShaderType;)V - diff --git a/src/main/resources/dashloader.mixins.json b/src/main/resources/dashloader.mixins.json index 0dc4f11b..7dc8c86d 100644 --- a/src/main/resources/dashloader.mixins.json +++ b/src/main/resources/dashloader.mixins.json @@ -5,54 +5,13 @@ "plugin": "dev.notalpha.dashloader.mixin.MixinPlugin", "compatibilityLevel": "JAVA_21", "mixins": [ - "accessor.AndMultipartModelSelectorAccessor", - "accessor.BasicBakedModelAccessor", - "accessor.BitmapFontAccessor", - "accessor.BitmapFontGlyphAccessor", - "accessor.FilterMapAccessor", - "accessor.FontManagerProviderIndexAccessor", - "accessor.GlUniformAccessor", "accessor.IdentifierAccessor", "accessor.ModelLoaderAccessor", - "accessor.MultipartBakedModelAccessor", - "accessor.MultipartModelComponentAccessor", - "accessor.NativeImageAccessor", - "accessor.OrMultipartModelSelectorAccessor", - "accessor.ShaderProgramAccessor", - "accessor.SimpleMultipartModelSelectorAccessor", - "accessor.SpriteAnimationAccessor", - "accessor.SpriteAnimationFrameAccessor", - "accessor.TrueTypeFontAccessor", - "accessor.UnihexFontAccessor", - "accessor.WeightedBakedModelAccessor", - "accessor.ZipResourcePackAccessor", - "accessor.ZipWrapperResourcePackAccessor", - "main.BootstrapMixin", - "main.KeyboardMixin", "main.MainMixin", - "main.MinecraftClientMixin", - "main.ReloadableResourceManagerImplMixin", - "main.SplashScreenMixin", - "option.WallBlockMixin", - "option.cache.SplashTextResourceSupplierMixin", - "option.cache.font.FontManagerOverride", - "option.cache.font.TrueTypeFontLoaderMixin", - "option.cache.model.BakedModelManagerOverride", - "option.cache.model.MultipartUnbakedModelMixin", - "option.cache.sprite.stitch.StitchSpriteLoaderMixin", - "option.misc.AffineTransformationMixin", - "option.misc.ModelIdentifierMixin" + "option.cache.SplashTextResourceSupplierMixin" ], "injectors": { "defaultRequire": 1 }, - "client": [ - "accessor.SpriteContentsAccessor", - "option.cache.SpriteAtlasTextureMixin", - "option.cache.model.BlockStatesLoaderMixin", - "option.cache.model.MultipartUnbakedModelSerializedMixin", - "option.cache.shader.ShaderLoaderMixin", - "option.cache.sprite.content.SpriteOpenerMixin", - "option.misc.MipmapHelperMixin" - ] + "client": [] }