aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisxander <xander@isxander.dev>2024-04-11 18:43:06 +0100
committerisxander <xander@isxander.dev>2024-04-11 18:43:06 +0100
commit04fe933f4c24817100f3101f088accf55a621f8a (patch)
treefeff94ca3ab4484160e69a24f4ee38522381950e
parent831b894fdb7fe3e173d81387c8f6a2402b8ccfa9 (diff)
downloadYetAnotherConfigLib-04fe933f4c24817100f3101f088accf55a621f8a.tar.gz
YetAnotherConfigLib-04fe933f4c24817100f3101f088accf55a621f8a.tar.bz2
YetAnotherConfigLib-04fe933f4c24817100f3101f088accf55a621f8a.zip
Extremely fragile and broken multiversion build with stonecutter
-rw-r--r--build.gradle.kts352
-rw-r--r--changelogs/0.1.1.md1
-rw-r--r--changelogs/0.1.2.md3
-rw-r--r--changelogs/1.0.0.md4
-rw-r--r--changelogs/1.1.0.md7
-rw-r--r--changelogs/1.1.1.md1
-rw-r--r--changelogs/1.2.0.md3
-rw-r--r--changelogs/1.2.1.md1
-rw-r--r--changelogs/1.3.0.md3
-rw-r--r--changelogs/1.4.0.md7
-rw-r--r--changelogs/1.4.1.md1
-rw-r--r--changelogs/1.4.2.md3
-rw-r--r--changelogs/1.4.3.md2
-rw-r--r--changelogs/1.4.4.md2
-rw-r--r--changelogs/1.4.5.md1
-rw-r--r--changelogs/1.5.0.md3
-rw-r--r--changelogs/1.6.0.md1
-rw-r--r--changelogs/1.7.0.md13
-rw-r--r--changelogs/1.7.1.md1
-rw-r--r--changelogs/2.0.0.md7
-rw-r--r--changelogs/2.1.0.md40
-rw-r--r--changelogs/2.1.1.md8
-rw-r--r--changelogs/2.2.0.md13
-rw-r--r--changelogs/2.3.0.md1
-rw-r--r--changelogs/2.3.1.md1
-rw-r--r--changelogs/2.4.0.md9
-rw-r--r--changelogs/2.4.1.md9
-rw-r--r--changelogs/2.4.2.md2
-rw-r--r--changelogs/2.5.0+1.19.4.md9
-rw-r--r--changelogs/2.5.1+1.19.4.md1
-rw-r--r--changelogs/3.0.0+1.20.md37
-rw-r--r--changelogs/3.0.0-beta.2+1.20.md11
-rw-r--r--changelogs/3.0.0-beta.3+1.20.md12
-rw-r--r--changelogs/3.0.0-beta.4+1.20.md28
-rw-r--r--changelogs/3.0.0-beta.5+1.20.md16
-rw-r--r--changelogs/3.0.0-beta.6+1.20.md5
-rw-r--r--changelogs/3.0.0-beta.7+1.20.md6
-rw-r--r--changelogs/3.0.1+1.20.md1
-rw-r--r--changelogs/3.0.2+1.20.md2
-rw-r--r--changelogs/3.0.3+1.20.md2
-rw-r--r--changelogs/3.1.0+1.20.md28
-rw-r--r--changelogs/3.2.0+1.20.2.md89
-rw-r--r--changelogs/3.2.1+1.20.2.md20
-rw-r--r--changelogs/3.3.0+1.20.4.md3
-rw-r--r--changelogs/3.3.0-beta.1+1.20.2.md43
-rw-r--r--changelogs/3.3.0-beta.1+1.20.3.md7
-rw-r--r--changelogs/3.3.1+1.20.4.md3
-rw-r--r--changelogs/3.3.2+1.20.4.md6
-rw-r--r--changelogs/3.3.3+1.20.4.md3
-rw-r--r--common/.gitignore42
-rw-r--r--common/build.gradle.kts56
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/ValueFormatters.java15
-rw-r--r--common/src/main/java/dev/isxander/yacl3/platform/YACLConfig.java16
-rw-r--r--common/src/main/java/dev/isxander/yacl3/platform/YACLEntrypoint.java11
-rw-r--r--common/src/main/java/dev/isxander/yacl3/platform/YACLPlatform.java27
-rw-r--r--common/src/main/resources/architectury.common.json3
-rw-r--r--fabric/.gitignore42
-rw-r--r--fabric/build.gradle.kts182
-rw-r--r--fabric/src/main/java/dev/isxander/yacl3/platform/fabric/YACLFabricEntrypoint.java15
-rw-r--r--fabric/src/main/java/dev/isxander/yacl3/platform/fabric/YACLPlatformImpl.java23
-rw-r--r--fabric/src/main/java/dev/isxander/yacl3/platform/fabric/image/YACLImageReloadListenerFabric.java12
-rw-r--r--gradle.properties13
-rw-r--r--gradle/libs.versions.toml72
-rw-r--r--gradle/wrapper/gradle-wrapper.properties4
-rw-r--r--neoforge/.gitignore42
-rw-r--r--neoforge/build.gradle.kts190
-rw-r--r--neoforge/gradle.properties1
-rw-r--r--neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLForgeEntrypoint.java20
-rw-r--r--neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLPlatformImpl.java24
-rw-r--r--settings.gradle.kts49
-rw-r--r--src/main/java/dev/isxander/yacl3/api/Binding.java (renamed from common/src/main/java/dev/isxander/yacl3/api/Binding.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/ButtonOption.java (renamed from common/src/main/java/dev/isxander/yacl3/api/ButtonOption.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/ConfigCategory.java (renamed from common/src/main/java/dev/isxander/yacl3/api/ConfigCategory.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/Controller.java (renamed from common/src/main/java/dev/isxander/yacl3/api/Controller.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/LabelOption.java (renamed from common/src/main/java/dev/isxander/yacl3/api/LabelOption.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/ListOption.java (renamed from common/src/main/java/dev/isxander/yacl3/api/ListOption.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/ListOptionEntry.java (renamed from common/src/main/java/dev/isxander/yacl3/api/ListOptionEntry.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/NameableEnum.java (renamed from common/src/main/java/dev/isxander/yacl3/api/NameableEnum.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/Option.java (renamed from common/src/main/java/dev/isxander/yacl3/api/Option.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/OptionAddable.java (renamed from common/src/main/java/dev/isxander/yacl3/api/OptionAddable.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/OptionDescription.java (renamed from common/src/main/java/dev/isxander/yacl3/api/OptionDescription.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/OptionFlag.java (renamed from common/src/main/java/dev/isxander/yacl3/api/OptionFlag.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/OptionGroup.java (renamed from common/src/main/java/dev/isxander/yacl3/api/OptionGroup.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/PlaceholderCategory.java (renamed from common/src/main/java/dev/isxander/yacl3/api/PlaceholderCategory.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/YetAnotherConfigLib.java (renamed from common/src/main/java/dev/isxander/yacl3/api/YetAnotherConfigLib.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/BooleanControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/BooleanControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/ColorControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/ColorControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/ControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/ControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/CyclingListControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/CyclingListControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/DoubleFieldControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/DoubleFieldControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/DoubleSliderControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/DoubleSliderControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/DropdownStringControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/DropdownStringControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/EnumControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/EnumControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/EnumDropdownControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/EnumDropdownControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/FloatFieldControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/FloatFieldControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/FloatSliderControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/FloatSliderControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/IntegerFieldControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/IntegerFieldControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/IntegerSliderControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/IntegerSliderControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/ItemControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/ItemControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/LongFieldControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/LongFieldControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/LongSliderControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/LongSliderControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/NumberFieldControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/NumberFieldControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/SliderControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/SliderControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/StringControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/StringControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/TickBoxControllerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/TickBoxControllerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/ValueFormattableController.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/ValueFormattableController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/controller/ValueFormatter.java (renamed from common/src/main/java/dev/isxander/yacl3/api/controller/ValueFormatter.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/utils/Dimension.java (renamed from common/src/main/java/dev/isxander/yacl3/api/utils/Dimension.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/utils/MutableDimension.java (renamed from common/src/main/java/dev/isxander/yacl3/api/utils/MutableDimension.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/api/utils/OptionUtils.java (renamed from common/src/main/java/dev/isxander/yacl3/api/utils/OptionUtils.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/ConfigEntry.java (renamed from common/src/main/java/dev/isxander/yacl3/config/ConfigEntry.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/ConfigInstance.java (renamed from common/src/main/java/dev/isxander/yacl3/config/ConfigInstance.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java (renamed from common/src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java)16
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/ConfigClassHandler.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigClassHandler.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/ConfigField.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigField.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/ConfigSerializer.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigSerializer.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/FieldAccess.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/FieldAccess.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/ReadOnlyFieldAccess.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/ReadOnlyFieldAccess.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/SerialEntry.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/SerialEntry.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/SerialField.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/SerialField.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGen.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGen.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGenField.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGenField.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Boolean.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Boolean.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ColorField.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ColorField.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomDescription.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomDescription.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomFormat.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomFormat.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomImage.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomImage.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomName.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomName.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleField.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleField.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleSlider.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleSlider.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Dropdown.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Dropdown.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/EnumCycler.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/EnumCycler.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatField.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatField.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatSlider.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatSlider.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FormatTranslation.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FormatTranslation.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntField.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntField.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntSlider.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntSlider.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ItemField.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ItemField.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Label.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Label.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ListGroup.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ListGroup.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongField.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongField.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongSlider.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongSlider.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/MasterTickBox.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/MasterTickBox.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionAccess.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionAccess.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionFactory.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionFactory.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/SimpleOptionFactory.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/SimpleOptionFactory.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/StringField.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/StringField.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/autogen/TickBox.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/TickBox.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/api/serializer/GsonConfigSerializerBuilder.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/api/serializer/GsonConfigSerializerBuilder.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigClassHandlerImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigClassHandlerImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigFieldImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigFieldImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/FieldBackedBinding.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/FieldBackedBinding.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/ReflectionFieldAccess.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/ReflectionFieldAccess.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/AutoGenUtils.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/AutoGenUtils.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/BooleanImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/BooleanImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ColorFieldImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ColorFieldImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleFieldImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleFieldImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleSliderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleSliderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DropdownImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DropdownImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EmptyCustomImageFactory.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EmptyCustomImageFactory.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EnumCyclerImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EnumCyclerImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatFieldImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatFieldImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatSliderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatSliderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntFieldImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntFieldImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntSliderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntSliderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ItemFieldImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ItemFieldImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LabelImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LabelImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ListGroupImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ListGroupImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongFieldImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongFieldImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongSliderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongSliderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/MasterTickBoxImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/MasterTickBoxImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionAccessImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionAccessImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionFactoryRegistry.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionFactoryRegistry.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/StringFieldImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/StringFieldImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/TickBoxImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/TickBoxImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/YACLAutoGenException.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/YACLAutoGenException.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java (renamed from common/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java)14
-rw-r--r--src/main/java/dev/isxander/yacl3/debug/DebugProperties.java (renamed from common/src/main/java/dev/isxander/yacl3/debug/DebugProperties.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/AbstractWidget.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/AbstractWidget.java)14
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/DescriptionWithName.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/DescriptionWithName.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/ElementListWidgetExt.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/ElementListWidgetExt.java)98
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/LowProfileButtonWidget.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/LowProfileButtonWidget.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/OptionDescriptionWidget.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/OptionDescriptionWidget.java)2
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/OptionListWidget.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/OptionListWidget.java)29
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/RequireRestartScreen.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/RequireRestartScreen.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/SearchFieldWidget.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/SearchFieldWidget.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/TextScaledButtonWidget.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/TextScaledButtonWidget.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/TooltipButtonWidget.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/TooltipButtonWidget.java)5
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/ValueFormatters.java21
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/YACLScreen.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/YACLScreen.java)35
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/YACLTooltip.java23
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/YACLTooltipPositioner.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/YACLTooltipPositioner.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/ActionController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/ActionController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/ColorController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/ColorController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/ControllerWidget.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/ControllerWidget.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/LabelController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/LabelController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/ListEntryWidget.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/ListEntryWidget.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/TickBoxController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/TickBoxController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingControllerElement.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingControllerElement.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/cycling/ICyclingController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/ICyclingController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownControllerElement.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownControllerElement.java)12
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringControllerElement.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringControllerElement.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownControllerElement.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownControllerElement.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemControllerElement.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemControllerElement.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/package-info.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/package-info.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/slider/ISliderController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/ISliderController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/slider/SliderControllerElement.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/SliderControllerElement.java)2
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/slider/package-info.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/package-info.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/string/IStringController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/string/IStringController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/string/StringController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/controllers/string/number/package-info.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/package-info.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/image/ImageRenderer.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/image/ImageRenderer.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/image/ImageRendererFactory.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/image/ImageRendererFactory.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/image/ImageRendererManager.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/image/ImageRendererManager.java)21
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/image/YACLImageReloadListener.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/image/YACLImageReloadListener.java)22
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/image/impl/AnimatedDynamicTextureImage.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/image/impl/AnimatedDynamicTextureImage.java)8
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/image/impl/DynamicTextureImage.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/image/impl/DynamicTextureImage.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/image/impl/ResourceTextureImage.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/image/impl/ResourceTextureImage.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/tab/ListHolderWidget.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/tab/ListHolderWidget.java)4
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/tab/ScrollableNavigationBar.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/tab/ScrollableNavigationBar.java)15
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/tab/TabExt.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/tab/TabExt.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/utils/ButtonTextureRenderer.java34
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/utils/GuiUtils.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/utils/GuiUtils.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/utils/ItemRegistryHelper.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/utils/ItemRegistryHelper.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/gui/utils/UndoRedoHelper.java (renamed from common/src/main/java/dev/isxander/yacl3/gui/utils/UndoRedoHelper.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/ButtonOptionImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/ButtonOptionImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/ConfigCategoryImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/ConfigCategoryImpl.java)4
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/GenericBindingImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/GenericBindingImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/HiddenNameListOptionEntry.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/HiddenNameListOptionEntry.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/LabelOptionImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/LabelOptionImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/ListOptionEntryImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/ListOptionEntryImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/ListOptionImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/ListOptionImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/OptionDescriptionImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/OptionDescriptionImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/OptionGroupImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/OptionGroupImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/OptionImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/OptionImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/PlaceholderCategoryImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/PlaceholderCategoryImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/SafeBinding.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/SafeBinding.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/YetAnotherConfigLibImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/YetAnotherConfigLibImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/AbstractControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/AbstractControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/BooleanControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/BooleanControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/ColorControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/ColorControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/CyclingListControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/CyclingListControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/DoubleFieldControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/DoubleFieldControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/DoubleSliderControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/DoubleSliderControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/DropdownStringControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/DropdownStringControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/EnumControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/EnumControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/EnumDropdownControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/EnumDropdownControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/FloatFieldControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/FloatFieldControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/FloatSliderControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/FloatSliderControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/IntegerFieldControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/IntegerFieldControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/IntegerSliderControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/IntegerSliderControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/ItemControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/ItemControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/LongFieldControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/LongFieldControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/LongSliderControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/LongSliderControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/StringControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/StringControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/controller/TickBoxControllerBuilderImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/controller/TickBoxControllerBuilderImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/utils/DimensionIntegerImpl.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/utils/DimensionIntegerImpl.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/impl/utils/YACLConstants.java (renamed from common/src/main/java/dev/isxander/yacl3/impl/utils/YACLConstants.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/mixin/AbstractSelectionListMixin.java (renamed from common/src/main/java/dev/isxander/yacl3/mixin/AbstractSelectionListMixin.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/mixin/ContainerEventHandlerMixin.java (renamed from fabric/src/main/java/dev/isxander/yacl3/fabric/mixin/ContainerEventHandlerMixin.java)24
-rw-r--r--src/main/java/dev/isxander/yacl3/mixin/MinecraftMixin.java (renamed from common/src/main/java/dev/isxander/yacl3/mixin/MinecraftMixin.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/mixin/OptionInstanceAccessor.java (renamed from common/src/main/java/dev/isxander/yacl3/mixin/OptionInstanceAccessor.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/mixin/TabNavigationBarAccessor.java16
-rw-r--r--src/main/java/dev/isxander/yacl3/platform/Env.java (renamed from common/src/main/java/dev/isxander/yacl3/platform/Env.java)0
-rw-r--r--src/main/java/dev/isxander/yacl3/platform/PlatformEntrypoint.java42
-rw-r--r--src/main/java/dev/isxander/yacl3/platform/YACLPlatform.java45
-rw-r--r--src/main/resources/META-INF/mods.toml (renamed from neoforge/src/main/resources/META-INF/mods.toml)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/be_by.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/be_by.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/el_gr.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/el_gr.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/en_us.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/en_us.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/et_ee.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/et_ee.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/fr_fr.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/fr_fr.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/it_it.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/it_it.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/nl_nl.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/nl_nl.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/pl_pl.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/pl_pl.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/pt_br.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/pt_br.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/ru_ru.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/ru_ru.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/sl_si.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/sl_si.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/tt_ru.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/tt_ru.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/zh_cn.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/zh_cn.json)0
-rw-r--r--src/main/resources/assets/yet_another_config_lib/lang/zh_tw.json (renamed from common/src/main/resources/assets/yet_another_config_lib/lang/zh_tw.json)0
-rw-r--r--src/main/resources/fabric.mod.json (renamed from fabric/src/main/resources/fabric.mod.json)6
-rw-r--r--src/main/resources/pack.mcmeta (renamed from neoforge/src/main/resources/pack.mcmeta)0
-rw-r--r--src/main/resources/yacl-128x.png (renamed from common/src/main/resources/yacl-128x.png)bin13813 -> 13813 bytes
-rw-r--r--src/main/resources/yacl-fabric.mixins.json (renamed from fabric/src/main/resources/yacl-fabric.mixins.json)2
-rw-r--r--src/main/resources/yacl.accesswidener (renamed from common/src/main/resources/yacl.accesswidener)3
-rw-r--r--src/main/resources/yacl.mixins.json (renamed from common/src/main/resources/yacl.mixins.json)3
-rw-r--r--src/testmod/java/dev/isxander/yacl3/test/AutogenConfigTest.java (renamed from test-common/src/main/java/dev/isxander/yacl3/test/AutogenConfigTest.java)0
-rw-r--r--src/testmod/java/dev/isxander/yacl3/test/ConfigTest.java (renamed from test-common/src/main/java/dev/isxander/yacl3/test/ConfigTest.java)0
-rw-r--r--src/testmod/java/dev/isxander/yacl3/test/Entrypoint.java23
-rw-r--r--src/testmod/java/dev/isxander/yacl3/test/GuiTest.java (renamed from test-common/src/main/java/dev/isxander/yacl3/test/GuiTest.java)20
-rw-r--r--src/testmod/java/dev/isxander/yacl3/test/mixin/TitleScreenMixin.java (renamed from test-common/src/main/java/dev/isxander/yacl3/test/mixin/TitleScreenMixin.java)0
-rw-r--r--src/testmod/resources/META-INF/mods.toml (renamed from test-neoforge/src/main/resources/META-INF/mods.toml)12
-rw-r--r--src/testmod/resources/assets/yacl3/textures/reach-around-placement.webp (renamed from test-common/src/main/resources/assets/yacl3/textures/reach-around-placement.webp)bin14840 -> 14840 bytes
-rw-r--r--src/testmod/resources/assets/yacl3/textures/sample-1.webp (renamed from test-common/src/main/resources/assets/yacl3/textures/sample-1.webp)bin10474 -> 10474 bytes
-rw-r--r--src/testmod/resources/assets/yacl3/textures/sample-2.webp (renamed from test-common/src/main/resources/assets/yacl3/textures/sample-2.webp)bin22308 -> 22308 bytes
-rw-r--r--src/testmod/resources/assets/yacl3/textures/sample-3.webp (renamed from test-common/src/main/resources/assets/yacl3/textures/sample-3.webp)bin17078 -> 17078 bytes
-rw-r--r--src/testmod/resources/assets/yacl3/textures/sample-4.webp (renamed from test-common/src/main/resources/assets/yacl3/textures/sample-4.webp)bin20772 -> 20772 bytes
-rw-r--r--src/testmod/resources/assets/yacl3/textures/sample-5.webp (renamed from test-common/src/main/resources/assets/yacl3/textures/sample-5.webp)bin11166 -> 11166 bytes
-rw-r--r--src/testmod/resources/fabric.mod.json33
-rw-r--r--src/testmod/resources/pack.mcmeta (renamed from test-neoforge/src/main/resources/pack.mcmeta)4
-rw-r--r--src/testmod/resources/yacl-test.mixins.json (renamed from test-common/src/main/resources/yacl-test.mixins.json)0
-rw-r--r--stonecutter.gradle.kts14
-rw-r--r--test-common/.gitignore42
-rw-r--r--test-common/build.gradle.kts25
-rw-r--r--test-fabric/.gitignore42
-rw-r--r--test-fabric/build.gradle.kts61
-rw-r--r--test-fabric/src/main/resources/fabric.mod.json16
-rw-r--r--test-neoforge/.gitignore42
-rw-r--r--test-neoforge/build.gradle.kts77
-rw-r--r--test-neoforge/gradle.properties1
-rw-r--r--test-neoforge/src/main/java/dev/isxander/yacl3/test/forge/ForgeTest.java10
-rw-r--r--versions/1.20.1-fabric/gradle.properties5
-rw-r--r--versions/1.20.1-forge/gradle.properties5
-rw-r--r--versions/1.20.4-fabric/gradle.properties5
-rw-r--r--versions/1.20.4-neoforge/gradle.properties5
-rw-r--r--versions/1.20.5-pre1-fabric/gradle.properties5
334 files changed, 805 insertions, 1852 deletions
diff --git a/build.gradle.kts b/build.gradle.kts
index b879642..8804ceb 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,115 +1,303 @@
plugins {
- alias(libs.plugins.architectury.plugin)
- alias(libs.plugins.architectury.loom) apply false
+ `java-library`
- alias(libs.plugins.minotaur) apply false
- alias(libs.plugins.cursegradle) apply false
- alias(libs.plugins.github.release)
- alias(libs.plugins.grgit)
-}
+ id("dev.architectury.loom") version "1.6.+"
+
+ id("me.modmuss50.mod-publish-plugin") version "0.5.+"
+ `maven-publish`
+ id("org.ajoberstar.grgit") version "5.0.+"
-architectury {
- minecraft = libs.versions.minecraft.get()
+ id("io.github.p03w.machete") version "2.+"
}
-version = "3.3.3+1.20.4"
+val loader = loom.platform.get().name.lowercase()
+val isCommon = stonecutter.current.project.endsWith("common")
+val isFabric = loader == "fabric" && !isCommon // common uses fabric platform
+val isNeoforge = loader == "neoforge"
+val isForge = loader == "forge"
+val isForgeLike = isNeoforge || isForge
+
+val mcVersion = stonecutter.current.version
+val mcDep = findProperty("fmj.mcDep")?.toString()
+group = "dev.isxander"
+val versionWithoutMC = "3.4.0"
+version = "$versionWithoutMC+${stonecutter.current.project}"
+val isAlpha = "alpha" in version.toString()
val isBeta = "beta" in version.toString()
-val changelogText = rootProject.file("changelogs/${project.version}.md").takeIf { it.exists() }?.readText() ?: "No changelog provided."
-val snapshotVer = "${grgit.branch.current().name.replace('/', '.')}-SNAPSHOT"
-allprojects {
- apply(plugin = "java")
- apply(plugin = "maven-publish")
- apply(plugin = "architectury-plugin")
+base {
+ archivesName.set(property("modName").toString())
+}
+
+java.toolchain {
+ languageVersion.set(JavaLanguageVersion.of(17))
+}
+
+stonecutter.expression {
+ when (it) {
+ "controlify" -> isPropDefined("deps.controlify")
+ "mod-menu" -> isPropDefined("deps.modMenu")
+ "fabric" -> isFabric
+ "neoforge" -> isNeoforge
+ "forge" -> isForge
+ "!forge" -> !isForge
+ "forge-like" -> isForgeLike
+ else -> null
+ }
+}
+
+val testmod by sourceSets.creating {
+ compileClasspath += sourceSets.main.get().compileClasspath
+ runtimeClasspath += sourceSets.main.get().runtimeClasspath
+}
- version = rootProject.version
- group = "dev.isxander"
+loom {
+ accessWidenerPath.set(rootProject.file("src/main/resources/yacl.accesswidener"))
- if (System.getenv().containsKey("GITHUB_ACTIONS")) {
- version = "$version+$snapshotVer"
+ runs {
+ create("testmodClient") {
+ client()
+ name = "Testmod Client"
+ source(testmod)
+ }
+ }
+ if (stonecutter.current.isActive) {
+ runConfigs.all {
+ ideConfigGenerated(true)
+ runDir("../../run")
+ }
}
- pluginManager.withPlugin("base") {
- val base = the<BasePluginExtension>()
+ if (isForge) {
+ forge {
+ convertAccessWideners.set(true)
+ mixinConfigs("yacl.mixins.json")
+ }
+ }
- base.archivesName.set("yet-another-config-lib-${project.name}")
+ mixin {
+ useLegacyMixinAp.set(false)
}
- ext["changelogText"] = changelogText
- ext["isBeta"] = isBeta
+ createRemapConfigurations(testmod)
+}
- repositories {
- mavenCentral()
- maven("https://maven.isxander.dev/releases")
- maven("https://maven.isxander.dev/snapshots")
- maven("https://maven.quiltmc.org/repository/release")
- maven("https://maven.neoforged.net/releases")
- maven("https://maven.parchmentmc.org")
- maven("https://api.modrinth.com/maven") {
- name = "Modrinth"
- content {
- includeGroup("maven.modrinth")
- }
+repositories {
+ mavenCentral()
+ maven("https://maven.terraformersmc.com")
+ maven("https://maven.isxander.dev/releases")
+ maven("https://maven.isxander.dev/snapshots")
+ maven("https://maven.quiltmc.org/repository/release")
+ maven("https://oss.sonatype.org/content/repositories/snapshots/")
+ maven("https://api.modrinth.com/maven") {
+ content {
+ includeGroup("maven.modrinth")
+ }
+ }
+ maven("https://maven.neoforged.net/releases/")
+}
+
+dependencies {
+ fun Dependency?.jij(): Dependency? {
+ if (!isCommon) {
+ include(this!!)
}
+ return this
}
- pluginManager.withPlugin("publishing") {
- val publishing = the<PublishingExtension>()
+ minecraft("com.mojang:minecraft:${if (mcVersion.contains("beta")) "1.20.5-pre1" else mcVersion}")
- publishing.repositories {
- val username = "XANDER_MAVEN_USER".let { System.getenv(it) ?: findProperty(it) }?.toString()
- val password = "XANDER_MAVEN_PASS".let { System.getenv(it) ?: findProperty(it) }?.toString()
- if (username != null && password != null) {
- maven(url = "https://maven.isxander.dev/releases") {
- name = "Releases"
- credentials {
- this.username = username
- this.password = password
- }
- }
- maven(url = "https://maven.isxander.dev/snapshots") {
- name = "Snapshots"
- credentials {
- this.username = username
- this.password = password
- }
- }
- } else {
- println("Xander Maven credentials not satisfied.")
- }
+ mappings(loom.layered {
+ optionalProp("deps.quiltMappings") {
+ mappings("org.quiltmc:quilt-mappings:$mcVersion+build.$it:intermediary-v2")
}
+ officialMojangMappings()
+ })
+
+ if (isFabric) {
+ modImplementation("net.fabricmc:fabric-loader:${findProperty("deps.fabricLoader")}")
+
+ val fapiVersion = property("deps.fabricApi").toString()
+ listOf(
+ "fabric-resource-loader-v0",
+ ).forEach {
+ modImplementation(fabricApi.module(it, fapiVersion))
+ }
+ modRuntimeOnly("net.fabricmc.fabric-api:fabric-api:$fapiVersion")
+ }
+ if (isNeoforge) {
+ "neoForge"("net.neoforged:neoforge:${findProperty("deps.neoforge")}")
}
+ if (isForge) {
+ "forge"("net.minecraftforge:forge:${findProperty("deps.forge")}")
+
+ // enable when it's needed
+// val mixinExtras = findProperty("deps.mixinExtras")
+// compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:$mixinExtras")!!)
+// api("io.github.llamalad7:mixinextras-forge:$mixinExtras").jij()
+ }
+
+ listOf(
+ "imageio:imageio-core",
+ "imageio:imageio-webp",
+ "imageio:imageio-metadata",
+ "common:common-lang",
+ "common:common-io",
+ "common:common-image"
+ ).forEach {
+ implementation("com.twelvemonkeys.$it:${findProperty("deps.imageio")}").jij()
+ }
+
+ listOf(
+ "json",
+ "gson"
+ ).forEach {
+ implementation("org.quiltmc.parsers:$it:${findProperty("deps.quiltParsers")}").jij()
+ }
+
+ "testmodImplementation"(sourceSets.main.get().output)
}
-githubRelease {
- token(findProperty("GITHUB_TOKEN")?.toString())
+java {
+ withSourcesJar()
+ //withJavadocJar()
+}
+
+tasks {
+ processResources {
+ val props = mutableMapOf(
+ "id" to findProperty("modId"),
+ "group" to project.group,
+ "name" to findProperty("modName"),
+ "description" to findProperty("modDescription"),
+ "version" to project.version,
+ "github" to findProperty("githubProject"),
+ "mc" to mcDep
+ )
+ optionalProp("fmj.yaclDep") {
+ props["yacl"] = it
+ }
- val githubProject: String by rootProject
- val split = githubProject.split("/")
- owner(split[0])
- repo(split[1])
- tagName("${project.version}")
- targetCommitish(grgit.branch.current().name)
- body(changelogText)
- prerelease(isBeta)
- releaseAssets(
- { findProject(":fabric")?.tasks?.get("remapJar")?.outputs?.files },
- { findProject(":fabric")?.tasks?.get("remapSourcesJar")?.outputs?.files },
- { findProject(":forge")?.tasks?.get("remapJar")?.outputs?.files },
- { findProject(":forge")?.tasks?.get("remapSourcesJar")?.outputs?.files },
+ props.forEach(inputs::property)
+
+ filesMatching("fabric.mod.json") { expand(props) }
+ filesMatching("META-INF/mods.toml") { expand(props) }
+ }
+
+ register("releaseMod") {
+ group = "mod"
+
+ dependsOn("publishMods")
+ dependsOn("publish")
+ }
+}
+
+machete {
+ json.enabled.set(false)
+}
+
+publishMods {
+ displayName.set("YetAnotherConfigLib $versionWithoutMC for MC $mcVersion")
+ file.set(tasks.remapJar.get().archiveFile)
+ changelog.set(
+ rootProject.file("changelogs/${versionWithoutMC}.md")
+ .takeIf { it.exists() }
+ ?.readText()
+ ?: "No changelog provided."
)
+ type.set(when {
+ isAlpha -> ALPHA
+ isBeta -> BETA
+ else -> STABLE
+ })
+ modLoaders.add("fabric")
+
+ // modrinth and curseforge use different formats for snapshots. this can be expressed globally
+ val stableMCVersions = listOf(stonecutter.current.project)
+
+ val modrinthId: String by project
+ if (modrinthId.isNotBlank() && hasProperty("modrinth.token")) {
+ modrinth {
+ projectId.set(modrinthId)
+ accessToken.set(findProperty("modrinth.token")?.toString())
+ minecraftVersions.addAll(stableMCVersions)
+
+ requires { slug.set("fabric-api") }
+ }
+
+ tasks.getByName("publishModrinth") {
+ dependsOn("optimizeOutputsOfRemapJar")
+ }
+ }
+
+ val curseforgeId: String by project
+ if (curseforgeId.isNotBlank() && hasProperty("curseforge.token")) {
+ curseforge {
+ projectId.set(curseforgeId)
+ accessToken.set(findProperty("curseforge.token")?.toString())
+ minecraftVersions.addAll(stableMCVersions)
+
+ requires { slug.set("fabric-api") }
+ }
+
+ tasks.getByName("publishCurseforge") {
+ dependsOn("optimizeOutputsOfRemapJar")
+ }
+ }
+
+ val githubProject: String by project
+ if (githubProject.isNotBlank() && hasProperty("github.token")) {
+ github {
+ repository.set(githubProject)
+ accessToken.set(findProperty("github.token")?.toString())
+ //commitish.set(grgit.branch.current().name)
+ }
+
+ tasks.getByName("publishGithub") {
+ dependsOn("optimizeOutputsOfRemapJar")
+ }
+ }
}
-tasks.register("releaseMod") {
- group = "mod"
+publishing {
+ publications {
+ create<MavenPublication>("mod") {
+ groupId = "dev.isxander"
+ artifactId = "zoomify"
+
+ from(components["java"])
+ }
+ }
- dependsOn("githubRelease")
+ repositories {
+ val username = "XANDER_MAVEN_USER".let { System.getenv(it) ?: findProperty(it) }?.toString()
+ val password = "XANDER_MAVEN_PASS".let { System.getenv(it) ?: findProperty(it) }?.toString()
+ if (username != null && password != null) {
+ maven(url = "https://maven.isxander.dev/releases") {
+ name = "XanderReleases"
+ credentials {
+ this.username = username
+ this.password = password
+ }
+ }
+ tasks.getByName("publishModPublicationToXanderReleasesRepository") {
+ dependsOn("optimizeOutputsOfRemapJar")
+ }
+ } else {
+ println("Xander Maven credentials not satisfied.")
+ }
+ }
+}
+
+tasks.getByName("generateMetadataFileForModPublication") {
+ dependsOn("optimizeOutputsOfRemapJar")
}
-tasks.register("buildAll") {
- group = "mod"
+fun <T> optionalProp(property: String, block: (String) -> T?) {
+ findProperty(property)?.toString()?.takeUnless { it.isBlank() }?.let(block)
+}
- findProject(":fabric")?.let { dependsOn(it.tasks["build"]) }
- findProject(":forge")?.let { dependsOn(it.tasks["build"]) }
+fun isPropDefined(property: String): Boolean {
+ return property(property)?.toString()?.isNotBlank() ?: false
}
diff --git a/changelogs/0.1.1.md b/changelogs/0.1.1.md
deleted file mode 100644
index 45efcd7..0000000
--- a/changelogs/0.1.1.md
+++ /dev/null
@@ -1 +0,0 @@
-- Wrap group names and label controllers
diff --git a/changelogs/0.1.2.md b/changelogs/0.1.2.md
deleted file mode 100644
index 7602d45..0000000
--- a/changelogs/0.1.2.md
+++ /dev/null
@@ -1,3 +0,0 @@
-- Add require restart Option attribute
-- Add Slovenian translation ([#8](https://github.com/isXander/YetAnotherConfigLib/pull/8))
-- Add Polish translation ([#9](https://github.com/isXander/YetAnotherConfigLib/pull/9))
diff --git a/changelogs/1.0.0.md b/changelogs/1.0.0.md
deleted file mode 100644
index 5dccb9d..0000000
--- a/changelogs/1.0.0.md
+++ /dev/null
@@ -1,4 +0,0 @@
-- Add search field
-- Make collapse button more obvious
-- Change "Finished" button text to "Done"
-- Input field improvements
diff --git a/changelogs/1.1.0.md b/changelogs/1.1.0.md
deleted file mode 100644
index ad09cdf..0000000
--- a/changelogs/1.1.0.md
+++ /dev/null
@@ -1,7 +0,0 @@
-- Improved search - Now searches every category rather than the currently selected one
-- Option Flags - Add flags to options that when changed, the flag is executed once per the whole config.
-- Deprecated "Require Restart" in favour of option flags.
-- Fix search field overlapping undo and cancel at some GUI scales
-- Fix scrollbar appearing in the wrong place at some GUI scales
-- Fix option entries not extending to fill the list's width at some GUI scales
-- Fix tooltips rendering below the scrollbar
diff --git a/changelogs/1.1.1.md b/changelogs/1.1.1.md
deleted file mode 100644
index c9fd959..0000000
--- a/changelogs/1.1.1.md
+++ /dev/null
@@ -1 +0,0 @@
-- Fix search field rendering over tooltips
diff --git a/changelogs/1.2.0.md b/changelogs/1.2.0.md
deleted file mode 100644
index 537819c..0000000
--- a/changelogs/1.2.0.md
+++ /dev/null
@@ -1,3 +0,0 @@
-- Categories can now be scrolled when overflowing
-- Available property for options, so you can disable certain options in some conditions
-- Fix all first tooltip line having a larger line height
diff --git a/changelogs/1.2.1.md b/changelogs/1.2.1.md
deleted file mode 100644
index 940812e..0000000
--- a/changelogs/1.2.1.md
+++ /dev/null
@@ -1 +0,0 @@
-- Search can now query categories and groups
diff --git a/changelogs/1.3.0.md b/changelogs/1.3.0.md
deleted file mode 100644
index 87a6a1c..0000000
--- a/changelogs/1.3.0.md
+++ /dev/null
@@ -1,3 +0,0 @@
-- Option tooltips now have access to the pending value to dynamically change
-- `PlaceholderCategory`: A category that when selected, just opens a screen
-- `instant` property for option builders: makes the option apply instantly instead of when pressing "Apply"
diff --git a/changelogs/1.4.0.md b/changelogs/1.4.0.md
deleted file mode 100644
index 72a9413..0000000
--- a/changelogs/1.4.0.md
+++ /dev/null
@@ -1,7 +0,0 @@
-- Improve tooltips a lot:
- - They now never get cut off by the edge of the screen
- - They never overlap the hovered option/group/category
- - They don't take half a second to appear
- - They don't disappear when you move your mouse
-- `ButtonOption` now consumes itself, so you can access it when building.
-- Make `Option#available` mutable with `Option#setAvailable`
diff --git a/changelogs/1.4.1.md b/changelogs/1.4.1.md
deleted file mode 100644
index bfcd366..0000000
--- a/changelogs/1.4.1.md
+++ /dev/null
@@ -1 +0,0 @@
-- Fix slider tooltip showing when not hovering
diff --git a/changelogs/1.4.2.md b/changelogs/1.4.2.md
deleted file mode 100644
index 691610b..0000000
--- a/changelogs/1.4.2.md
+++ /dev/null
@@ -1,3 +0,0 @@
-- Improve search performance (even when empty) by a LOT
-- API to add listeners before building
-- Fix cancel/reset button tooltip going off-screen
diff --git a/changelogs/1.4.3.md b/changelogs/1.4.3.md
deleted file mode 100644
index cf6ba76..0000000
--- a/changelogs/1.4.3.md
+++ /dev/null
@@ -1,2 +0,0 @@
-- Cache search query results for huge performance gains
-- Allow some `StringControllerElement` methods to be inheritable
diff --git a/changelogs/1.4.4.md b/changelogs/1.4.4.md
deleted file mode 100644
index 1196590..0000000
--- a/changelogs/1.4.4.md
+++ /dev/null
@@ -1,2 +0,0 @@
-- Fix search not behaving properly with default collapsed option groups
-- Minor refactors
diff --git a/changelogs/1.4.5.md b/changelogs/1.4.5.md
deleted file mode 100644
index f979a54..0000000
--- a/changelogs/1.4.5.md
+++ /dev/null
@@ -1 +0,0 @@
-- Remove debug logging
diff --git a/changelogs/1.5.0.md b/changelogs/1.5.0.md
deleted file mode 100644
index 99b60d2..0000000
--- a/changelogs/1.5.0.md
+++ /dev/null
@@ -1,3 +0,0 @@
-- Make controller names go italic when there are pending changes
-- Allow `availableValues` to be passed to `EnumController`
-- More validation for slider controllers
diff --git a/changelogs/1.6.0.md b/changelogs/1.6.0.md
deleted file mode 100644
index 4e0a581..0000000
--- a/changelogs/1.6.0.md
+++ /dev/null
@@ -1 +0,0 @@
-- Expanded option cycling capability, now allowing any list to be cycled, not just enums.
diff --git a/changelogs/1.7.0.md b/changelogs/1.7.0.md
deleted file mode 100644
index 7ce9c7f..0000000
--- a/changelogs/1.7.0.md
+++ /dev/null
@@ -1,13 +0,0 @@
-## End-user changes
-
-- Smooth category scrolling
-- Individual reset buttons for every option
-- Fix bug where option lists that *just* went over into scrolling scrolled extremely slow.
-
-## Developer API changes
-
-- Actual Config API to save and load fields in a class automatically [(documentation)](https://github.com/isXander/YetAnotherConfigLib/wiki/config-api)
-- Separate `Dimension` into `Dimension` and `MutableDimension`
-- Make `dim` private in `AbstractWidget` so mods can't change the dimension without `setDimension`
-- New Option API method `isPendingValueDefault` to check if pending value is equal to default value of binding
-- Fix `Option#requestSetDefault` and `Option#forgetPendingValue` implementations weren't notifying listeners
diff --git a/changelogs/1.7.1.md b/changelogs/1.7.1.md
deleted file mode 100644
index 3570cef..0000000
--- a/changelogs/1.7.1.md
+++ /dev/null
@@ -1 +0,0 @@
-- Breaking change: `GsonConfigInstance` now only serializes fields annotated with `@ConfigEntry` to prevent strange GSON problem.
diff --git a/changelogs/2.0.0.md b/changelogs/2.0.0.md
deleted file mode 100644
index b56d0b1..0000000
--- a/changelogs/2.0.0.md
+++ /dev/null
@@ -1,7 +0,0 @@
-- Update to 1.19.3
-- Colour field controllers
-- Better carot positioning when clicking in text fields
-- Better text selection for text fields
-- Smooth scrolling for category list
-- Fix category list scrollbar appearing under option list background in-game
-- Fix tick box name text length limiting
diff --git a/changelogs/2.1.0.md b/changelogs/2.1.0.md
deleted file mode 100644
index 6f10824..0000000
--- a/changelogs/2.1.0.md
+++ /dev/null
@@ -1,40 +0,0 @@
-## Lists
-
-Implements mutable list options where you can create, remove and shift entries in a list.
-
-### API
-
-Lists hack option groups with their own implementation for this, so each individual list takes form as a whole option group.
-
-```java
-ListOption.createBuilder(String.class)
- .name(Text.of("List Option"))
- .binding(/* gets and sets a List, requires list field to be not final, does not manipulate the list */)
- .controller(StringController::new) // usual controllers, passed to every entry
- .initial("") // when adding a new entry to the list, this is the initial value it has
- .build()
-```
-
-### Implementation details
-
-When implementing this, it was vital to me that _all_ controllers work with lists, not ones specifically designed
-for list entries. This was achieved quite easily by having each entry being its own option with an empty name and tooltip with its own controller, that pairs with its list "parent" to actually modify the option.
-
-Option groups were taken advantage of and hacked into its own option, only minor changes had to be made to get this
-to work with value application.
-
-Applicable controllers have been modified to expand their inputs to near full width when no name is present.
-
-### Screenshots
-
-![screenshot](https://user-images.githubusercontent.com/43245524/206871262-73e01588-9e7b-4667-8f5d-0d0bd4d48e43.png)
-
-## String improvements
-
-- Allow `StringControllerElement` to have unlimited text length
-- When pressing `Delete` in a text field whilst text is highlighted,
- it will act like `Backspace` like it should.
-
-## Other changes
-
-- Slightly compacted elements
diff --git a/changelogs/2.1.1.md b/changelogs/2.1.1.md
deleted file mode 100644
index 724993d..0000000
--- a/changelogs/2.1.1.md
+++ /dev/null
@@ -1,8 +0,0 @@
-- Remove padding between list items
-- No longer hide add and reset buttons when lists are collapsed, but automatically expand them when clicked
-- Fix removing items from lists didn't update up and down buttons
-- Fix lists not updating properly when removing the final item from a list
-- Refactor some gui list code to abstract all list functionality from main gui classes
-- Fix option entries sometimes overlapping due to the reset button
-- Fix string elements cropping 1px off the top of the text
-- Abstracted builders to restrict API usage
diff --git a/changelogs/2.2.0.md b/changelogs/2.2.0.md
deleted file mode 100644
index 49dceb1..0000000
--- a/changelogs/2.2.0.md
+++ /dev/null
@@ -1,13 +0,0 @@
-## User Changes
-
-- New `List is empty` text when lists are empty
-- Fix category buttons sometimes not being clickable when you can scroll
-- Fix the list add button not disabling when lists are disabled
-- Fix the option list background not quite reaching the edge of the screen.
-
-## Developer Changes
-
-- New `LabelOption` for shorthand to making labels!
-- Log when option bindings don't match up after using their save function
-- Internally move YACLScreen button actions into separate methods for future features :o
-- Fully publish sources jar & javadoc jar now that the loom plugin is fixed.
diff --git a/changelogs/2.3.0.md b/changelogs/2.3.0.md
deleted file mode 100644
index 5cc97bd..0000000
--- a/changelogs/2.3.0.md
+++ /dev/null
@@ -1 +0,0 @@
-- Update to 1.19.4
diff --git a/changelogs/2.3.1.md b/changelogs/2.3.1.md
deleted file mode 100644
index 13b4bd5..0000000
--- a/changelogs/2.3.1.md
+++ /dev/null
@@ -1 +0,0 @@
-- Fix buttons stuck focusing after clicking the mouse.
diff --git a/changelogs/2.4.0.md b/changelogs/2.4.0.md
deleted file mode 100644
index 2ccfebb..0000000
--- a/changelogs/2.4.0.md
+++ /dev/null
@@ -1,9 +0,0 @@
-## Features
-
-- New builder API for `GsonConfigInstance`, deprecated the constructors.
-
-## Bug Fixes
-
-- Fixed `StringController`s not focusing properly since 2.3.1 ([#58](https://github.com/isXander/YetAnotherConfigLib/issues/58)).
-- Fixed resetting a `StringController` sometimes crashing the game ([#57](https://github.com/isXander/YetAnotherConfigLib/issues/57)).
-- Fix `ListOption.Builder` not exposing `listener()` like in `Option.Builder` ([#55](https://github.com/isXander/YetAnotherConfigLib/issues/55)).
diff --git a/changelogs/2.4.1.md b/changelogs/2.4.1.md
deleted file mode 100644
index 008c0c9..0000000
--- a/changelogs/2.4.1.md
+++ /dev/null
@@ -1,9 +0,0 @@
-## Features
-
-- `OptionGroup.Builder` and `ConfigCategory.Builder` now extend `OptionAddable` so you can abstractly
-add options to either of them.
-
-## API Changes
-
-- Deprecated the varargs tooltip builder method in `Option.Builder` due to unsafe varargs. There is now
- an equivalent that is not varargs but a single function.
diff --git a/changelogs/2.4.2.md b/changelogs/2.4.2.md
deleted file mode 100644
index eff1299..0000000
--- a/changelogs/2.4.2.md
+++ /dev/null
@@ -1,2 +0,0 @@
-- Prioritised tooltip rendering to above the option rather than below.
-- Fix empty tooltips rendering a newline.
diff --git a/changelogs/2.5.0+1.19.4.md b/changelogs/2.5.0+1.19.4.md
deleted file mode 100644
index 7355044..0000000
--- a/changelogs/2.5.0+1.19.4.md
+++ /dev/null
@@ -1,9 +0,0 @@
-- Add Forge support
-
-## Migrating to 2.5.0 for Developers
-
-The gradle dependency has changed:
-
-```kt
-modImplementation("dev.isxander.yacl:yet-another-config-lib-fabric:2.5.0+1.19.4")
-```
diff --git a/changelogs/2.5.1+1.19.4.md b/changelogs/2.5.1+1.19.4.md
deleted file mode 100644
index 9df0272..0000000
--- a/changelogs/2.5.1+1.19.4.md
+++ /dev/null
@@ -1 +0,0 @@
-- Improve button compatibility with Controlify
diff --git a/changelogs/3.0.0+1.20.md b/changelogs/3.0.0+1.20.md
deleted file mode 100644
index 9e1c1ae..0000000
--- a/changelogs/3.0.0+1.20.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# YetAnotherConfigLib v3
-
-3.0 of YACL introduces a new UI layout, taking advantage of 1.19.4's new tab system!
-
-## Description Panel
-
-The description panel takes the place of the old category buttons, you can now interact with the text by clicking or hovering and the description can contain an animated WebP file or a static image. This can help you as a developer to portray what your option does with an actual example.
-Like the old tooltip system, these descriptions can dynamically change based on the value of the option, including the image.
-After a few seconds of hovering, the description will start to auto-scroll if necessary so inputs such as controller can still use the UI.
-
-```java
-.description(OptionDescription.createBuilder()
- .text(Text.literal("Line 1"))
- .text(Text.literal("Line 2"))
- .webpImage(new Identifier("mymod", "config/screenshots/config_example.webp"))
- .build())
-```
-*the above is applicable to both groups and options*
-
-## Tab System
-
-YACL now uses a slightly modified version of 1.19.4's new create world screen, this adds tab overflow, so you can scroll through the tabs in case there are too many to fit on the screen.
-
-## Controller Builders
-
-Controllers now use a builder system, rather than using constructors. This allows for more flexibility in the future.
-You can still use your own controller implementations without creating a builder, using `.customController()`.
-
-## For mod developers...
-
-This update is for both 1.19.4 and 1.20, there is complete API parity. 1.20 is now the active branch,
-and 1.19.4 is now considered LTS and may receive features from 1.20 at a later date.
-
-## For users/modpack developers...
-
-YACL 3.0 includes the old 2.x inside the new JAR. So you can safely upgrade to 3.0 without breaking
-mods that have not yet updated. However, the old UI will still be present for this outdated mods.
diff --git a/changelogs/3.0.0-beta.2+1.20.md b/changelogs/3.0.0-beta.2+1.20.md
deleted file mode 100644
index 32fc04b..0000000
--- a/changelogs/3.0.0-beta.2+1.20.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# YetAnotherConfigLib v3 Beta 2
-
-## Changes
-
-- List options now use the new option descriptions
-- All options now print a warning if using the old tooltip system
-
-## Bug Fixes
-
-- Fix animated images sometimes rendering incorrectly
-- Fix animated images flickering when reaching end of loop
diff --git a/changelogs/3.0.0-beta.3+1.20.md b/changelogs/3.0.0-beta.3+1.20.md
deleted file mode 100644
index b232cb0..0000000
--- a/changelogs/3.0.0-beta.3+1.20.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# YetAnotherConfigLib 3.0 Beta 3
-
-## Changes
-
-- Removed being able to set description name. Option or group name is used.
-- Added new description image overload `.image(image, u, v, width, height, textureWidth, textureHeight)`
-- Images are now loaded synchronously off-thread.
-- Added javadoc to all new API things.
-
-## Bug Fixes
-
-- Fix arrow key navigation not being able to focus on the button actions.
diff --git a/changelogs/3.0.0-beta.4+1.20.md b/changelogs/3.0.0-beta.4+1.20.md
deleted file mode 100644
index 2bf1354..0000000
--- a/changelogs/3.0.0-beta.4+1.20.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# YetAnotherConfigLib 3.0 Beta 4
-
-## Additions
-
-- Added `OptionDescription.Builder.customImage()` to add your own renderer for the option description.
-
-## API Changes
-
-This release brings a few API breakages, getting them out the way, as it is a major update.
-
-- All controllers now have an API builder for creating them. This is to make it easier to add
- more options to them in the future. This also creates a new API layer to remove simple implementations of YACL
- from using the GUI package. The old constructors are still available and you can pass your own controller
- with `.customController()`. An example would be `.controller(TickBoxControllerBuilder::create)` or:
- ```java
- .controller(opt -> IntegerSliderControllerBuilder.create(opt)
- .range(0, 10)
- .step(1))
- ```
-- Completely removed `.tooltip()` from groups and options. You should use `.description()` instead.
- To make this a little easier, `OptionDescription.of(Component...)` has been added so you don't need to
- create a builder.
-- Removed `OptionDescription.Builder.name(Component)` as it now just uses the option name.
-
-## Bug Fixes
-
-- Fixed option descriptions being stuck on the last clicked option when not hovering.
-- Fixed category tooltips not being displayed with the new tabs.
diff --git a/changelogs/3.0.0-beta.5+1.20.md b/changelogs/3.0.0-beta.5+1.20.md
deleted file mode 100644
index e28b36d..0000000
--- a/changelogs/3.0.0-beta.5+1.20.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# YetAnotherConfigLib 3.0 Beta 5
-
-## API Changes
-
-- `OptionDescription.Builder#description` has been renamed to `text`, to make it more clear as it used to look like:
- ```java
- .description(OptionDescription.createBuilder()
- .description(Component.literal("This is some text"))
- .build())
- ```
-- `ListOption.createBuilder` now no longer takes a class parameter, to match with `Option`. This means you can no longer
- do `ListOption.createBuilder(String.class)`, instead you should do `ListOption.<String>createBuilder()`.
-
-## Bug Fixes
-
-- Fixed option list entries sometimes appearing on top of the navbar.
diff --git a/changelogs/3.0.0-beta.6+1.20.md b/changelogs/3.0.0-beta.6+1.20.md
deleted file mode 100644
index 5f60c67..0000000
--- a/changelogs/3.0.0-beta.6+1.20.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# YetAnotherConfigLib 3.0 Beta 6
-
-## Bug Fixes
-
-- Fix reading of some lossy animated WebP images.
diff --git a/changelogs/3.0.0-beta.7+1.20.md b/changelogs/3.0.0-beta.7+1.20.md
deleted file mode 100644
index b9dd8d6..0000000
--- a/changelogs/3.0.0-beta.7+1.20.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# YetAnotherConfigLib 3.0.0-beta.7+1.20
-
-This version adds no features, nor bug fixes, instead it implements a breaking change:
-
-**The YACL package has changed** to `dev.isxander.yacl3` and **the YACL mod-id has changed** to `yet_another_config_lib_v3`.
-This is to prevent conflicts with 2.0, so you can load both versions at the same time so older mods don't break.
diff --git a/changelogs/3.0.1+1.20.md b/changelogs/3.0.1+1.20.md
deleted file mode 100644
index f31f9e8..0000000
--- a/changelogs/3.0.1+1.20.md
+++ /dev/null
@@ -1 +0,0 @@
-- Fix crash when loading YACL images
diff --git a/changelogs/3.0.2+1.20.md b/changelogs/3.0.2+1.20.md
deleted file mode 100644
index 5f53a03..0000000
--- a/changelogs/3.0.2+1.20.md
+++ /dev/null
@@ -1,2 +0,0 @@
-- Fix `IntegerFieldController` and `LongFieldController` not allowing negative values.
-- Reimplement `ButtonOption` changing the 'EXECUTE' text with `ButtonOption.Builder#text()`
diff --git a/changelogs/3.0.3+1.20.md b/changelogs/3.0.3+1.20.md
deleted file mode 100644
index d5dd69b..0000000
--- a/changelogs/3.0.3+1.20.md
+++ /dev/null
@@ -1,2 +0,0 @@
-- Allow transparency for WEBP and GIF images.
-- Fix crash when reading single-frame WEBPs.
diff --git a/changelogs/3.1.0+1.20.md b/changelogs/3.1.0+1.20.md
deleted file mode 100644
index ff3f8ca..0000000
--- a/changelogs/3.1.0+1.20.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# YetAnotherConfigLib 3.1.0 for 1.20
-
-## API Changes
-
-### `ListOption` changes
-
-A PR by [Crendgrim](https://github.com/isXander/YetAnotherConfigLib/pull/89) - thanks a lot!
-
-- Allow to specify size limits for option lists.
- - This allows to set a minimum and maximum length for the option list with the `minimumNumberOfEntries`
- and `maximumNumberOfEntries` builder methods.
-- Allow "reversed" lists that add new options at their end.
- - List options until now always grew at the top. This patch allows you to manipulate this behaviour with the
- `insertEntriesAtEnd` builder method.
-
-### `ImageRenderer` changes
-
-Added a `tick()` method to image renderers that allows to update the image in a regular interval.
-
-## Bug Fixes
-
-- Fixed a bug where image renderers were rendered twice per frame.
-- Updated the ImageIO dependency to fix sometimes buggy animated WebP rendering.
-- Fixed the name of the list being rendered on every entry of said list.
-
-## Language Updates
-
-- Added Tatar translation (by [Amirhan-Taipovjan-Greatest-I](https://github.com/isXander/YetAnotherConfigLib/pull/90))
diff --git a/changelogs/3.2.0+1.20.2.md b/changelogs/3.2.0+1.20.2.md
deleted file mode 100644
index f52d5c4..0000000
--- a/changelogs/3.2.0+1.20.2.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# YetAnotherConfigLib 3.2 for 1.20.2
-
-The artifact for this release is
-`dev.isxander.yacl:yet-another-config-lib-fabric:3.2.0+1.20.2` (assuming Fabric)
-
-## Config API V2
-
-Starting this update, the previous config api is now deprecated.
-
-The new API is much more modular, and is now fully API-safe.
-
-### What does it look like?
-```java
-public class MyConfig {
- public static final ConfigClassHandler<MyConfig> HANDLER = ConfigClassHandler.createBuilder(MyConfig.class)
- .id(new ResourceLocation("my_mod", "my_config")) // unique ID for your config
- .serializer(config -> GsonConfigSerializerBuilder.create(config)
- .setPath(FabricLoader.getInstance().getConfigDir().resolve("my_config.json"))
- .setJson5(true) // json5 support, with GSON!
- .build())
- .build();
-
- @SerialEntry(comment = "optional comment!")
- public boolean myOption = true;
-
- public static void save() {
- MyConfig.HANDLER.serializer().save();
- }
-
- public static void load() {
- MyConfig.HANDLER.serializer().load();
- }
-}
-```
-
-As you can see from the above example, it's syntactically quite similar
-to the old API, but with a few key differences:
-- The method of serialization has been separated from the class handler itself,
- allowing an API safe implementation without needing to override the class handler.
-- Supports abstract serialization.
-- Names make a lot more sense.
-
-### Auto-gen
-
-The new API can now fully auto-generate your config into a YACL GUI with annotations.
-I have been very wary of this feature, since usually it can be very limiting, destroying most
-of the core values of the powerful YACL builder interface. However, I believe I've found a great
-modular way so that developers can extend the auto-gen feature with their own custom annotations,
-adding support for their own custom controllers!
-
-```java
-public class MyConfig {
- public static final ConfigClassHandler<MyConfig> HANDLER = ConfigClassHandler.createBuilder(MyConfig.class)
- .id(new ResourceLocation("my_mod", "my_config")) // unique ID for your config
- .serializer(config -> GsonConfigSerializerBuilder.create(config)
- .setPath(FabricLoader.getInstance().getConfigDir().resolve("my_config.json"))
- .setJson5(true) // json5 support, with GSON!
- .build())
- .build();
-
- @AutoGen(category = "my_category", group = "my_group")
- @Boolean(formatter = Boolean.Formatter.YES_NO, colored = true)
- public boolean myOption = true;
-
- public static Screen createScreen(Screen parent) {
- return MyConfig.HANDLER.generateGui().generateScreen(parent);
- }
-}
-```
-
-Above is an example of auto-generating a `BooleanController`. Notice how
-the field does not require `@SerialEntry`. These are completely separate,
-and you can use both at the same time.
-
-For the full range of auto-gen annotations, check the source!
-
-Documentation for the new API is still a work in progress. For now, it's best
-to look at the following class: [`dev.isxander.yacl3.test.AutogenConfigTest`](https://github.com/isXander/YetAnotherConfigLib/blob/1.20.x/dev/test-common/src/main/java/dev/isxander/yacl3/test/AutogenConfigTest.java) (not available on the artifact).
-
-## Fix Sodium crash
-
-This is bringing the off-branch hotfix 3.1.1 to the main branch.
-
-## Dropdown controllers
-
-[Crendgrim](https://github.com/isXander/Crendgrim) has PRed a dropdown controller! Which is in this release!
-
-This adds two new controller builders, `DropdownStringControllerBuilder` and `ItemControllerBuilder`.
-The latter renders the item in the dropdown, and suggests only the items.
diff --git a/changelogs/3.2.1+1.20.2.md b/changelogs/3.2.1+1.20.2.md
deleted file mode 100644
index 81b8757..0000000
--- a/changelogs/3.2.1+1.20.2.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# YetAnotherConfigLib 3.2.1 for 1.20.2
-
-## Changes
-
-### Config API
-
-- Added `ConfigClassHandler#save` and `ConfigClassHandler#load` and deprecated `ConfigClassHandler#serializer`.
- - The serializer should now never be called directly.
- - New load method tells serializer to load into a new instance of the config class. Only applied if the load was fully successful.
- - Deprecated `ConfigSerializer#load` for `ConfigSerializer#loadSafely`.
-- Added new parameter on `SerialEntry`, called `required`.
- - If set to true, and the entry is not found in the config, the config will be re-saved with the default value.
- - If set to false, and the entry is not found in the config, the default value will be used, but the config will not be re-saved.
-- Added new parameter on `SerialEntry`, called `nullable`.
- - If set to false, and the entry is found in the config, but the value is null, the default value will be used, and the config will be re-saved.
-
-## Bug Fixes
-
-- Fixed error when using the same image twice.
-- Removed debug log from WEBP and GIF image loaders.
diff --git a/changelogs/3.3.0+1.20.4.md b/changelogs/3.3.0+1.20.4.md
deleted file mode 100644
index 81155ec..0000000
--- a/changelogs/3.3.0+1.20.4.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# YetAnotherConfigLib v3.3.0 for 1.20.4
-
-Updates to support 1.20.4.
diff --git a/changelogs/3.3.0-beta.1+1.20.2.md b/changelogs/3.3.0-beta.1+1.20.2.md
deleted file mode 100644
index 8eb7d48..0000000
--- a/changelogs/3.3.0-beta.1+1.20.2.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# YetAnotherConfigLib 3.3.0 (Beta 1) for Minecraft 1.20.2
-
-As you can see, a lot of the contributions to this release are from other people! That's incredible, and I'm very
-thankful for the community commitment to this project!
-
-This release is a beta release, which just means that I'm not 100% sure that everything works as intended.
-I encourage developers to at least try this build out, and if there are no problems, you're safe to release (I hope!).
-
-## New Features
-
-- Added new methods to add options to groups and categories, including conditional adding and option suppliers.
- This increases the chances you don't need to break the huge builder chain present of YACL, so you can just keep writing,
- even if you need to conditionally add an option, or run some code around the option. Look for `optionIf`!
-
-## Changes
-
-- Support for the `Home` and `End` keys. ([#108](https://github.com/isXander/YetAnotherConfigLib/pull/108))
-- Add functionality for `Ctrl + Left/Right` (you can now jump over words, without selecting it). ([#108](https://github.com/isXander/YetAnotherConfigLib/pull/108))
-- Make the 'finding the next word' functionality more consistent with other programs. ([#108](https://github.com/isXander/YetAnotherConfigLib/pull/108))
-- Caret now pauses flickering when moving it. ([#108](https://github.com/isXander/YetAnotherConfigLib/pull/108))
-- Position the caret and the highlight area being the same height as the text. ([#108](https://github.com/isXander/YetAnotherConfigLib/pull/108))
-- Render the caret above the selection, instead of below. ([#108](https://github.com/isXander/YetAnotherConfigLib/pull/108))
-
-## Fixes
-
-- Fix `NumberFieldController` increasing their values by a power of 10 when clicking on the screen. Issue @ [#103](https://github.com/isXander/YetAnotherConfigLib/issue/103) PR @ [#108](https://github.com/isXander/YetAnotherConfigLib/pull/108)
-- Fix values not updating when unfocusing a string controller. ([#108](https://github.com/isXander/YetAnotherConfigLib/pull/108))
-- Fix a bug where the caret is not rendered at the beginning of the text in string/number field controllers. ([#108](https://github.com/isXander/YetAnotherConfigLib/pull/108))
-- Fix dropdowns not being sorted correctly with capital letters. ([#114](https://github.com/isXander/YetAnotherConfigLib/pull/114))
-
-## Misc
-
-- Added debug JVM property `-Dyacl3.debug.imageFiltering=true/false` which applies experimental filtering to images
- to make them look better. I'd like your feedback on this!
-- You now no longer need to add additional repositories to your `build.gradle`.
- You can safely remove:
- - `https://maven.quiltmc.org/repository/release/`
- - `https://oss.sonatype.org/content/repositories/snapshots/`
-
-## Translation Updates
-
-- Add Dutch translation. ([#121](https://github.com/isXander/YetAnotherConfigLib/pull/121))
-- Add Italian translation. ([#107](https://github.com/isXander/YetAnotherConfigLib/pull/107))
diff --git a/changelogs/3.3.0-beta.1+1.20.3.md b/changelogs/3.3.0-beta.1+1.20.3.md
deleted file mode 100644
index d958c46..0000000
--- a/changelogs/3.3.0-beta.1+1.20.3.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# YetAnotherConfigLib v3.3.0-beta.1 for 1.20.3
-
-Updates to support 1.20.3.
-
-## Known Issues
-
-- Tooltips flicker when hovering over save button.
diff --git a/changelogs/3.3.1+1.20.4.md b/changelogs/3.3.1+1.20.4.md
deleted file mode 100644
index a90c1e2..0000000
--- a/changelogs/3.3.1+1.20.4.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# YetAnotherConfigLib v3.3.1 for 1.20.4
-
-- Fix version constraint issue on Fabric
diff --git a/changelogs/3.3.2+1.20.4.md b/changelogs/3.3.2+1.20.4.md
deleted file mode 100644
index dfec1b7..0000000
--- a/changelogs/3.3.2+1.20.4.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# YetAnotherConfigLib v3.3.2 for 1.20.4
-
-- Hook into the resource reloader to preload any webp/gif files that are used.
- This should make loading images when opening GUIs appear instantaneous.
-- Fix issue where buttons got stuck and appeared as though nothing had saved.
-- Fix an issue on NeoForged where the access widener was not transformed to an access transformer.
diff --git a/changelogs/3.3.3+1.20.4.md b/changelogs/3.3.3+1.20.4.md
deleted file mode 100644
index 9c863fc..0000000
--- a/changelogs/3.3.3+1.20.4.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# YetAnotherConfigLib v3.3.3 for 1.20.4
-
-- Fix keyboard/controller navigation not properly scrolling when overflowing
diff --git a/common/.gitignore b/common/.gitignore
deleted file mode 100644
index b63da45..0000000
--- a/common/.gitignore
+++ /dev/null
@@ -1,42 +0,0 @@
-.gradle
-build/
-!gradle/wrapper/gradle-wrapper.jar
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### IntelliJ IDEA ###
-.idea/modules.xml
-.idea/jarRepositories.xml
-.idea/compiler.xml
-.idea/libraries/
-*.iws
-*.iml
-*.ipr
-out/
-!**/src/main/**/out/
-!**/src/test/**/out/
-
-### Eclipse ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-bin/
-!**/src/main/**/bin/
-!**/src/test/**/bin/
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-
-### VS Code ###
-.vscode/
-
-### Mac OS ###
-.DS_Store \ No newline at end of file
diff --git a/common/build.gradle.kts b/common/build.gradle.kts
deleted file mode 100644
index c56f517..0000000
--- a/common/build.gradle.kts
+++ /dev/null
@@ -1,56 +0,0 @@
-plugins {
- alias(libs.plugins.architectury.loom)
-}
-
-base {
- archivesName.set("yet-another-config-lib")
-}
-
-architectury {
- val enabledLoaders = rootProject.properties["loaders"].toString().split(",").map { it.trim() }
- common(enabledLoaders)
-}
-
-loom {
- silentMojangMappingsLicense()
-
- accessWidenerPath.set(file("src/main/resources/yacl.accesswidener"))
-}
-
-dependencies {
- minecraft(libs.minecraft)
- mappings(loom.layered {
- officialMojangMappings()
- parchment(libs.parchment)
- })
- modImplementation(libs.fabric.loader)
-
- implementation(libs.bundles.twelvemonkeys.imageio)
- implementation(libs.bundles.quilt.parsers)
-}
-
-java {
- withSourcesJar()
-}
-
-tasks {
- remapJar {
- archiveClassifier.set(null as String?)
-
- from(rootProject.file("LICENSE"))
- }
-}
-
-publishing {
- publications {
- create<MavenPublication>("common") {
- groupId = "dev.isxander.yacl"
- artifactId = "yet-another-config-lib-common"
-
- from(components["java"])
- }
- }
-}
-tasks.findByPath("publishCommonPublicationToReleasesRepository")?.let {
- rootProject.tasks["releaseMod"].dependsOn(it)
-}
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/ValueFormatters.java b/common/src/main/java/dev/isxander/yacl3/gui/ValueFormatters.java
deleted file mode 100644
index 3771fc3..0000000
--- a/common/src/main/java/dev/isxander/yacl3/gui/ValueFormatters.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package dev.isxander.yacl3.gui;
-
-import dev.isxander.yacl3.api.controller.ValueFormatter;
-import net.minecraft.network.chat.Component;
-
-public final class ValueFormatters {
- public static final PercentFormatter PERCENT = new PercentFormatter();
-
- public static final class PercentFormatter implements ValueFormatter<Float> {
- @Override
- public Component format(Float value) {
- return Component.literal(String.format("%.0f%%", value * 100));
- }
- }
-}
diff --git a/common/src/main/java/dev/isxander/yacl3/platform/YACLConfig.java b/common/src/main/java/dev/isxander/yacl3/platform/YACLConfig.java
deleted file mode 100644
index 2bc27ef..0000000
--- a/common/src/main/java/dev/isxander/yacl3/platform/YACLConfig.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package dev.isxander.yacl3.platform;
-
-import dev.isxander.yacl3.config.v2.api.ConfigClassHandler;
-import dev.isxander.yacl3.config.v2.api.serializer.GsonConfigSerializerBuilder;
-
-public class YACLConfig {
- public static final ConfigClassHandler<YACLConfig> HANDLER = ConfigClassHandler.createBuilder(YACLConfig.class)
- .id(YACLPlatform.rl("config"))
- .serializer(config -> GsonConfigSerializerBuilder.create(config)
- .setPath(YACLPlatform.getConfigDir().resolve("yacl.json5"))
- .setJson5(true)
- .build())
- .build();
-
- // place future configuration here
-}
diff --git a/common/src/main/java/dev/isxander/yacl3/platform/YACLEntrypoint.java b/common/src/main/java/dev/isxander/yacl3/platform/YACLEntrypoint.java
deleted file mode 100644
index 32cfc81..0000000
--- a/common/src/main/java/dev/isxander/yacl3/platform/YACLEntrypoint.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package dev.isxander.yacl3.platform;
-
-import dev.isxander.yacl3.impl.utils.YACLConstants;
-
-public class YACLEntrypoint {
- public static void onInitializeClient() {
- YACLConfig.HANDLER.load();
-
- YACLConstants.LOGGER.info("YetAnotherConfigLib initialised.");
- }
-}
diff --git a/common/src/main/java/dev/isxander/yacl3/platform/YACLPlatform.java b/common/src/main/java/dev/isxander/yacl3/platform/YACLPlatform.java
deleted file mode 100644
index 51e47bf..0000000
--- a/common/src/main/java/dev/isxander/yacl3/platform/YACLPlatform.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package dev.isxander.yacl3.platform;
-
-import dev.architectury.injectables.annotations.ExpectPlatform;
-import net.minecraft.resources.ResourceLocation;
-
-import java.nio.file.Path;
-
-public final class YACLPlatform {
- @ExpectPlatform
- public static Env getEnvironment() {
- throw new AssertionError();
- }
-
- @ExpectPlatform
- public static Path getConfigDir() {
- throw new AssertionError();
- }
-
- @ExpectPlatform
- public static boolean isDevelopmentEnv() {
- throw new AssertionError();
- }
-
- public static ResourceLocation rl(String path) {
- return new ResourceLocation("yet_another_config_lib_v3", path);
- }
-}
diff --git a/common/src/main/resources/architectury.common.json b/common/src/main/resources/architectury.common.json
deleted file mode 100644
index 0cb21dd..0000000
--- a/common/src/main/resources/architectury.common.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "accessWidener": "yacl.accesswidener"
-} \ No newline at end of file
diff --git a/fabric/.gitignore b/fabric/.gitignore
deleted file mode 100644
index b63da45..0000000
--- a/fabric/.gitignore
+++ /dev/null
@@ -1,42 +0,0 @@
-.gradle
-build/
-!gradle/wrapper/gradle-wrapper.jar
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### IntelliJ IDEA ###
-.idea/modules.xml
-.idea/jarRepositories.xml
-.idea/compiler.xml
-.idea/libraries/
-*.iws
-*.iml
-*.ipr
-out/
-!**/src/main/**/out/
-!**/src/test/**/out/
-
-### Eclipse ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-bin/
-!**/src/main/**/bin/
-!**/src/test/**/bin/
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-
-### VS Code ###
-.vscode/
-
-### Mac OS ###
-.DS_Store \ No newline at end of file
diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts
deleted file mode 100644
index cb3dd29..0000000
--- a/fabric/build.gradle.kts
+++ /dev/null
@@ -1,182 +0,0 @@
-import org.gradle.jvm.tasks.Jar
-
-plugins {
- alias(libs.plugins.architectury.loom)
- alias(libs.plugins.shadow)
- alias(libs.plugins.minotaur)
- alias(libs.plugins.cursegradle)
-}
-
-architectury {
- platformSetupLoomIde()
- fabric()
-}
-
-loom {
- silentMojangMappingsLicense()
-
- accessWidenerPath.set(project(":common").loom.accessWidenerPath)
-}
-
-val common by configurations.registering
-val shadowCommon by configurations.registering
-configurations.compileClasspath.get().extendsFrom(common.get())
-configurations["developmentFabric"].extendsFrom(common.get())
-
-val minecraftVersion = libs.versions.minecraft.get()
-
-dependencies {
- minecraft(libs.minecraft)
- mappings(loom.layered {
- officialMojangMappings()
- parchment(libs.parchment)
- })
- modImplementation(libs.fabric.loader)
-
- listOf(
- "fabric-resource-loader-v0",
- ).forEach { modApi(fabricApi.module(it, libs.versions.fabric.api.get())) }
-
- libs.bundles.twelvemonkeys.imageio.let {
- implementation(it)
- include(it)
- }
- libs.bundles.quilt.parsers.let {
- implementation(it)
- include(it)
- }
-
- "common"(project(path = ":common", configuration = "namedElements")) { isTransitive = false }
- "shadowCommon"(project(path = ":common", configuration = "transformProductionFabric")) { isTransitive = false }
-}
-
-java {
- withSourcesJar()
-}
-
-tasks {
- processResources {
- val modId: String by project
- val modName: String by project
- val modDescription: String by project
- val githubProject: String by project
-
- inputs.property("id", modId)
- inputs.property("group", project.group)
- inputs.property("name", modName)
- inputs.property("description", modDescription)
- inputs.property("version", project.version)
- inputs.property("github", githubProject)
-
- filesMatching("fabric.mod.json") {
- expand(
- "id" to modId,
- "group" to project.group,
- "name" to modName,
- "description" to modDescription,
- "version" to project.version,
- "github" to githubProject,
- )
- }
- }
-
- shadowJar {
- exclude("architectury.common.json")
-
- configurations = listOf(shadowCommon.get())
- archiveClassifier.set("dev-shadow")
- }
-
- remapJar {
- injectAccessWidener.set(true)
- inputFile.set(shadowJar.get().archiveFile)
- dependsOn(shadowJar)
- archiveClassifier.set(null as String?)
-
- from(rootProject.file("LICENSE"))
- }
-
- named<Jar>("sourcesJar") {
- archiveClassifier.set("dev-sources")
- val commonSources = project(":common").tasks.named<Jar>("sourcesJar")
- dependsOn(commonSources)
- from(commonSources.get().archiveFile.map { zipTree(it) })
- }
-
- remapSourcesJar {
- archiveClassifier.set("sources")
- }
-
- jar {
- archiveClassifier.set("dev")
- }
-}
-
-components["java"].run {
- if (this is AdhocComponentWithVariants) {
- withVariantsFromConfiguration(configurations["shadowRuntimeElements"]) {
- skip()
- }
- }
-}
-val changelogText: String by ext
-val isBeta: Boolean by ext
-
-val modrinthId: String by project
-if (modrinthId.isNotEmpty()) {
- modrinth {
- token.set(findProperty("modrinth.token")?.toString())
- projectId.set(modrinthId)
- versionName.set("${project.version} (Fabric)")
- versionNumber.set("${project.version}-fabric")
- versionType.set(if (isBeta) "beta" else "release")
- uploadFile.set(tasks["remapJar"])
- gameVersions.set(listOf("1.20.3", "1.20.4"))
- loaders.set(listOf("fabric", "quilt"))
- changelog.set(changelogText)
- syncBodyFrom.set(rootProject.file("README.md").readText())
- }
-}
-rootProject.tasks["releaseMod"].dependsOn(tasks["modrinth"])
-
-val curseforgeId: String by project
-if (hasProperty("curseforge.token") && curseforgeId.isNotEmpty()) {
- curseforge {
- apiKey = findProperty("curseforge.token")
- project(closureOf<me.hypherionmc.cursegradle.CurseProject> {
- mainArtifact(tasks["remapJar"], closureOf<me.hypherionmc.cursegradle.CurseArtifact> {
- displayName = "[Fabric] ${project.version}"
- })
-
- id = curseforgeId
- releaseType = if (isBeta) "beta" else "release"
- addGameVersion("1.20.3")
- addGameVersion("1.20.4")
- addGameVersion("Fabric")
- addGameVersion("Java 17")
-
- changelog = changelogText
- changelogType = "markdown"
- })
-
- options(closureOf<me.hypherionmc.cursegradle.Options> {
- forgeGradleIntegration = false
- fabricIntegration = false
- })
- }
-}
-rootProject.tasks["releaseMod"].dependsOn(tasks["curseforge"])
-
-publishing {
- publications {
- create<MavenPublication>("fabric") {
- groupId = "dev.isxander.yacl"
- artifactId = "yet-another-config-lib-fabric"
-
- from(components["java"])
- }
- }
-}
-tasks.findByPath("publishFabricPublicationToReleasesRepository")?.let {
- rootProject.tasks["releaseMod"].dependsOn(it)
-}
diff --git a/fabric/src/main/java/dev/isxander/yacl3/platform/fabric/YACLFabricEntrypoint.java b/fabric/src/main/java/dev/isxander/yacl3/platform/fabric/YACLFabricEntrypoint.java
deleted file mode 100644
index 411ba27..0000000
--- a/fabric/src/main/java/dev/isxander/yacl3/platform/fabric/YACLFabricEntrypoint.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package dev.isxander.yacl3.platform.fabric;
-
-import dev.isxander.yacl3.platform.YACLEntrypoint;
-import dev.isxander.yacl3.platform.fabric.image.YACLImageReloadListenerFabric;
-import net.fabricmc.api.ClientModInitializer;
-import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
-import net.minecraft.server.packs.PackType;
-
-public class YACLFabricEntrypoint implements ClientModInitializer {
- @Override
- public void onInitializeClient() {
- ResourceManagerHelper.get(PackType.CLIENT_RESOURCES).registerReloadListener(new YACLImageReloadListenerFabric());
- YACLEntrypoint.onInitializeClient();
- }
-}
diff --git a/fabric/src/main/java/dev/isxander/yacl3/platform/fabric/YACLPlatformImpl.java b/fabric/src/main/java/dev/isxander/yacl3/platform/fabric/YACLPlatformImpl.java
deleted file mode 100644
index 7842f97..0000000
--- a/fabric/src/main/java/dev/isxander/yacl3/platform/fabric/YACLPlatformImpl.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package dev.isxander.yacl3.platform.fabric;
-
-import dev.isxander.yacl3.platform.Env;
-import net.fabricmc.loader.api.FabricLoader;
-
-import java.nio.file.Path;
-
-public class YACLPlatformImpl {
- public static Env getEnvironment() {
- return switch (FabricLoader.getInstance().getEnvironmentType()) {
- case CLIENT -> Env.CLIENT;
- case SERVER -> Env.SERVER;
- };
- }
-
- public static boolean isDevelopmentEnv() {
- return FabricLoader.getInstance().isDevelopmentEnvironment();
- }
-
- public static Path getConfigDir() {
- return FabricLoader.getInstance().getConfigDir();
- }
-}
diff --git a/fabric/src/main/java/dev/isxander/yacl3/platform/fabric/image/YACLImageReloadListenerFabric.java b/fabric/src/main/java/dev/isxander/yacl3/platform/fabric/image/YACLImageReloadListenerFabric.java
deleted file mode 100644
index 9eed7fe..0000000
--- a/fabric/src/main/java/dev/isxander/yacl3/platform/fabric/image/YACLImageReloadListenerFabric.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package dev.isxander.yacl3.platform.fabric.image;
-
-import dev.isxander.yacl3.gui.image.YACLImageReloadListener;
-import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener;
-import net.minecraft.resources.ResourceLocation;
-
-public class YACLImageReloadListenerFabric extends YACLImageReloadListener implements IdentifiableResourceReloadListener {
- @Override
- public ResourceLocation getFabricId() {
- return new ResourceLocation("yet_another_config_lib_v3", "image_reload_listener");
- }
-}
diff --git a/gradle.properties b/gradle.properties
index 30a4ee4..c9ee619 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,11 +1,16 @@
org.gradle.jvmargs=-Xmx4G
+modrinthId=yacl
+curseforgeId=667299
+githubProject=isXander/YetAnotherConfigLib
+
modId=yet_another_config_lib_v3
modName=YetAnotherConfigLib
modDescription=YetAnotherConfigLib (yacl) is just that. A builder-based configuration library for Minecraft.
-modrinthId=yacl
-curseforgeId=667299
-githubProject=isXander/YetAnotherConfigLib
+deps.fabricLoader=0.15.9
+deps.imageio=3.10.0
+deps.quiltParsers=0.2.1
+deps.mixinExtras=0.3.5
-loaders=fabric
+fabric.loom.multiProjectOptimisation=true \ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
deleted file mode 100644
index 3ece5ba..0000000
--- a/gradle/libs.versions.toml
+++ /dev/null
@@ -1,72 +0,0 @@
-[versions]
-# Plugins
-architectury_loom = "1.5.+"
-architectury_plugin = "3.4.+"
-shadow = "7.1.+"
-minotaur = "2.7.+"
-cursegradle = "2.+"
-github_release = "2.4.+"
-machete = "2.+"
-grgit = "5.0.+"
-
-minecraft = "24w09a"
-parchment = "2023.12.10"
-fabric_loader = "0.15.7"
-
-# Common Dependencies
-mixin_extras = "0.3.2"
-twelvemonkeys_imageio = "3.10.0"
-quilt_parsers = "0.2.1"
-
-# Fabric-like Dependencies
-fabric_api = "0.96.5+1.20.5"
-
-# Forge Dependencies
-neoforge = "20.4.0-beta"
-
-[libraries]
-minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" }
-fabric_loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric_loader" }
-parchment = { module = "org.parchmentmc.data:parchment-1.20.2", version.ref = "parchment" }
-
-# Common Dependencies
-mixin_extras_common = { module = "com.github.llamalad7.mixinextras:mixinextras-common", version.ref = "mixin_extras" }
-twelvemonkeys_imageio_core = { module = "com.twelvemonkeys.imageio:imageio-core", version.ref = "twelvemonkeys_imageio" }
-twelvemonkeys_imageio_webp = { module = "com.twelvemonkeys.imageio:imageio-webp", version.ref = "twelvemonkeys_imageio" }
-twelvemonkeys_imageio_metadata = { module = "com.twelvemonkeys.imageio:imageio-metadata", version.ref = "twelvemonkeys_imageio" }
-twelvemonkeys_common_lang = { module = "com.twelvemonkeys.common:common-lang", version.ref = "twelvemonkeys_imageio" }
-twelvemonkeys_common_io = { module = "com.twelvemonkeys.common:common-io", version.ref = "twelvemonkeys_imageio" }
-twelvemonkeys_common_image = { module = "com.twelvemonkeys.common:common-image", version.ref = "twelvemonkeys_imageio" }
-quilt_parsers_json = { module = "org.quiltmc.parsers:json", version.ref = "quilt_parsers" }
-quilt_parsers_gson = { module = "org.quiltmc.parsers:gson", version.ref = "quilt_parsers" }
-
-# Fabric-like Dependencies
-fabric_api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabric_api" }
-
-# Forge Dependencies
-neoforge = { module = "net.neoforged:neoforge", version.ref = "neoforge" }
-
-[bundles]
-twelvemonkeys_imageio = [
- "twelvemonkeys_imageio_core",
- "twelvemonkeys_imageio_webp",
- "twelvemonkeys_imageio_metadata",
- "twelvemonkeys_common_lang",
- "twelvemonkeys_common_io",
- "twelvemonkeys_common_image"
-]
-quilt_parsers = [
- "quilt_parsers_json",
- "quilt_parsers_gson"
-]
-
-[plugins]
-architectury_loom = { id = "dev.architectury.loom", version.ref = "architectury_loom" }
-architectury_plugin = { id = "architectury-plugin", version.ref = "architectury_plugin" }
-shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" }
-
-minotaur = { id = "com.modrinth.minotaur", version.ref = "minotaur" }
-cursegradle = { id = "me.hypherionmc.cursegradle", version.ref = "cursegradle" }
-github_release = { id = "com.github.breadmoirai.github-release", version.ref = "github_release" }
-machete = { id = "io.github.p03w.machete", version.ref = "machete" }
-grgit = { id = "org.ajoberstar.grgit", version.ref = "grgit" }
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index f48a8c4..6f86915 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sun Apr 23 19:05:18 BST 2023
+#Fri Apr 05 20:43:25 CEST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/neoforge/.gitignore b/neoforge/.gitignore
deleted file mode 100644
index b63da45..0000000
--- a/neoforge/.gitignore
+++ /dev/null
@@ -1,42 +0,0 @@
-.gradle
-build/
-!gradle/wrapper/gradle-wrapper.jar
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### IntelliJ IDEA ###
-.idea/modules.xml
-.idea/jarRepositories.xml
-.idea/compiler.xml
-.idea/libraries/
-*.iws
-*.iml
-*.ipr
-out/
-!**/src/main/**/out/
-!**/src/test/**/out/
-
-### Eclipse ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-bin/
-!**/src/main/**/bin/
-!**/src/test/**/bin/
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-
-### VS Code ###
-.vscode/
-
-### Mac OS ###
-.DS_Store \ No newline at end of file
diff --git a/neoforge/build.gradle.kts b/neoforge/build.gradle.kts
deleted file mode 100644
index f8086b2..0000000
--- a/neoforge/build.gradle.kts
+++ /dev/null
@@ -1,190 +0,0 @@
-import org.gradle.api.component.AdhocComponentWithVariants
-import org.gradle.jvm.tasks.Jar
-import org.gradle.kotlin.dsl.get
-import org.gradle.kotlin.dsl.libs
-
-plugins {
- alias(libs.plugins.architectury.loom)
- alias(libs.plugins.shadow)
- alias(libs.plugins.minotaur)
- alias(libs.plugins.cursegradle)
-}
-
-architectury {
- platformSetupLoomIde()
- neoForge()
-}
-
-loom {
- silentMojangMappingsLicense()
-
- accessWidenerPath.set(project(":common").loom.accessWidenerPath)
-
- neoForge {
-
- }
-}
-
-val common by configurations.registering
-val shadowCommon by configurations.registering
-configurations.compileClasspath.get().extendsFrom(common.get())
-configurations["developmentNeoForge"].extendsFrom(common.get())
-
-val minecraftVersion: String = libs.versions.minecraft.get()
-
-dependencies {
- minecraft(libs.minecraft)
- mappings(loom.layered {
- officialMojangMappings()
- parchment(libs.parchment)
- })
- neoForge(libs.neoforge)
-
- libs.bundles.twelvemonkeys.imageio.let {
- implementation(it)
- include(it)
- forgeRuntimeLibrary(it)
- }
- libs.bundles.quilt.parsers.let {
- implementation(it)
- include(it)
- forgeRuntimeLibrary(it)
- }
-
- "common"(project(path = ":common", configuration = "namedElements")) { isTransitive = false }
- "shadowCommon"(project(path = ":common", configuration = "transformProductionNeoForge")) { isTransitive = false }
-}
-
-java {
- withSourcesJar()
-}
-
-tasks {
- processResources {
- val modId: String by rootProject
- val modName: String by rootProject
- val modDescription: String by rootProject
- val githubProject: String by rootProject
-
- inputs.property("id", modId)
- inputs.property("group", project.group)
- inputs.property("name", modName)
- inputs.property("description", modDescription)
- inputs.property("version", project.version)
- inputs.property("github", githubProject)
-
- filesMatching(listOf("META-INF/mods.toml", "pack.mcmeta")) {
- expand(
- "id" to modId,
- "group" to project.group,
- "name" to modName,
- "description" to modDescription,
- "version" to project.version,
- "github" to githubProject,
- )
- }
- }
-
- shadowJar {
- exclude("fabric.mod.json")
- exclude("architectury.common.json")
-
- configurations = listOf(shadowCommon.get())
- archiveClassifier.set("dev-shadow")
- }
-
- remapJar {
- injectAccessWidener.set(true)
- inputFile.set(shadowJar.get().archiveFile)
- dependsOn(shadowJar)
- archiveClassifier.set(null as String?)
- atAccessWideners.set(listOf("yacl.accesswidener"))
-
- from(rootProject.file("LICENSE"))
- }
-
- named<Jar>("sourcesJar") {
- archiveClassifier.set("dev-sources")
- val commonSources = project(":common").tasks.named<Jar>("sourcesJar")
- dependsOn(commonSources)
- from(commonSources.get().archiveFile.map { zipTree(it) })
- }
-
- remapSourcesJar {
- archiveClassifier.set("sources")
- }
-
- jar {
- archiveClassifier.set("dev")
- }
-}
-
-components["java"].run {
- if (this is AdhocComponentWithVariants) {
- withVariantsFromConfiguration(configurations["shadowRuntimeElements"]) {
- skip()
- }
- }
-}
-
-val changelogText: String by ext
-val isBeta: Boolean by ext
-
-val modrinthId: String by project
-if (modrinthId.isNotEmpty()) {
- modrinth {
- token.set(findProperty("modrinth.token")?.toString())
- projectId.set(modrinthId)
- versionName.set("${project.version} (NeoForge)")
- versionNumber.set("${project.version}-neoforge")
- versionType.set(if (isBeta) "beta" else "release")
- uploadFile.set(tasks["remapJar"])
- gameVersions.set(listOf("1.20.4", "1.20.3"))
- loaders.set(listOf("neoforge"))
- changelog.set(changelogText)
- syncBodyFrom.set(rootProject.file("README.md").readText())
- }
-}
-rootProject.tasks["releaseMod"].dependsOn(tasks["modrinth"])
-
-val curseforgeId: String by project
-if (hasProperty("curseforge.token") && curseforgeId.isNotEmpty()) {
- curseforge {
- apiKey = findProperty("curseforge.token")
- project(closureOf<me.hypherionmc.cursegradle.CurseProject> {
- mainArtifact(tasks["remapJar"], closureOf<me.hypherionmc.cursegradle.CurseArtifact> {
- displayName = "[NeoForge] ${project.version}"
- })
-
- id = curseforgeId
- releaseType = if (isBeta) "beta" else "release"
- addGameVersion("1.20.4")
- addGameVersion("1.20.3")
- addGameVersion("NeoForge")
- addGameVersion("Java 17")
-
- changelog = changelogText
- changelogType = "markdown"
- })
-
- options(closureOf<me.hypherionmc.cursegradle.Options> {
- forgeGradleIntegration = false
- fabricIntegration = false
- })
- }
-}
-rootProject.tasks["releaseMod"].dependsOn(tasks["curseforge"])
-
-publishing {
- publications {
- create<MavenPublication>("neoforge") {
- groupId = "dev.isxander.yacl"
- artifactId = "yet-another-config-lib-neoforge"
-
- from(components["java"])
- }
- }
-}
-tasks.findByPath("publishNeoforgePublicationToReleasesRepository")?.let {
- rootProject.tasks["releaseMod"].dependsOn(it)
-}
diff --git a/neoforge/gradle.properties b/neoforge/gradle.properties
deleted file mode 100644
index 7da18ea..0000000
--- a/neoforge/gradle.properties
+++ /dev/null
@@ -1 +0,0 @@
-loom.platform=neoforge
diff --git a/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLForgeEntrypoint.java b/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLForgeEntrypoint.java
deleted file mode 100644
index 84d62f5..0000000
--- a/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLForgeEntrypoint.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package dev.isxander.yacl3.platform.neoforge;
-
-import dev.isxander.yacl3.gui.image.YACLImageReloadListener;
-import dev.isxander.yacl3.platform.YACLEntrypoint;
-import net.neoforged.bus.api.IEventBus;
-import net.neoforged.fml.common.Mod;
-import net.neoforged.fml.javafmlmod.FMLJavaModLoadingContext;
-import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent;
-import net.neoforged.neoforge.common.NeoForge;
-
-@Mod("yet_another_config_lib_v3")
-public class YACLForgeEntrypoint {
- public YACLForgeEntrypoint(IEventBus modEventBus) {
- modEventBus.addListener(RegisterClientReloadListenersEvent.class, event -> {
- event.registerReloadListener(new YACLImageReloadListener());
- });
- YACLEntrypoint.onInitializeClient();
- }
-
-}
diff --git a/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLPlatformImpl.java b/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLPlatformImpl.java
deleted file mode 100644
index 42a51d6..0000000
--- a/neoforge/src/main/java/dev/isxander/yacl3/platform/neoforge/YACLPlatformImpl.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package dev.isxander.yacl3.platform.neoforge;
-
-import dev.isxander.yacl3.platform.Env;
-import net.neoforged.fml.loading.FMLEnvironment;
-import net.neoforged.fml.loading.FMLPaths;
-
-import java.nio.file.Path;
-
-public class YACLPlatformImpl {
- public static Env getEnvironment() {
- return switch (FMLEnvironment.dist) {
- case CLIENT -> Env.CLIENT;
- case DEDICATED_SERVER -> Env.SERVER;
- };
- }
-
- public static boolean isDevelopmentEnv() {
- return !FMLEnvironment.production;
- }
-
- public static Path getConfigDir() {
- return FMLPaths.CONFIGDIR.get();
- }
-}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index ed41045..fed4fd6 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,33 +1,38 @@
+import dev.kikugie.stonecutter.gradle.StonecutterSettings
+
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
- maven("https://maven.fabricmc.net")
- maven("https://maven.architectury.dev/")
- maven("https://maven.neoforged.net/releases")
- maven("https://maven.quiltmc.org/repository/release")
+ maven("https://maven.fabricmc.net/")
+ maven("https://maven.architectury.dev")
+ maven("https://maven.neoforged.net/releases/")
+ maven("https://maven.minecraftforge.net/")
+ maven("https://maven.kikugie.dev/releases")
}
}
-dependencyResolutionManagement {
- versionCatalogs {
- create("libs")
- }
+plugins {
+ id("dev.kikugie.stonecutter") version "0.3.2"
}
-rootProject.name = "YetAnotherConfigLib"
-
-val enabledLoaders = settings.extra.properties["loaders"].toString().split(",").map { it.trim() }
-
-include("common")
-include("test-common")
+extensions.configure<StonecutterSettings> {
+ kotlinController(true)
+ centralScript("build.gradle.kts")
+ shared {
+ fun mc(mcVersion: String, name: String = mcVersion, common: Boolean = true, loaders: Iterable<String>) {
+ for (loader in loaders) {
+ vers("$name-$loader", mcVersion)
+ }
+ if (common) {
+ vers("$name-common", mcVersion)
+ }
+ }
-if ("fabric" in enabledLoaders) {
- include("fabric")
- include("test-fabric")
-}
-
-if ("neoforge" in enabledLoaders) {
- include("neoforge")
- include("test-neoforge")
+ mc("1.20.4", loaders = listOf("fabric", "neoforge"))
+ mc("1.20.1", loaders = listOf("fabric", "forge"))
+ mc("1.20.5-beta.1", name = "1.20.5-pre1", loaders = listOf("fabric"))
+ }
+ create(rootProject)
}
+rootProject.name = "YetAnotherConfigLib"
diff --git a/common/src/main/java/dev/isxander/yacl3/api/Binding.java b/src/main/java/dev/isxander/yacl3/api/Binding.java
index f41b78b..f41b78b 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/Binding.java
+++ b/src/main/java/dev/isxander/yacl3/api/Binding.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/ButtonOption.java b/src/main/java/dev/isxander/yacl3/api/ButtonOption.java
index 4f53dd4..4f53dd4 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/ButtonOption.java
+++ b/src/main/java/dev/isxander/yacl3/api/ButtonOption.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/ConfigCategory.java b/src/main/java/dev/isxander/yacl3/api/ConfigCategory.java
index b3d68fc..b3d68fc 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/ConfigCategory.java
+++ b/src/main/java/dev/isxander/yacl3/api/ConfigCategory.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/Controller.java b/src/main/java/dev/isxander/yacl3/api/Controller.java
index 25e4465..25e4465 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/Controller.java
+++ b/src/main/java/dev/isxander/yacl3/api/Controller.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/LabelOption.java b/src/main/java/dev/isxander/yacl3/api/LabelOption.java
index a5f015e..a5f015e 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/LabelOption.java
+++ b/src/main/java/dev/isxander/yacl3/api/LabelOption.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/ListOption.java b/src/main/java/dev/isxander/yacl3/api/ListOption.java
index 1f4adfa..1f4adfa 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/ListOption.java
+++ b/src/main/java/dev/isxander/yacl3/api/ListOption.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/ListOptionEntry.java b/src/main/java/dev/isxander/yacl3/api/ListOptionEntry.java
index 23ec657..23ec657 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/ListOptionEntry.java
+++ b/src/main/java/dev/isxander/yacl3/api/ListOptionEntry.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/NameableEnum.java b/src/main/java/dev/isxander/yacl3/api/NameableEnum.java
index 425623f..425623f 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/NameableEnum.java
+++ b/src/main/java/dev/isxander/yacl3/api/NameableEnum.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/Option.java b/src/main/java/dev/isxander/yacl3/api/Option.java
index 38bd8ca..38bd8ca 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/Option.java
+++ b/src/main/java/dev/isxander/yacl3/api/Option.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/OptionAddable.java b/src/main/java/dev/isxander/yacl3/api/OptionAddable.java
index 606e8ca..606e8ca 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/OptionAddable.java
+++ b/src/main/java/dev/isxander/yacl3/api/OptionAddable.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/OptionDescription.java b/src/main/java/dev/isxander/yacl3/api/OptionDescription.java
index 7336379..7336379 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/OptionDescription.java
+++ b/src/main/java/dev/isxander/yacl3/api/OptionDescription.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/OptionFlag.java b/src/main/java/dev/isxander/yacl3/api/OptionFlag.java
index 6f35495..6f35495 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/OptionFlag.java
+++ b/src/main/java/dev/isxander/yacl3/api/OptionFlag.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/OptionGroup.java b/src/main/java/dev/isxander/yacl3/api/OptionGroup.java
index 8f183b9..8f183b9 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/OptionGroup.java
+++ b/src/main/java/dev/isxander/yacl3/api/OptionGroup.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/PlaceholderCategory.java b/src/main/java/dev/isxander/yacl3/api/PlaceholderCategory.java
index 6eb82c5..6eb82c5 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/PlaceholderCategory.java
+++ b/src/main/java/dev/isxander/yacl3/api/PlaceholderCategory.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/YetAnotherConfigLib.java b/src/main/java/dev/isxander/yacl3/api/YetAnotherConfigLib.java
index 68e9986..68e9986 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/YetAnotherConfigLib.java
+++ b/src/main/java/dev/isxander/yacl3/api/YetAnotherConfigLib.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/BooleanControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/BooleanControllerBuilder.java
index 88f9a77..88f9a77 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/BooleanControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/BooleanControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/ColorControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/ColorControllerBuilder.java
index 8e442ff..8e442ff 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/ColorControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/ColorControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/ControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/ControllerBuilder.java
index bbd49a7..bbd49a7 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/ControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/ControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/CyclingListControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/CyclingListControllerBuilder.java
index 8c9ea91..8c9ea91 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/CyclingListControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/CyclingListControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/DoubleFieldControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/DoubleFieldControllerBuilder.java
index db4af94..db4af94 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/DoubleFieldControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/DoubleFieldControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/DoubleSliderControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/DoubleSliderControllerBuilder.java
index 7e4b6f9..7e4b6f9 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/DoubleSliderControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/DoubleSliderControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/DropdownStringControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/DropdownStringControllerBuilder.java
index 3f5fb33..3f5fb33 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/DropdownStringControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/DropdownStringControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/EnumControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/EnumControllerBuilder.java
index decb8f9..decb8f9 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/EnumControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/EnumControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/EnumDropdownControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/EnumDropdownControllerBuilder.java
index 0814cc6..0814cc6 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/EnumDropdownControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/EnumDropdownControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/FloatFieldControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/FloatFieldControllerBuilder.java
index de81837..de81837 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/FloatFieldControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/FloatFieldControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/FloatSliderControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/FloatSliderControllerBuilder.java
index 2a04dde..2a04dde 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/FloatSliderControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/FloatSliderControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/IntegerFieldControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/IntegerFieldControllerBuilder.java
index 1e31fac..1e31fac 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/IntegerFieldControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/IntegerFieldControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/IntegerSliderControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/IntegerSliderControllerBuilder.java
index 11e089a..11e089a 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/IntegerSliderControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/IntegerSliderControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/ItemControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/ItemControllerBuilder.java
index 5a1f5fa..5a1f5fa 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/ItemControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/ItemControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/LongFieldControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/LongFieldControllerBuilder.java
index c53b464..c53b464 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/LongFieldControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/LongFieldControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/LongSliderControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/LongSliderControllerBuilder.java
index fc09423..fc09423 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/LongSliderControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/LongSliderControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/NumberFieldControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/NumberFieldControllerBuilder.java
index b5cfa1f..b5cfa1f 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/NumberFieldControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/NumberFieldControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/SliderControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/SliderControllerBuilder.java
index 2fb3fec..2fb3fec 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/SliderControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/SliderControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/StringControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/StringControllerBuilder.java
index 5e2f8c6..5e2f8c6 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/StringControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/StringControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/TickBoxControllerBuilder.java b/src/main/java/dev/isxander/yacl3/api/controller/TickBoxControllerBuilder.java
index 71a2762..71a2762 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/TickBoxControllerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/TickBoxControllerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/ValueFormattableController.java b/src/main/java/dev/isxander/yacl3/api/controller/ValueFormattableController.java
index b886318..b886318 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/ValueFormattableController.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/ValueFormattableController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/controller/ValueFormatter.java b/src/main/java/dev/isxander/yacl3/api/controller/ValueFormatter.java
index aecaf65..aecaf65 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/controller/ValueFormatter.java
+++ b/src/main/java/dev/isxander/yacl3/api/controller/ValueFormatter.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/utils/Dimension.java b/src/main/java/dev/isxander/yacl3/api/utils/Dimension.java
index ec09238..ec09238 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/utils/Dimension.java
+++ b/src/main/java/dev/isxander/yacl3/api/utils/Dimension.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/utils/MutableDimension.java b/src/main/java/dev/isxander/yacl3/api/utils/MutableDimension.java
index f551232..f551232 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/utils/MutableDimension.java
+++ b/src/main/java/dev/isxander/yacl3/api/utils/MutableDimension.java
diff --git a/common/src/main/java/dev/isxander/yacl3/api/utils/OptionUtils.java b/src/main/java/dev/isxander/yacl3/api/utils/OptionUtils.java
index cf33f0f..cf33f0f 100644
--- a/common/src/main/java/dev/isxander/yacl3/api/utils/OptionUtils.java
+++ b/src/main/java/dev/isxander/yacl3/api/utils/OptionUtils.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/ConfigEntry.java b/src/main/java/dev/isxander/yacl3/config/ConfigEntry.java
index 066cf42..066cf42 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/ConfigEntry.java
+++ b/src/main/java/dev/isxander/yacl3/config/ConfigEntry.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/ConfigInstance.java b/src/main/java/dev/isxander/yacl3/config/ConfigInstance.java
index 31d4ca2..31d4ca2 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/ConfigInstance.java
+++ b/src/main/java/dev/isxander/yacl3/config/ConfigInstance.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java b/src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java
index 91749ba..c47afe2 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java
+++ b/src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java
@@ -68,8 +68,14 @@ public class GsonConfigInstance<T> extends ConfigInstance<T> {
this.path = path;
this.gson = builder
.setExclusionStrategies(new ConfigExclusionStrategy())
+ /*? if >1.20.4 { *//*
.registerTypeHierarchyAdapter(Component.class, new Component.SerializerAdapter(RegistryAccess.EMPTY))
- .registerTypeHierarchyAdapter(Style.class, new GsonConfigSerializer.StyleTypeAdapter())
+ *//*? } elif =1.20.4 {*/
+ .registerTypeHierarchyAdapter(Component.class, new Component.SerializerAdapter())
+ /*? } else {*//*
+ .registerTypeHierarchyAdapter(Component.class, new Component.Serializer())
+ *//*?}*/
+ .registerTypeHierarchyAdapter(Style.class, /*? if >=1.20.4 {*/new GsonConfigSerializer.StyleTypeAdapter()/*?} else {*//*new Style.Serializer()*//*?}*/)
.registerTypeHierarchyAdapter(Color.class, new ColorTypeAdapter())
.registerTypeHierarchyAdapter(Item.class, new ItemTypeAdapter())
.serializeNulls()
@@ -163,8 +169,14 @@ public class GsonConfigInstance<T> extends ConfigInstance<T> {
private UnaryOperator<GsonBuilder> gsonBuilder = builder -> builder
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.serializeNulls()
+ /*? if >1.20.4 { *//*
.registerTypeHierarchyAdapter(Component.class, new Component.SerializerAdapter(RegistryAccess.EMPTY))
- .registerTypeHierarchyAdapter(Style.class, new GsonConfigSerializer.StyleTypeAdapter())
+ *//*? } elif =1.20.4 {*/
+ .registerTypeHierarchyAdapter(Component.class, new Component.SerializerAdapter())
+ /*? } else {*//*
+ .registerTypeHierarchyAdapter(Component.class, new Component.Serializer())
+ *//*?}*/
+ .registerTypeHierarchyAdapter(Style.class, /*? if >=1.20.4 {*/new GsonConfigSerializer.StyleTypeAdapter()/*?} else {*//*new Style.Serializer()*//*?}*/)
.registerTypeHierarchyAdapter(Color.class, new ColorTypeAdapter())
.registerTypeHierarchyAdapter(Item.class, new ItemTypeAdapter());
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigClassHandler.java b/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigClassHandler.java
index d94280f..d94280f 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigClassHandler.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigClassHandler.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigField.java
index 181a4d4..181a4d4 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigField.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigField.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigSerializer.java b/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigSerializer.java
index 4ac988c..4ac988c 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigSerializer.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/ConfigSerializer.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/FieldAccess.java b/src/main/java/dev/isxander/yacl3/config/v2/api/FieldAccess.java
index ea30cd8..ea30cd8 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/FieldAccess.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/FieldAccess.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/ReadOnlyFieldAccess.java b/src/main/java/dev/isxander/yacl3/config/v2/api/ReadOnlyFieldAccess.java
index 566d60d..566d60d 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/ReadOnlyFieldAccess.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/ReadOnlyFieldAccess.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/SerialEntry.java b/src/main/java/dev/isxander/yacl3/config/v2/api/SerialEntry.java
index 94bf785..94bf785 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/SerialEntry.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/SerialEntry.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/SerialField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/SerialField.java
index cf6abfc..cf6abfc 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/SerialField.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/SerialField.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGen.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGen.java
index 4187caf..4187caf 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGen.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGen.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGenField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGenField.java
index 7f751fb..7f751fb 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGenField.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/AutoGenField.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Boolean.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Boolean.java
index 5598389..5598389 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Boolean.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Boolean.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ColorField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ColorField.java
index 74937b4..74937b4 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ColorField.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ColorField.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomDescription.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomDescription.java
index 08624b4..08624b4 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomDescription.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomDescription.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomFormat.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomFormat.java
index 15f6336..15f6336 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomFormat.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomFormat.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomImage.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomImage.java
index d193f42..d193f42 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomImage.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomImage.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomName.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomName.java
index aa235bb..aa235bb 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomName.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/CustomName.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleField.java
index 963cefd..963cefd 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleField.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleField.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleSlider.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleSlider.java
index 268f6a4..268f6a4 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleSlider.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/DoubleSlider.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Dropdown.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Dropdown.java
index 44239d5..44239d5 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Dropdown.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Dropdown.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/EnumCycler.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/EnumCycler.java
index 98d94f9..98d94f9 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/EnumCycler.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/EnumCycler.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatField.java
index 1e7e71e..1e7e71e 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatField.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatField.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatSlider.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatSlider.java
index 19ae9db..19ae9db 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatSlider.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FloatSlider.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FormatTranslation.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FormatTranslation.java
index 7cc4ded..7cc4ded 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FormatTranslation.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/FormatTranslation.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntField.java
index 9945d01..9945d01 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntField.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntField.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntSlider.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntSlider.java
index 7fd2282..7fd2282 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntSlider.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntSlider.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ItemField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ItemField.java
index 84d2c7a..84d2c7a 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ItemField.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ItemField.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Label.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Label.java
index 41e026f..41e026f 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Label.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/Label.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ListGroup.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ListGroup.java
index c664f71..c664f71 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ListGroup.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/ListGroup.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongField.java
index 01c3a7e..01c3a7e 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongField.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongField.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongSlider.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongSlider.java
index 5563bd0..5563bd0 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongSlider.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongSlider.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/MasterTickBox.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/MasterTickBox.java
index 70dee1a..70dee1a 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/MasterTickBox.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/MasterTickBox.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionAccess.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionAccess.java
index c55afe4..c55afe4 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionAccess.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionAccess.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionFactory.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionFactory.java
index 515a40b..515a40b 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionFactory.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/OptionFactory.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/SimpleOptionFactory.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/SimpleOptionFactory.java
index f7d807f..f7d807f 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/SimpleOptionFactory.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/SimpleOptionFactory.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/StringField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/StringField.java
index 50d638e..50d638e 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/StringField.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/StringField.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/TickBox.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/TickBox.java
index 0a88c14..0a88c14 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/TickBox.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/TickBox.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/api/serializer/GsonConfigSerializerBuilder.java b/src/main/java/dev/isxander/yacl3/config/v2/api/serializer/GsonConfigSerializerBuilder.java
index 33003d7..33003d7 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/api/serializer/GsonConfigSerializerBuilder.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/api/serializer/GsonConfigSerializerBuilder.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigClassHandlerImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigClassHandlerImpl.java
index 813b3ab..813b3ab 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigClassHandlerImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigClassHandlerImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigFieldImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigFieldImpl.java
index aeed5ac..aeed5ac 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigFieldImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/ConfigFieldImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/FieldBackedBinding.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/FieldBackedBinding.java
index f2f36e7..f2f36e7 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/FieldBackedBinding.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/FieldBackedBinding.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/ReflectionFieldAccess.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/ReflectionFieldAccess.java
index e102344..e102344 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/ReflectionFieldAccess.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/ReflectionFieldAccess.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/AutoGenUtils.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/AutoGenUtils.java
index 6f614c1..6f614c1 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/AutoGenUtils.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/AutoGenUtils.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/BooleanImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/BooleanImpl.java
index b41836a..b41836a 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/BooleanImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/BooleanImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ColorFieldImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ColorFieldImpl.java
index 7910c59..7910c59 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ColorFieldImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ColorFieldImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleFieldImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleFieldImpl.java
index 6445141..6445141 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleFieldImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleFieldImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleSliderImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleSliderImpl.java
index e6dd05d..e6dd05d 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleSliderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DoubleSliderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DropdownImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DropdownImpl.java
index c487aab..c487aab 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DropdownImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/DropdownImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EmptyCustomImageFactory.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EmptyCustomImageFactory.java
index 1500864..1500864 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EmptyCustomImageFactory.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EmptyCustomImageFactory.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EnumCyclerImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EnumCyclerImpl.java
index f15d862..f15d862 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EnumCyclerImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/EnumCyclerImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatFieldImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatFieldImpl.java
index acdabd6..acdabd6 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatFieldImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatFieldImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatSliderImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatSliderImpl.java
index f22302f..f22302f 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatSliderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/FloatSliderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntFieldImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntFieldImpl.java
index a3b759a..a3b759a 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntFieldImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntFieldImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntSliderImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntSliderImpl.java
index b570b44..b570b44 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntSliderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntSliderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ItemFieldImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ItemFieldImpl.java
index 2802f5c..2802f5c 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ItemFieldImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ItemFieldImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LabelImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LabelImpl.java
index 6f9b368..6f9b368 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LabelImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LabelImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ListGroupImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ListGroupImpl.java
index f78d4ba..f78d4ba 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ListGroupImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/ListGroupImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongFieldImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongFieldImpl.java
index 5da7d20..5da7d20 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongFieldImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongFieldImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongSliderImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongSliderImpl.java
index 95c5254..95c5254 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongSliderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongSliderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/MasterTickBoxImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/MasterTickBoxImpl.java
index 2d37f03..2d37f03 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/MasterTickBoxImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/MasterTickBoxImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionAccessImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionAccessImpl.java
index 579f776..579f776 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionAccessImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionAccessImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionFactoryRegistry.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionFactoryRegistry.java
index 4f6e3c7..4f6e3c7 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionFactoryRegistry.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/OptionFactoryRegistry.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/StringFieldImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/StringFieldImpl.java
index 96b63a7..96b63a7 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/StringFieldImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/StringFieldImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/TickBoxImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/TickBoxImpl.java
index 050257c..050257c 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/TickBoxImpl.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/TickBoxImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/YACLAutoGenException.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/YACLAutoGenException.java
index 68b375d..68b375d 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/YACLAutoGenException.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/YACLAutoGenException.java
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java
index 8cd1ed4..9f6d8c8 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java
+++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java
@@ -2,13 +2,11 @@ package dev.isxander.yacl3.config.v2.impl.serializer;
import com.google.gson.*;
import com.mojang.serialization.JsonOps;
-import dev.isxander.yacl3.config.GsonConfigInstance;
import dev.isxander.yacl3.config.v2.api.*;
import dev.isxander.yacl3.config.v2.api.serializer.GsonConfigSerializerBuilder;
import dev.isxander.yacl3.gui.utils.ItemRegistryHelper;
import dev.isxander.yacl3.impl.utils.YACLConstants;
import dev.isxander.yacl3.platform.YACLPlatform;
-import net.minecraft.commands.ParserUtils;
import net.minecraft.core.RegistryAccess;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.network.chat.Component;
@@ -20,7 +18,7 @@ import org.quiltmc.parsers.json.JsonWriter;
import org.quiltmc.parsers.json.gson.GsonReader;
import org.quiltmc.parsers.json.gson.GsonWriter;
-import java.awt.*;
+import java.awt.Color;
import java.io.IOException;
import java.io.StringWriter;
import java.lang.reflect.Type;
@@ -177,6 +175,7 @@ public class GsonConfigSerializer<T> extends ConfigSerializer<T> {
config.load();
}
+ /*? if >=1.20.4 {*/
public static class StyleTypeAdapter implements JsonSerializer<Style>, JsonDeserializer<Style> {
@Override
public Style deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
@@ -188,6 +187,7 @@ public class GsonConfigSerializer<T> extends ConfigSerializer<T> {
return Style.Serializer.CODEC.encodeStart(JsonOps.INSTANCE, src).result().orElse(JsonNull.INSTANCE);
}
}
+ /*?}*/
public static class ColorTypeAdapter implements JsonSerializer<Color>, JsonDeserializer<Color> {
@Override
@@ -221,8 +221,14 @@ public class GsonConfigSerializer<T> extends ConfigSerializer<T> {
private UnaryOperator<GsonBuilder> gsonBuilder = builder -> builder
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.serializeNulls()
+ /*? if >1.20.4 { *//*
.registerTypeHierarchyAdapter(Component.class, new Component.SerializerAdapter(RegistryAccess.EMPTY))
- .registerTypeHierarchyAdapter(Style.class, new StyleTypeAdapter())
+ *//*? } elif =1.20.4 {*/
+ .registerTypeHierarchyAdapter(Component.class, new Component.SerializerAdapter())
+ /*? } else {*//*
+ .registerTypeHierarchyAdapter(Component.class, new Component.Serializer())
+ *//*?}*/
+ .registerTypeHierarchyAdapter(Style.class, /*? if >=1.20.4 {*/new StyleTypeAdapter()/*?} else {*//*new Style.Serializer()*//*?}*/)
.registerTypeHierarchyAdapter(Color.class, new ColorTypeAdapter())
.registerTypeHierarchyAdapter(Item.class, new ItemTypeAdapter())
.setPrettyPrinting();
diff --git a/common/src/main/java/dev/isxander/yacl3/debug/DebugProperties.java b/src/main/java/dev/isxander/yacl3/debug/DebugProperties.java
index 8d93bcd..8d93bcd 100644
--- a/common/src/main/java/dev/isxander/yacl3/debug/DebugProperties.java
+++ b/src/main/java/dev/isxander/yacl3/debug/DebugProperties.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/AbstractWidget.java b/src/main/java/dev/isxander/yacl3/gui/AbstractWidget.java
index 0c3afdd..6f92749 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/AbstractWidget.java
+++ b/src/main/java/dev/isxander/yacl3/gui/AbstractWidget.java
@@ -1,28 +1,20 @@
package dev.isxander.yacl3.gui;
import dev.isxander.yacl3.api.utils.Dimension;
+import dev.isxander.yacl3.gui.utils.ButtonTextureRenderer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Renderable;
-import net.minecraft.client.gui.components.WidgetSprites;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.narration.NarratableEntry;
import net.minecraft.client.gui.narration.NarrationElementOutput;
import net.minecraft.client.resources.sounds.SimpleSoundInstance;
-import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvents;
-import java.awt.*;
+import java.awt.Color;
public abstract class AbstractWidget implements GuiEventListener, Renderable, NarratableEntry {
- private static final WidgetSprites SPRITES = new WidgetSprites(
- new ResourceLocation("widget/button"), // normal
- new ResourceLocation("widget/button_disabled"), // disabled & !focused
- new ResourceLocation("widget/button_highlighted"), // !disabled & focused
- new ResourceLocation("widget/slider_highlighted") // disabled & focused
- );
-
protected final Minecraft client = Minecraft.getInstance();
protected final Font textRenderer = client.font;
protected final int inactiveColor = 0xFFA0A0A0;
@@ -83,7 +75,7 @@ public abstract class AbstractWidget implements GuiEventListener, Renderable, Na
int width = x2 - x1;
int height = y2 - y1;
- graphics.blitSprite(SPRITES.get(enabled, hovered), x1, y1, width, height);
+ ButtonTextureRenderer.render(graphics, x1, y1, width, height, enabled, hovered);
}
protected void drawOutline(GuiGraphics graphics, int x1, int y1, int x2, int y2, int width, int color) {
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/DescriptionWithName.java b/src/main/java/dev/isxander/yacl3/gui/DescriptionWithName.java
index 6ad72e8..6ad72e8 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/DescriptionWithName.java
+++ b/src/main/java/dev/isxander/yacl3/gui/DescriptionWithName.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/ElementListWidgetExt.java b/src/main/java/dev/isxander/yacl3/gui/ElementListWidgetExt.java
index 02fc6ad..742125b 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/ElementListWidgetExt.java
+++ b/src/main/java/dev/isxander/yacl3/gui/ElementListWidgetExt.java
@@ -22,26 +22,42 @@ public class ElementListWidgetExt<E extends ElementListWidgetExt.Entry<E>> exten
private boolean usingScrollbar;
public ElementListWidgetExt(Minecraft client, int x, int y, int width, int height, boolean smoothScrolling) {
- super(client, x, y, width, height);
+ /*? if >1.20.2 {*/
+ super(client, width, x, y, height);
+ /*? } else {*//*
+ super(client, width, height, y, y + height, 22);
+ this.x0 = x;
+ this.x1 = x + width;
+ *//*?}*/
this.doSmoothScrolling = smoothScrolling;
setRenderHeader(false, 0);
}
@Override
- public boolean mouseScrolled(double mouseX, double mouseY, double horizontal, double vertical) {
+ public boolean mouseScrolled(double mouseX, double mouseY, /*? if >1.20.2 {*/ double horizontal, /*?}*/ double vertical) {
+ double scroll = vertical;
+ /*? if >1.20.2 {*/
+ scroll += horizontal;
+ /*?}*/
+
// default implementation bases scroll step from total height of entries, this is constant
- this.setScrollAmount(this.getScrollAmount() - (vertical + horizontal) * 20);
+ this.setScrollAmount(this.getScrollAmount() - scroll * 20);
return true;
}
@Override
protected int getScrollbarPosition() {
// default implementation does not respect left/right
- return this.getRight() - SCROLLBAR_WIDTH;
+ return this.getX() + this.getWidth() - SCROLLBAR_WIDTH;
}
@Override
- public void renderWidget(GuiGraphics graphics, int mouseX, int mouseY, float delta) {
+ /*? if >1.20.2 { */
+ public void renderWidget(GuiGraphics graphics, int mouseX, int mouseY, float delta)
+ /*?} else { *//*
+ public void render(GuiGraphics graphics, int mouseX, int mouseY, float delta)
+ *//*?}*/
+ {
if (usingScrollbar) {
resetSmoothScrolling();
}
@@ -49,9 +65,14 @@ public class ElementListWidgetExt<E extends ElementListWidgetExt.Entry<E>> exten
smoothScrollAmount = Mth.lerp(Minecraft.getInstance().getDeltaFrameTime() * 0.5, smoothScrollAmount, getScrollAmount());
returnSmoothAmount = true;
+
graphics.enableScissor(this.getX(), this.getY(), this.getX() + this.getWidth(), this.getY() + this.getHeight());
+ /*? if >1.20.2 { */
super.renderWidget(graphics, mouseX, mouseY, delta);
+ /*?} else { *//*
+ super.render(graphics, mouseX, mouseY, delta);
+ *//*?}*/
graphics.disableScissor();
@@ -148,21 +169,12 @@ public class ElementListWidgetExt<E extends ElementListWidgetExt.Entry<E>> exten
}
@Override
- protected void ensureVisible(E entry) {
- int i = this.getRowTop(this.children().indexOf(entry));
- int j = i - this.getY() - 4 - entry.getItemHeight();
- if (j < 0) {
- this.setScrollAmount(this.getScrollAmount() + j);
- }
-
- int k = this.getBottom() - i - entry.getItemHeight() * 2;
- if (k < 0) {
- this.setScrollAmount(this.getScrollAmount() - k);
- }
- }
-
- @Override
- protected void renderListItems(GuiGraphics graphics, int mouseX, int mouseY, float delta) {
+ /*? if >1.20.4 {*//*
+ protected void renderListItems(GuiGraphics graphics, int mouseX, int mouseY, float delta)
+ *//*? } else {*/
+ protected void renderList(GuiGraphics graphics, int mouseX, int mouseY, float delta)
+ /*?}*/
+ {
int left = this.getRowLeft();
int right = this.getRowWidth();
int count = this.getItemCount();
@@ -213,4 +225,50 @@ public class ElementListWidgetExt<E extends ElementListWidgetExt.Entry<E>> exten
return 22;
}
}
+
+ /*? if <1.20.3 {*//*
+ @Override
+ public int getX() {
+ return x0;
+ }
+
+ @Override
+ public int getY() {
+ return y0;
+ }
+
+ @Override
+ public void setX(int x) {
+ int width = this.getWidth();
+ x0 = x;
+ x1 = x + width;
+ }
+
+ @Override
+ public void setY(int y) {
+ int height = this.getHeight();
+ y0 = y;
+ y1 = y + height;
+ }
+
+ public void setWidth(int width) {
+ x1 = x0 + width;
+ this.width = width;
+ }
+
+ public void setHeight(int height) {
+ y1 = y0 + height;
+ this.height = height;
+ }
+
+ @Override
+ public int getWidth() {
+ return width;
+ }
+
+ @Override
+ public int getHeight() {
+ return height;
+ }
+ *//*?}*/
}
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/LowProfileButtonWidget.java b/src/main/java/dev/isxander/yacl3/gui/LowProfileButtonWidget.java
index 3f5822f..3f5822f 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/LowProfileButtonWidget.java
+++ b/src/main/java/dev/isxander/yacl3/gui/LowProfileButtonWidget.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/OptionDescriptionWidget.java b/src/main/java/dev/isxander/yacl3/gui/OptionDescriptionWidget.java
index 7aa3715..4ca3ad3 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/OptionDescriptionWidget.java
+++ b/src/main/java/dev/isxander/yacl3/gui/OptionDescriptionWidget.java
@@ -122,7 +122,7 @@ public class OptionDescriptionWidget extends AbstractWidget {
}
@Override
- public boolean mouseScrolled(double mouseX, double mouseY, double horizontal, double vertical) {
+ public boolean mouseScrolled(double mouseX, double mouseY, /*? if >1.20.2 {*/ double horizontal, /*?}*/ double vertical) {
if (isMouseOver(mouseX, mouseY)) {
targetScrollAmount = Mth.clamp(targetScrollAmount - (int) vertical * 10, 0, maxScrollAmount);
lastInteractionTime = currentTimeMS();
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/OptionListWidget.java b/src/main/java/dev/isxander/yacl3/gui/OptionListWidget.java
index 9e1931f..f699f0c 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/OptionListWidget.java
+++ b/src/main/java/dev/isxander/yacl3/gui/OptionListWidget.java
@@ -31,7 +31,7 @@ public class OptionListWidget extends ElementListWidgetExt<OptionListWidget.Entr
private DescriptionWithName lastHoveredOption;
public OptionListWidget(YACLScreen screen, ConfigCategory category, Minecraft client, int x, int y, int width, int height, Consumer<DescriptionWithName> hoverEvent) {
- super(client, width, height, x, y, true);
+ super(client, x, y, width, height, true);
this.yaclScreen = screen;
this.category = category;
this.hoverEvent = hoverEvent;
@@ -128,12 +128,6 @@ public class OptionListWidget extends ElementListWidgetExt<OptionListWidget.Entr
}
}
- public void updateSearchQuery(String query) {
- this.searchQuery = query;
- expandAllGroups();
- recacheViewableChildren();
- }
-
@Override
public int getRowLeft() {
return super.getRowLeft() - SCROLLBAR_WIDTH;
@@ -141,7 +135,13 @@ public class OptionListWidget extends ElementListWidgetExt<OptionListWidget.Entr
@Override
public int getRowWidth() {
- return getWidth() - SCROLLBAR_WIDTH - 20;
+ return getWidth() - SCROLLBAR_WIDTH - 20; // 10 padding each side
+ }
+
+ public void updateSearchQuery(String query) {
+ this.searchQuery = query;
+ expandAllGroups();
+ recacheViewableChildren();
}
@Override
@@ -155,11 +155,11 @@ public class OptionListWidget extends ElementListWidgetExt<OptionListWidget.Entr
}
@Override
- public boolean mouseScrolled(double mouseX, double mouseY, double horizontal, double vertical) {
- super.mouseScrolled(mouseX, mouseY, horizontal, vertical);
+ public boolean mouseScrolled(double mouseX, double mouseY, /*? if >1.20.2 {*/ double horizontal, /*?}*/ double vertical) {
+ super.mouseScrolled(mouseX, mouseY, /*? if >1.20.2 {*/ horizontal, /*?}*/ vertical);
for (Entry child : children()) {
- if (child.mouseScrolled(mouseX, mouseY, horizontal, vertical))
+ if (child.mouseScrolled(mouseX, mouseY, /*? if >1.20.2 {*/ horizontal, /*?}*/ vertical))
break;
}
@@ -244,10 +244,11 @@ public class OptionListWidget extends ElementListWidgetExt<OptionListWidget.Entr
}
}
+ /*? if >1.20.4 {*//*
@Override
protected void renderListBackground(GuiGraphics guiGraphics) {
- //super.renderListBackground();
}
+ *//*?}*/
public abstract class Entry extends ElementListWidgetExt.Entry<Entry> {
public boolean isViewable() {
@@ -310,8 +311,8 @@ public class OptionListWidget extends ElementListWidgetExt<OptionListWidget.Entr
}
@Override
- public boolean mouseScrolled(double mouseX, double mouseY, double horizontal, double vertical) {
- return widget.mouseScrolled(mouseX, mouseY, horizontal, vertical);
+ public boolean mouseScrolled(double mouseX, double mouseY, /*? if >1.20.2 {*/ double horizontal, /*?}*/ double vertical) {
+ return widget.mouseScrolled(mouseX, mouseY, /*? if >1.20.2 {*/ horizontal, /*?}*/ vertical);
}
@Override
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/RequireRestartScreen.java b/src/main/java/dev/isxander/yacl3/gui/RequireRestartScreen.java
index 5ba4b03..5ba4b03 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/RequireRestartScreen.java
+++ b/src/main/java/dev/isxander/yacl3/gui/RequireRestartScreen.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/SearchFieldWidget.java b/src/main/java/dev/isxander/yacl3/gui/SearchFieldWidget.java
index a666886..a666886 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/SearchFieldWidget.java
+++ b/src/main/java/dev/isxander/yacl3/gui/SearchFieldWidget.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/TextScaledButtonWidget.java b/src/main/java/dev/isxander/yacl3/gui/TextScaledButtonWidget.java
index 6ad0d1c..6ad0d1c 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/TextScaledButtonWidget.java
+++ b/src/main/java/dev/isxander/yacl3/gui/TextScaledButtonWidget.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/TooltipButtonWidget.java b/src/main/java/dev/isxander/yacl3/gui/TooltipButtonWidget.java
index f88bdc3..f439301 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/TooltipButtonWidget.java
+++ b/src/main/java/dev/isxander/yacl3/gui/TooltipButtonWidget.java
@@ -15,8 +15,7 @@ public class TooltipButtonWidget extends Button {
public TooltipButtonWidget(Screen screen, int x, int y, int width, int height, Component message, Component tooltip, OnPress onPress) {
super(x, y, width, height, message, onPress, DEFAULT_NARRATION);
this.screen = screen;
- // TODO
- if (tooltip != null);
- //setTooltip(new YACLTooltip(tooltip, this));
+ if (tooltip != null)
+ setTooltip(new YACLTooltip(tooltip, this));
}
}
diff --git a/src/main/java/dev/isxander/yacl3/gui/ValueFormatters.java b/src/main/java/dev/isxander/yacl3/gui/ValueFormatters.java
new file mode 100644
index 0000000..988b257
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl3/gui/ValueFormatters.java
@@ -0,0 +1,21 @@
+package dev.isxander.yacl3.gui;
+
+import dev.isxander.yacl3.api.controller.ValueFormatter;
+import net.minecraft.network.chat.Component;
+
+public final class ValueFormatters {
+ public static ValueFormatter<Float> percent(int decimalPlaces) {
+ return new PercentFormatter(decimalPlaces);
+ }
+
+ public record PercentFormatter(int decimalPlaces) implements ValueFormatter<Float> {
+ public PercentFormatter() {
+ this(1);
+ }
+
+ @Override
+ public Component format(Float value) {
+ return Component.literal(String.format("%." + decimalPlaces + "f%%", value * 100));
+ }
+ }
+}
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/YACLScreen.java b/src/main/java/dev/isxander/yacl3/gui/YACLScreen.java
index 01c5d99..e88c144 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/YACLScreen.java
+++ b/src/main/java/dev/isxander/yacl3/gui/YACLScreen.java
@@ -19,6 +19,7 @@ import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.MultiLineLabel;
import net.minecraft.client.gui.components.Tooltip;
+import net.minecraft.client.gui.components.tabs.Tab;
import net.minecraft.client.gui.components.tabs.TabManager;
import net.minecraft.client.gui.components.tabs.TabNavigationBar;
import net.minecraft.client.gui.navigation.ScreenRectangle;
@@ -33,11 +34,10 @@ import org.jetbrains.annotations.Nullable;
import java.util.HashSet;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
public class YACLScreen extends Screen {
- private static final ResourceLocation DARKER_BG = new ResourceLocation("textures/gui/menu_list_background.png");
-
public final YetAnotherConfigLib config;
private final Screen parent;
@@ -87,9 +87,17 @@ public class YACLScreen extends Screen {
config.initConsumer().accept(this);
}
+ /*? if <=1.20.4 {*/
+ @Override
+ public void render(GuiGraphics graphics, int mouseX, int mouseY, float delta) {
+ renderDirtBackground(graphics);
+ super.render(graphics, mouseX, mouseY, delta);
+ }
+ /*?}*/
+
@Override
- public void renderBackground(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
- super.renderBackground(guiGraphics, mouseX, mouseY, partialTick);
+ public void renderBackground(GuiGraphics guiGraphics/*? if >1.20.1 {*/, int mouseX, int mouseY, float partialTick/*?}*/) {
+ super.renderBackground(guiGraphics/*? if >1.20.1 {*/, mouseX, mouseY, partialTick/*?}*/);
if (tabManager.getCurrentTab() instanceof TabExt tab) {
tab.renderBackground(guiGraphics);
@@ -185,11 +193,6 @@ public class YACLScreen extends Screen {
}
@Override
- protected void renderMenuBackground(GuiGraphics guiGraphics) {
- this.renderMenuBackground(guiGraphics, 0, this.tabArea.top() + 1, this.width, this.tabArea.height());
- }
-
- @Override
public boolean shouldCloseOnEsc() {
if (pendingChanges()) {
setSaveButtonMessage(Component.translatable("yacl.gui.save_before_exit").withStyle(ChatFormatting.RED), Component.translatable("yacl.gui.save_before_exit.tooltip"));
@@ -249,6 +252,10 @@ public class YACLScreen extends Screen {
}
public class CategoryTab implements TabExt {
+ /*? if >1.20.4 {*//*
+ private static final ResourceLocation DARKER_BG = new ResourceLocation("textures/gui/menu_list_background.png");
+ *//*?}*/
+
private final ConfigCategory category;
private final Tooltip tooltip;
@@ -336,6 +343,7 @@ public class YACLScreen extends Screen {
consumer.accept(descriptionWidget);
}
+ /*? if >1.20.4 {*//*
@Override
public void renderBackground(GuiGraphics graphics) {
RenderSystem.enableBlend();
@@ -357,6 +365,7 @@ public class YACLScreen extends Screen {
RenderSystem.disableBlend();
}
+ *//*?}*/
@Override
public void doLayout(ScreenRectangle screenRectangle) {
@@ -377,11 +386,11 @@ public class YACLScreen extends Screen {
public void updateButtons() {
boolean pendingChanges = pendingChanges();
- // TODO
- undoButton.active = pendingChanges; saveFinishedButton.setMessage(pendingChanges ? Component.translatable("yacl.gui.save") : GuiUtils.translatableFallback("yacl.gui.done", CommonComponents.GUI_DONE));
- //saveFinishedButton.setTooltip(new YACLTooltip(pendingChanges ? Component.translatable("yacl.gui.save.tooltip") : Component.translatable("yacl.gui.finished.tooltip"), saveFinishedButton));
+ undoButton.active = pendingChanges;
+ saveFinishedButton.setMessage(pendingChanges ? Component.translatable("yacl.gui.save") : GuiUtils.translatableFallback("yacl.gui.done", CommonComponents.GUI_DONE));
+ saveFinishedButton.setTooltip(new YACLTooltip(pendingChanges ? Component.translatable("yacl.gui.save.tooltip") : Component.translatable("yacl.gui.finished.tooltip"), saveFinishedButton));
cancelResetButton.setMessage(pendingChanges ? GuiUtils.translatableFallback("yacl.gui.cancel", CommonComponents.GUI_CANCEL) : Component.translatable("controls.reset"));
- //cancelResetButton.setTooltip(new YACLTooltip(pendingChanges ? Component.translatable("yacl.gui.cancel.tooltip") : Component.translatable("yacl.gui.reset.tooltip"), cancelResetButton));
+ cancelResetButton.setTooltip(new YACLTooltip(pendingChanges ? Component.translatable("yacl.gui.cancel.tooltip") : Component.translatable("yacl.gui.reset.tooltip"), cancelResetButton));
}
}
diff --git a/src/main/java/dev/isxander/yacl3/gui/YACLTooltip.java b/src/main/java/dev/isxander/yacl3/gui/YACLTooltip.java
new file mode 100644
index 0000000..94b91a9
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl3/gui/YACLTooltip.java
@@ -0,0 +1,23 @@
+package dev.isxander.yacl3.gui;
+
+import net.minecraft.client.gui.components.Tooltip;
+import net.minecraft.client.gui.navigation.ScreenRectangle;
+import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipPositioner;
+import net.minecraft.network.chat.Component;
+
+public class YACLTooltip extends Tooltip {
+ private final net.minecraft.client.gui.components.AbstractWidget widget;
+
+ public YACLTooltip(Component tooltip, net.minecraft.client.gui.components.AbstractWidget widget) {
+ super(tooltip, tooltip);
+ this.widget = widget;
+ }
+
+ /*? if >1.20.4 {*//* // stonecutter cannot handle AND expressions
+ *//*? } elif >1.20.1 {*/
+ @Override
+ protected ClientTooltipPositioner createTooltipPositioner(boolean bl, boolean bl2, ScreenRectangle screenRectangle) {
+ return new YACLTooltipPositioner(widget);
+ }
+ /*?}*/
+}
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/YACLTooltipPositioner.java b/src/main/java/dev/isxander/yacl3/gui/YACLTooltipPositioner.java
index bb87170..bb87170 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/YACLTooltipPositioner.java
+++ b/src/main/java/dev/isxander/yacl3/gui/YACLTooltipPositioner.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/ActionController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/ActionController.java
index 77938f6..77938f6 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/ActionController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/ActionController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java
index cbd6ba5..cbd6ba5 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/ColorController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/ColorController.java
index 56e6d30..56e6d30 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/ColorController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/ColorController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/ControllerWidget.java b/src/main/java/dev/isxander/yacl3/gui/controllers/ControllerWidget.java
index 19fe2f6..19fe2f6 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/ControllerWidget.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/ControllerWidget.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/LabelController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/LabelController.java
index fee6c19..fee6c19 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/LabelController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/LabelController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/ListEntryWidget.java b/src/main/java/dev/isxander/yacl3/gui/controllers/ListEntryWidget.java
index 7e71cc7..7e71cc7 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/ListEntryWidget.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/ListEntryWidget.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/TickBoxController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/TickBoxController.java
index de19c14..de19c14 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/TickBoxController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/TickBoxController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingControllerElement.java b/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingControllerElement.java
index 3d85afe..3d85afe 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingControllerElement.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingControllerElement.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java
index 3fce3cf..3fce3cf 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java
index 5a6a912..5a6a912 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/ICyclingController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/ICyclingController.java
index cfddefa..cfddefa 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/ICyclingController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/ICyclingController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownController.java
index b913d15..b913d15 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownControllerElement.java b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownControllerElement.java
index 31d4d51..49e0c0e 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownControllerElement.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/AbstractDropdownControllerElement.java
@@ -226,7 +226,17 @@ public abstract class AbstractDropdownControllerElement<T, U> extends StringCont
public void renderDropdownBackground(GuiGraphics graphics, int numberOfItems) {
graphics.setColor(0.25f, 0.25f, 0.25f, 1.0f);
- graphics.blit(Screen.MENU_BACKGROUND, getDimension().x(), getDimension().yLimit() + 2, 0, 0.0f, 0.0f, getDimension().width(), getDimension().height() * numberOfItems + 2, 32, 32);
+ graphics.blit(
+ /*? if >1.20.4 {*//*
+ Screen.MENU_BACKGROUND,
+ *//*?} else {*/
+ Screen.BACKGROUND_LOCATION,
+ /*?}*/
+ getDimension().x(), getDimension().yLimit() + 2, 0,
+ 0.0f, 0.0f,
+ getDimension().width(), getDimension().height() * numberOfItems + 2,
+ 32, 32
+ );
graphics.setColor(1.0f, 1.0f, 1.0f, 1.0f);
graphics.renderOutline(getDimension().x(), getDimension().yLimit() + 2, getDimension().width(), getDimension().height() * numberOfItems, -1);
}
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringController.java
index fafc759..fafc759 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringControllerElement.java b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringControllerElement.java
index 615aada..615aada 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringControllerElement.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownStringControllerElement.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownController.java
index 8e6e0e6..8e6e0e6 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownControllerElement.java b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownControllerElement.java
index 2df6f6b..2df6f6b 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownControllerElement.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/EnumDropdownControllerElement.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemController.java
index ac903c7..ac903c7 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemControllerElement.java b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemControllerElement.java
index 1617c41..1617c41 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemControllerElement.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemControllerElement.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/package-info.java b/src/main/java/dev/isxander/yacl3/gui/controllers/package-info.java
index 1819a64..1819a64 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/package-info.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/package-info.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java
index 89308a8..89308a8 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java
index 79246dd..79246dd 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/ISliderController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/ISliderController.java
index 4a3f36b..4a3f36b 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/ISliderController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/ISliderController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java
index bcb551d..bcb551d 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java
index 105bd46..105bd46 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/SliderControllerElement.java b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/SliderControllerElement.java
index 32d7561..05e8da3 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/SliderControllerElement.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/SliderControllerElement.java
@@ -80,7 +80,7 @@ public class SliderControllerElement extends ControllerWidget<ISliderController<
}
@Override
- public boolean mouseScrolled(double mouseX, double mouseY, double horizontal, double vertical) {
+ public boolean mouseScrolled(double mouseX, double mouseY, /*? if >1.20.2 {*/ double horizontal, /*?}*/ double vertical) {
if (!isAvailable() || (!isMouseOver(mouseX, mouseY)) || (!Screen.hasShiftDown() && !Screen.hasControlDown()))
return false;
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/package-info.java b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/package-info.java
index e2cb0e3..e2cb0e3 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/package-info.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/slider/package-info.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/IStringController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/string/IStringController.java
index 14d10dd..14d10dd 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/IStringController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/string/IStringController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringController.java
index 4bafc0f..4bafc0f 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java b/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java
index 689d8e2..689d8e2 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java
index 1fe3e41..1fe3e41 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java
index 8c81b49..8c81b49 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java
index 6286978..6286978 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java
index 906a2b5..906a2b5 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java
index 3c06876..3c06876 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/package-info.java b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/package-info.java
index 4d8bbc2..4d8bbc2 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/package-info.java
+++ b/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/package-info.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/image/ImageRenderer.java b/src/main/java/dev/isxander/yacl3/gui/image/ImageRenderer.java
index d3fb4bf..d3fb4bf 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/image/ImageRenderer.java
+++ b/src/main/java/dev/isxander/yacl3/gui/image/ImageRenderer.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/image/ImageRendererFactory.java b/src/main/java/dev/isxander/yacl3/gui/image/ImageRendererFactory.java
index d9d2e2d..d9d2e2d 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/image/ImageRendererFactory.java
+++ b/src/main/java/dev/isxander/yacl3/gui/image/ImageRendererFactory.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/image/ImageRendererManager.java b/src/main/java/dev/isxander/yacl3/gui/image/ImageRendererManager.java
index 2f7ef50..0c9b8a3 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/image/ImageRendererManager.java
+++ b/src/main/java/dev/isxander/yacl3/gui/image/ImageRendererManager.java
@@ -3,16 +3,14 @@ package dev.isxander.yacl3.gui.image;
import com.mojang.blaze3d.systems.RenderSystem;
import dev.isxander.yacl3.gui.image.impl.AnimatedDynamicTextureImage;
import dev.isxander.yacl3.impl.utils.YACLConstants;
-import dev.isxander.yacl3.platform.YACLPlatform;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
-import net.minecraft.server.packs.resources.Resource;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.*;
-import java.util.function.BiFunction;
+import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
@@ -25,11 +23,11 @@ public class ImageRendererManager {
static final List<PreloadedImageFactory> PRELOADED_IMAGE_FACTORIES = List.of(
new PreloadedImageFactory(
location -> location.getPath().endsWith(".webp"),
- AnimatedDynamicTextureImage::createWEBPFromResource
+ AnimatedDynamicTextureImage::createWEBPFromTexture
),
new PreloadedImageFactory(
location -> location.getPath().endsWith(".gif"),
- AnimatedDynamicTextureImage::createGIFFromResource
+ AnimatedDynamicTextureImage::createGIFFromTexture
)
);
@@ -39,13 +37,6 @@ public class ImageRendererManager {
}
if (IMAGE_CACHE.containsKey(id)) {
- // warn developers if they don't put their webp/gif images `/textures` folder
- if (YACLPlatform.isDevelopmentEnv()) {
- if (PRELOADED_IMAGE_FACTORIES.stream().anyMatch(factory -> factory.predicate().test(id))) {
- YACLConstants.LOGGER.error("Image '{}' not preloaded. MAKE SURE THAT ALL YACL WEBP/GIF IMAGES ARE INSIDE YOUR ASSETS `/textures` FOLDER, ELSE THEY WILL NOT BE PRELOADED!!! THIS ERROR WILL NOT APPEAR IN PROD", id);
- }
- }
-
return Optional.ofNullable((T) IMAGE_CACHE.get(id).getNow(null));
}
@@ -54,6 +45,8 @@ public class ImageRendererManager {
@SuppressWarnings("unchecked")
public static <T extends ImageRenderer> CompletableFuture<T> registerImage(ResourceLocation id, ImageRendererFactory factory) {
+ System.out.println(PRELOADED_IMAGE_CACHE.get(id));
+
if (IMAGE_CACHE.containsKey(id)) {
return (CompletableFuture<T>) IMAGE_CACHE.get(id);
}
@@ -73,7 +66,7 @@ public class ImageRendererManager {
return (CompletableFuture<T>) future;
}
- private static void completeImageFactory(ResourceLocation id, Supplier<Optional<ImageRendererFactory.ImageSupplier>> supplier, CompletableFuture<ImageRenderer> future) {
+ private static <T extends ImageRenderer> void completeImageFactory(ResourceLocation id, Supplier<Optional<ImageRendererFactory.ImageSupplier>> supplier, CompletableFuture<ImageRenderer> future) {
RenderSystem.assertOnRenderThread();
ImageRendererFactory.ImageSupplier completableImage = supplier.get().orElse(null);
@@ -118,7 +111,7 @@ public class ImageRendererManager {
}
}
- public record PreloadedImageFactory(Predicate<ResourceLocation> predicate, BiFunction<Resource, ResourceLocation, ImageRendererFactory> factory) {
+ public record PreloadedImageFactory(Predicate<ResourceLocation> predicate, Function<ResourceLocation, ImageRendererFactory> factory) {
}
private record CompletedSupplier<T>(T get) implements Supplier<T> {
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/image/YACLImageReloadListener.java b/src/main/java/dev/isxander/yacl3/gui/image/YACLImageReloadListener.java
index bac8c56..b6524a7 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/image/YACLImageReloadListener.java
+++ b/src/main/java/dev/isxander/yacl3/gui/image/YACLImageReloadListener.java
@@ -16,9 +16,13 @@ import java.util.Map;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
-import java.util.function.Function;
-public class YACLImageReloadListener implements PreparableReloadListener {
+public class YACLImageReloadListener
+ implements PreparableReloadListener
+ /*? if fabric {*/,
+ net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener
+ /*?}*/
+{
@Override
public CompletableFuture<Void> reload(
PreparationBarrier preparationBarrier,
@@ -28,9 +32,8 @@ public class YACLImageReloadListener implements PreparableReloadListener {
Executor backgroundExecutor,
Executor gameExecutor
) {
- YACLConstants.LOGGER.info("YACL is reloading images");
Map<ResourceLocation, Resource> imageResources = resourceManager.listResources(
- "textures",
+ "",
location -> ImageRendererManager.PRELOADED_IMAGE_FACTORIES
.stream()
.anyMatch(factory -> factory.predicate().test(location))
@@ -52,7 +55,7 @@ public class YACLImageReloadListener implements PreparableReloadListener {
ImageRendererFactory imageFactory = ImageRendererManager.PRELOADED_IMAGE_FACTORIES
.stream()
.filter(factory -> factory.predicate().test(location))
- .map(factory -> factory.factory().apply(resource, location))
+ .map(factory -> factory.factory().apply(location))
.findAny()
.orElseThrow();
@@ -95,8 +98,13 @@ public class YACLImageReloadListener implements PreparableReloadListener {
});
}
- YACLConstants.LOGGER.info("YACL has found {} images", imageResources.size());
-
return CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new));
}
+
+ /*? if fabric {*/
+ @Override
+ public ResourceLocation getFabricId() {
+ return new ResourceLocation("yet_another_config_lib_v3", "image_reload_listener");
+ }
+ /*?}*/
}
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/image/impl/AnimatedDynamicTextureImage.java b/src/main/java/dev/isxander/yacl3/gui/image/impl/AnimatedDynamicTextureImage.java
index 2136f56..39ddb55 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/image/impl/AnimatedDynamicTextureImage.java
+++ b/src/main/java/dev/isxander/yacl3/gui/image/impl/AnimatedDynamicTextureImage.java
@@ -103,10 +103,6 @@ public class AnimatedDynamicTextureImage extends DynamicTextureImage {
};
}
- public static ImageRendererFactory createGIFFromResource(Resource resource, ResourceLocation resourceLocation) {
- return () -> createGIFSupplier(resource.open(), resourceLocation);
- }
-
public static ImageRendererFactory createGIFFromPath(Path path, ResourceLocation uniqueLocation) {
return () -> createGIFSupplier(new FileInputStream(path.toFile()), uniqueLocation);
}
@@ -120,10 +116,6 @@ public class AnimatedDynamicTextureImage extends DynamicTextureImage {
};
}
- public static ImageRendererFactory createWEBPFromResource(Resource resource, ResourceLocation resourceLocation) {
- return () -> createWEBPSupplier(resource.open(), resourceLocation);
- }
-
public static ImageRendererFactory createWEBPFromPath(Path path, ResourceLocation uniqueLocation) {
return () -> createWEBPSupplier(new FileInputStream(path.toFile()), uniqueLocation);
}
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/image/impl/DynamicTextureImage.java b/src/main/java/dev/isxander/yacl3/gui/image/impl/DynamicTextureImage.java
index 2d2abb9..2d2abb9 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/image/impl/DynamicTextureImage.java
+++ b/src/main/java/dev/isxander/yacl3/gui/image/impl/DynamicTextureImage.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/image/impl/ResourceTextureImage.java b/src/main/java/dev/isxander/yacl3/gui/image/impl/ResourceTextureImage.java
index abbeec7..abbeec7 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/image/impl/ResourceTextureImage.java
+++ b/src/main/java/dev/isxander/yacl3/gui/image/impl/ResourceTextureImage.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/tab/ListHolderWidget.java b/src/main/java/dev/isxander/yacl3/gui/tab/ListHolderWidget.java
index df28d27..a533290 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/tab/ListHolderWidget.java
+++ b/src/main/java/dev/isxander/yacl3/gui/tab/ListHolderWidget.java
@@ -67,8 +67,8 @@ public class ListHolderWidget<T extends ElementListWidgetExt<?>> extends Abstrac
}
@Override
- public boolean mouseScrolled(double mouseX, double mouseY, double horizontal, double vertical) {
- return this.list.mouseScrolled(mouseX, mouseY, horizontal, vertical);
+ public boolean mouseScrolled(double mouseX, double mouseY, /*? if >1.20.2 {*/ double horizontal, /*?}*/ double vertical) {
+ return this.list.mouseScrolled(mouseX, mouseY, /*? if >1.20.2 {*/ horizontal, /*?}*/ vertical);
}
@Override
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/tab/ScrollableNavigationBar.java b/src/main/java/dev/isxander/yacl3/gui/tab/ScrollableNavigationBar.java
index 66ba6a3..5829202 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/tab/ScrollableNavigationBar.java
+++ b/src/main/java/dev/isxander/yacl3/gui/tab/ScrollableNavigationBar.java
@@ -1,6 +1,7 @@
package dev.isxander.yacl3.gui.tab;
import com.google.common.collect.ImmutableList;
+import dev.isxander.yacl3.mixin.TabNavigationBarAccessor;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.GuiGraphics;
@@ -10,6 +11,7 @@ import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.components.tabs.Tab;
import net.minecraft.client.gui.components.tabs.TabManager;
import net.minecraft.client.gui.components.tabs.TabNavigationBar;
+import net.minecraft.client.gui.layouts.Layout;
import net.minecraft.util.Mth;
import org.jetbrains.annotations.Nullable;
@@ -57,11 +59,12 @@ public class ScrollableNavigationBar extends TabNavigationBar {
allTabsWidth = noScrollWidth;
}
- this.layout.arrangeElements();
- this.layout.setY(0);
- this.scrollOffset = 0;
+ Layout layout = ((TabNavigationBarAccessor) this).getLayout();
+ layout.arrangeElements();
+ layout.setY(0);
+ scrollOffset = 0;
- this.layout.setX(Math.max((this.width - allTabsWidth) / 2, NAVBAR_MARGIN));
+ layout.setX(Math.max((this.width - allTabsWidth) / 2, NAVBAR_MARGIN));
this.maxScrollOffset = Math.max(0, allTabsWidth - noScrollWidth);
}
@@ -77,7 +80,7 @@ public class ScrollableNavigationBar extends TabNavigationBar {
}
@Override
- public boolean mouseScrolled(double mouseX, double mouseY, double horizontal, double vertical) {
+ public boolean mouseScrolled(double mouseX, double mouseY, /*? if >1.20.2 {*/ double horizontal, /*?}*/ double vertical) {
this.setScrollOffset(this.scrollOffset - (int)(vertical*15));
return true;
}
@@ -88,6 +91,8 @@ public class ScrollableNavigationBar extends TabNavigationBar {
}
public void setScrollOffset(int scrollOffset) {
+ Layout layout = ((TabNavigationBarAccessor) this).getLayout();
+
layout.setX(layout.getX() + this.scrollOffset);
this.scrollOffset = Mth.clamp(scrollOffset, 0, maxScrollOffset);
layout.setX(layout.getX() - this.scrollOffset);
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/tab/TabExt.java b/src/main/java/dev/isxander/yacl3/gui/tab/TabExt.java
index 1b4b3e5..1b4b3e5 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/tab/TabExt.java
+++ b/src/main/java/dev/isxander/yacl3/gui/tab/TabExt.java
diff --git a/src/main/java/dev/isxander/yacl3/gui/utils/ButtonTextureRenderer.java b/src/main/java/dev/isxander/yacl3/gui/utils/ButtonTextureRenderer.java
new file mode 100644
index 0000000..aa52a3f
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl3/gui/utils/ButtonTextureRenderer.java
@@ -0,0 +1,34 @@
+package dev.isxander.yacl3.gui.utils;
+
+import com.mojang.blaze3d.systems.RenderSystem;
+import net.minecraft.client.gui.GuiGraphics;
+import net.minecraft.resources.ResourceLocation;
+
+public class ButtonTextureRenderer {
+ /*? if >1.20.1 {*/
+ private static final net.minecraft.client.gui.components.WidgetSprites SPRITES = new net.minecraft.client.gui.components.WidgetSprites(
+ new ResourceLocation("widget/button"), // normal
+ new ResourceLocation("widget/button_disabled"), // disabled & !focused
+ new ResourceLocation("widget/button_highlighted"), // !disabled & focused
+ new ResourceLocation("widget/slider_highlighted") // disabled & focused
+ );
+ /*?} else {*//*
+ private static final ResourceLocation SLIDER_LOCATION = new ResourceLocation("textures/gui/slider.png");
+ *//*?}*/
+
+ public static void render(GuiGraphics graphics, int x, int y, int width, int height, boolean enabled, boolean focused) {
+ /*? if >1.20.1 {*/
+ graphics.blitSprite(SPRITES.get(enabled, focused), x, y, width, height);
+ /*?} else {*//*
+ int textureV;
+ if (enabled) {
+ textureV = focused ? 60 : 40;
+ } else {
+ textureV = focused ? 20 : 0;
+ }
+
+ RenderSystem.setShaderColor(1f, 1f, 1f, 1f);
+ graphics.blitNineSliced(SLIDER_LOCATION, x, y, width, height, 20, 4, 200, 20, 0, textureV);
+ *//*?}*/
+ }
+}
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/utils/GuiUtils.java b/src/main/java/dev/isxander/yacl3/gui/utils/GuiUtils.java
index 2910d0f..2910d0f 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/utils/GuiUtils.java
+++ b/src/main/java/dev/isxander/yacl3/gui/utils/GuiUtils.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/utils/ItemRegistryHelper.java b/src/main/java/dev/isxander/yacl3/gui/utils/ItemRegistryHelper.java
index 3c4f03a..3c4f03a 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/utils/ItemRegistryHelper.java
+++ b/src/main/java/dev/isxander/yacl3/gui/utils/ItemRegistryHelper.java
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/utils/UndoRedoHelper.java b/src/main/java/dev/isxander/yacl3/gui/utils/UndoRedoHelper.java
index 3328c16..3328c16 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/utils/UndoRedoHelper.java
+++ b/src/main/java/dev/isxander/yacl3/gui/utils/UndoRedoHelper.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/ButtonOptionImpl.java b/src/main/java/dev/isxander/yacl3/impl/ButtonOptionImpl.java
index 170b8e0..170b8e0 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/ButtonOptionImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/ButtonOptionImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/ConfigCategoryImpl.java b/src/main/java/dev/isxander/yacl3/impl/ConfigCategoryImpl.java
index e79d9eb..400abf6 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/ConfigCategoryImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/ConfigCategoryImpl.java
@@ -5,9 +5,7 @@ import dev.isxander.yacl3.api.*;
import dev.isxander.yacl3.impl.utils.YACLConstants;
import net.minecraft.network.chat.CommonComponents;
import net.minecraft.network.chat.Component;
-import net.minecraft.network.chat.ComponentContents;
import net.minecraft.network.chat.MutableComponent;
-import net.minecraft.network.chat.contents.PlainTextContents;
import org.apache.commons.lang3.Validate;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
@@ -121,7 +119,7 @@ public final class ConfigCategoryImpl implements ConfigCategory {
MutableComponent concatenatedTooltip = Component.empty();
boolean first = true;
for (Component line : tooltipLines) {
- if (line.getContents() == PlainTextContents.EMPTY)
+ if (line.getContents() == CommonComponents.EMPTY.getContents())
continue;
if (!first) concatenatedTooltip.append("\n");
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/GenericBindingImpl.java b/src/main/java/dev/isxander/yacl3/impl/GenericBindingImpl.java
index 972c891..972c891 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/GenericBindingImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/GenericBindingImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/HiddenNameListOptionEntry.java b/src/main/java/dev/isxander/yacl3/impl/HiddenNameListOptionEntry.java
index 64588f2..64588f2 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/HiddenNameListOptionEntry.java
+++ b/src/main/java/dev/isxander/yacl3/impl/HiddenNameListOptionEntry.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/LabelOptionImpl.java b/src/main/java/dev/isxander/yacl3/impl/LabelOptionImpl.java
index 2bd2e10..2bd2e10 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/LabelOptionImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/LabelOptionImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/ListOptionEntryImpl.java b/src/main/java/dev/isxander/yacl3/impl/ListOptionEntryImpl.java
index 1cd5e55..1cd5e55 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/ListOptionEntryImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/ListOptionEntryImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/ListOptionImpl.java b/src/main/java/dev/isxander/yacl3/impl/ListOptionImpl.java
index c77d55f..c77d55f 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/ListOptionImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/ListOptionImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/OptionDescriptionImpl.java b/src/main/java/dev/isxander/yacl3/impl/OptionDescriptionImpl.java
index 67fa6a6..67fa6a6 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/OptionDescriptionImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/OptionDescriptionImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/OptionGroupImpl.java b/src/main/java/dev/isxander/yacl3/impl/OptionGroupImpl.java
index 7805b29..7805b29 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/OptionGroupImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/OptionGroupImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/OptionImpl.java b/src/main/java/dev/isxander/yacl3/impl/OptionImpl.java
index afe9517..afe9517 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/OptionImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/OptionImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/PlaceholderCategoryImpl.java b/src/main/java/dev/isxander/yacl3/impl/PlaceholderCategoryImpl.java
index 5e836a3..5e836a3 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/PlaceholderCategoryImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/PlaceholderCategoryImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/SafeBinding.java b/src/main/java/dev/isxander/yacl3/impl/SafeBinding.java
index c55d2be..c55d2be 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/SafeBinding.java
+++ b/src/main/java/dev/isxander/yacl3/impl/SafeBinding.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/YetAnotherConfigLibImpl.java b/src/main/java/dev/isxander/yacl3/impl/YetAnotherConfigLibImpl.java
index 0be02a7..0be02a7 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/YetAnotherConfigLibImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/YetAnotherConfigLibImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/AbstractControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/AbstractControllerBuilderImpl.java
index 66c025a..66c025a 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/AbstractControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/AbstractControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/BooleanControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/BooleanControllerBuilderImpl.java
index 063a177..063a177 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/BooleanControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/BooleanControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/ColorControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/ColorControllerBuilderImpl.java
index 9412165..9412165 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/ColorControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/ColorControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/CyclingListControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/CyclingListControllerBuilderImpl.java
index 8e2e481..8e2e481 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/CyclingListControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/CyclingListControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/DoubleFieldControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/DoubleFieldControllerBuilderImpl.java
index 8d84e7d..8d84e7d 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/DoubleFieldControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/DoubleFieldControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/DoubleSliderControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/DoubleSliderControllerBuilderImpl.java
index b696d57..b696d57 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/DoubleSliderControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/DoubleSliderControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/DropdownStringControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/DropdownStringControllerBuilderImpl.java
index b300a6a..b300a6a 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/DropdownStringControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/DropdownStringControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/EnumControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/EnumControllerBuilderImpl.java
index 04ee2a0..04ee2a0 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/EnumControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/EnumControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/EnumDropdownControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/EnumDropdownControllerBuilderImpl.java
index 4ac063f..4ac063f 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/EnumDropdownControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/EnumDropdownControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/FloatFieldControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/FloatFieldControllerBuilderImpl.java
index 08fefd0..08fefd0 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/FloatFieldControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/FloatFieldControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/FloatSliderControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/FloatSliderControllerBuilderImpl.java
index 9b2d75b..9b2d75b 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/FloatSliderControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/FloatSliderControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/IntegerFieldControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/IntegerFieldControllerBuilderImpl.java
index 1435c49..1435c49 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/IntegerFieldControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/IntegerFieldControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/IntegerSliderControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/IntegerSliderControllerBuilderImpl.java
index b9395a0..b9395a0 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/IntegerSliderControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/IntegerSliderControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/ItemControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/ItemControllerBuilderImpl.java
index 9a817fb..9a817fb 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/ItemControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/ItemControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/LongFieldControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/LongFieldControllerBuilderImpl.java
index c7a3ea4..c7a3ea4 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/LongFieldControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/LongFieldControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/LongSliderControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/LongSliderControllerBuilderImpl.java
index 5eda424..5eda424 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/LongSliderControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/LongSliderControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/StringControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/StringControllerBuilderImpl.java
index a0f51b9..a0f51b9 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/StringControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/StringControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/controller/TickBoxControllerBuilderImpl.java b/src/main/java/dev/isxander/yacl3/impl/controller/TickBoxControllerBuilderImpl.java
index 3b29719..3b29719 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/controller/TickBoxControllerBuilderImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/controller/TickBoxControllerBuilderImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/utils/DimensionIntegerImpl.java b/src/main/java/dev/isxander/yacl3/impl/utils/DimensionIntegerImpl.java
index 7d29bbc..7d29bbc 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/utils/DimensionIntegerImpl.java
+++ b/src/main/java/dev/isxander/yacl3/impl/utils/DimensionIntegerImpl.java
diff --git a/common/src/main/java/dev/isxander/yacl3/impl/utils/YACLConstants.java b/src/main/java/dev/isxander/yacl3/impl/utils/YACLConstants.java
index 5ff1b79..5ff1b79 100644
--- a/common/src/main/java/dev/isxander/yacl3/impl/utils/YACLConstants.java
+++ b/src/main/java/dev/isxander/yacl3/impl/utils/YACLConstants.java
diff --git a/common/src/main/java/dev/isxander/yacl3/mixin/AbstractSelectionListMixin.java b/src/main/java/dev/isxander/yacl3/mixin/AbstractSelectionListMixin.java
index 471fa19..471fa19 100644
--- a/common/src/main/java/dev/isxander/yacl3/mixin/AbstractSelectionListMixin.java
+++ b/src/main/java/dev/isxander/yacl3/mixin/AbstractSelectionListMixin.java
diff --git a/fabric/src/main/java/dev/isxander/yacl3/fabric/mixin/ContainerEventHandlerMixin.java b/src/main/java/dev/isxander/yacl3/mixin/ContainerEventHandlerMixin.java
index 7e1be75..bd5ada0 100644
--- a/fabric/src/main/java/dev/isxander/yacl3/fabric/mixin/ContainerEventHandlerMixin.java
+++ b/src/main/java/dev/isxander/yacl3/mixin/ContainerEventHandlerMixin.java
@@ -1,4 +1,5 @@
-package dev.isxander.yacl3.fabric.mixin;
+/*? if !forge {*/
+package dev.isxander.yacl3.mixin;
import net.minecraft.client.gui.components.events.ContainerEventHandler;
import net.minecraft.client.gui.components.events.GuiEventListener;
@@ -14,18 +15,13 @@ import org.spongepowered.asm.mixin.injection.Redirect;
import java.util.List;
-/**
- * This is in Fabric-only because only the Fabric fork of mixin supports @Redirect on interfaces.
- * This will change in the next release of Mixin.
- */
+
@Mixin(ContainerEventHandler.class)
public interface ContainerEventHandlerMixin {
- /**
- * This mixin is used to prevent the tab bar from being focused when navigating left or right
- * through the YACL options screen. This can also apply to vanilla as navigating left or right
- * should never result in focusing the always-at-the-top tab bar.
- * Without this, navigating right from the option list focuses the tab bar, not the action buttons/description.
- */
+ // This mixin is used to prevent the tab bar from being focused when navigating left or right
+ // through the YACL options screen. This can also apply to vanilla as navigating left or right
+ // should never result in focusing the always-at-the-top tab bar.
+ // Without this, navigating right from the option list focuses the tab bar, not the action buttons/description.
@Redirect(method = {"nextFocusPathVaguelyInDirection", "nextFocusPathInDirection"}, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/events/ContainerEventHandler;children()Ljava/util/List;"))
default List<?> modifyFocusCandidates(ContainerEventHandler instance, ScreenRectangle screenArea, ScreenDirection direction, @Nullable GuiEventListener focused, FocusNavigationEvent event) {
if (direction.getAxis() == ScreenAxis.HORIZONTAL)
@@ -33,3 +29,9 @@ public interface ContainerEventHandlerMixin {
return instance.children();
}
}
+/*?} else {*//*
+@Mixin(targets = {})
+public class ContainerEventHandlerMixin {
+
+}
+*//*?}*/
diff --git a/common/src/main/java/dev/isxander/yacl3/mixin/MinecraftMixin.java b/src/main/java/dev/isxander/yacl3/mixin/MinecraftMixin.java
index 45bc314..45bc314 100644
--- a/common/src/main/java/dev/isxander/yacl3/mixin/MinecraftMixin.java
+++ b/src/main/java/dev/isxander/yacl3/mixin/MinecraftMixin.java
diff --git a/common/src/main/java/dev/isxander/yacl3/mixin/OptionInstanceAccessor.java b/src/main/java/dev/isxander/yacl3/mixin/OptionInstanceAccessor.java
index 429e383..429e383 100644
--- a/common/src/main/java/dev/isxander/yacl3/mixin/OptionInstanceAccessor.java
+++ b/src/main/java/dev/isxander/yacl3/mixin/OptionInstanceAccessor.java
diff --git a/src/main/java/dev/isxander/yacl3/mixin/TabNavigationBarAccessor.java b/src/main/java/dev/isxander/yacl3/mixin/TabNavigationBarAccessor.java
new file mode 100644
index 0000000..388407b
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl3/mixin/TabNavigationBarAccessor.java
@@ -0,0 +1,16 @@
+package dev.isxander.yacl3.mixin;
+
+import net.minecraft.client.gui.components.tabs.TabNavigationBar;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(TabNavigationBar.class)
+public interface TabNavigationBarAccessor {
+ /*? if >1.20.4 {*//*
+ @Accessor
+ net.minecraft.client.gui.layouts.LinearLayout getLayout();
+ *//*? } else {*/
+ @Accessor
+ net.minecraft.client.gui.layouts.GridLayout getLayout();
+ /*?}*/
+}
diff --git a/common/src/main/java/dev/isxander/yacl3/platform/Env.java b/src/main/java/dev/isxander/yacl3/platform/Env.java
index 276d294..276d294 100644
--- a/common/src/main/java/dev/isxander/yacl3/platform/Env.java
+++ b/src/main/java/dev/isxander/yacl3/platform/Env.java
diff --git a/src/main/java/dev/isxander/yacl3/platform/PlatformEntrypoint.java b/src/main/java/dev/isxander/yacl3/platform/PlatformEntrypoint.java
new file mode 100644
index 0000000..6231b20
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl3/platform/PlatformEntrypoint.java
@@ -0,0 +1,42 @@
+package dev.isxander.yacl3.platform;
+
+import dev.isxander.yacl3.gui.image.YACLImageReloadListener;
+
+/*? if fabric {*/
+import net.fabricmc.api.ClientModInitializer;
+import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
+import net.minecraft.server.packs.PackType;
+
+public class PlatformEntrypoint implements ClientModInitializer {
+ @Override
+ public void onInitializeClient() {
+ ResourceManagerHelper.get(PackType.CLIENT_RESOURCES).registerReloadListener(new YACLImageReloadListener());
+ }
+}
+/*?} elif neoforge {*//*
+import net.neoforged.bus.api.IEventBus;
+import net.neoforged.fml.common.Mod;
+import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent;
+
+@Mod("yet_another_config_lib_v3")
+public class PlatformEntrypoint {
+ public PlatformEntrypoint(IEventBus modEventBus) {
+ modEventBus.addListener(RegisterClientReloadListenersEvent.class, event -> {
+ event.registerReloadListener(new YACLImageReloadListener());
+ });
+ }
+}
+*//*?} elif forge {*//*
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.client.event.RegisterClientReloadListenersEvent;
+import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
+
+@Mod("yet_another_config_lib_v3")
+public class PlatformEntrypoint {
+ public PlatformEntrypoint() {
+ FMLJavaModLoadingContext.get().getModEventBus().<RegisterClientReloadListenersEvent>addListener(event -> {
+ event.registerReloadListener(new YACLImageReloadListener());
+ });
+ }
+}
+*//*?}*/ \ No newline at end of file
diff --git a/src/main/java/dev/isxander/yacl3/platform/YACLPlatform.java b/src/main/java/dev/isxander/yacl3/platform/YACLPlatform.java
new file mode 100644
index 0000000..d134e70
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl3/platform/YACLPlatform.java
@@ -0,0 +1,45 @@
+package dev.isxander.yacl3.platform;
+
+/*?if fabric {*/
+import net.fabricmc.loader.api.FabricLoader;
+/*?} elif neoforge {*//*
+import net.neoforged.fml.loading.FMLEnvironment;
+import net.neoforged.fml.loading.FMLPaths;
+*//*?} elif forge {*//*
+import net.minecraftforge.fml.loading.FMLEnvironment;
+import net.minecraftforge.fml.loading.FMLPaths;
+*//*?}*/
+
+import java.nio.file.Path;
+
+public final class YACLPlatform {
+ public static Env getEnvironment() {
+ /*?if fabric {*/
+ return switch (FabricLoader.getInstance().getEnvironmentType()) {
+ case CLIENT -> Env.CLIENT;
+ case SERVER -> Env.SERVER;
+ };
+ /*?} elif forge-like {*//*
+ return switch (FMLEnvironment.dist) {
+ case CLIENT -> Env.CLIENT;
+ case DEDICATED_SERVER -> Env.SERVER;
+ };
+ *//*?}*/
+ }
+
+ public static Path getConfigDir() {
+ /*?if fabric {*/
+ return FabricLoader.getInstance().getConfigDir();
+ /*?} elif forge-like {*//*
+ return FMLPaths.CONFIGDIR.get();
+ *//*?}*/
+ }
+
+ public static boolean isDevelopmentEnv() {
+ /*?if fabric {*/
+ return FabricLoader.getInstance().isDevelopmentEnvironment();
+ /*?} elif forge-like {*//*
+ return !FMLEnvironment.production;
+ *//*?}*/
+ }
+}
diff --git a/neoforge/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml
index b130a4e..b130a4e 100644
--- a/neoforge/src/main/resources/META-INF/mods.toml
+++ b/src/main/resources/META-INF/mods.toml
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/be_by.json b/src/main/resources/assets/yet_another_config_lib/lang/be_by.json
index 16f84f0..16f84f0 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/be_by.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/be_by.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/el_gr.json b/src/main/resources/assets/yet_another_config_lib/lang/el_gr.json
index b7bc2d2..b7bc2d2 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/el_gr.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/el_gr.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/en_us.json b/src/main/resources/assets/yet_another_config_lib/lang/en_us.json
index c04d29e..c04d29e 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/en_us.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/en_us.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/et_ee.json b/src/main/resources/assets/yet_another_config_lib/lang/et_ee.json
index 5f5274a..5f5274a 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/et_ee.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/et_ee.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/fr_fr.json b/src/main/resources/assets/yet_another_config_lib/lang/fr_fr.json
index bc069cf..bc069cf 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/fr_fr.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/fr_fr.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/it_it.json b/src/main/resources/assets/yet_another_config_lib/lang/it_it.json
index 1489071..1489071 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/it_it.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/it_it.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/nl_nl.json b/src/main/resources/assets/yet_another_config_lib/lang/nl_nl.json
index c432cda..c432cda 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/nl_nl.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/nl_nl.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/pl_pl.json b/src/main/resources/assets/yet_another_config_lib/lang/pl_pl.json
index 49074ea..49074ea 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/pl_pl.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/pl_pl.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/pt_br.json b/src/main/resources/assets/yet_another_config_lib/lang/pt_br.json
index 9d4ef8d..9d4ef8d 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/pt_br.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/pt_br.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/ru_ru.json b/src/main/resources/assets/yet_another_config_lib/lang/ru_ru.json
index 5725d34..5725d34 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/ru_ru.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/ru_ru.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/sl_si.json b/src/main/resources/assets/yet_another_config_lib/lang/sl_si.json
index 743dd4d..743dd4d 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/sl_si.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/sl_si.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/tt_ru.json b/src/main/resources/assets/yet_another_config_lib/lang/tt_ru.json
index 06d005a..06d005a 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/tt_ru.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/tt_ru.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/zh_cn.json b/src/main/resources/assets/yet_another_config_lib/lang/zh_cn.json
index 9307c9b..9307c9b 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/zh_cn.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/zh_cn.json
diff --git a/common/src/main/resources/assets/yet_another_config_lib/lang/zh_tw.json b/src/main/resources/assets/yet_another_config_lib/lang/zh_tw.json
index 0ac792f..0ac792f 100644
--- a/common/src/main/resources/assets/yet_another_config_lib/lang/zh_tw.json
+++ b/src/main/resources/assets/yet_another_config_lib/lang/zh_tw.json
diff --git a/fabric/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
index b3dd73b..bc49bd9 100644
--- a/fabric/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -16,8 +16,8 @@
"license": "LGPL-3.0-or-later",
"environment": "*",
"depends": {
- "fabricloader": ">=0.14.0",
-
+ "fabricloader": ">=0.15.0",
+ "minecraft": "${mc}",
"java": ">=17",
"fabric-resource-loader-v0": "*"
},
@@ -27,7 +27,7 @@
],
"entrypoints": {
"client": [
- "dev.isxander.yacl3.platform.fabric.YACLFabricEntrypoint"
+ "dev.isxander.yacl3.platform.PlatformEntrypoint"
]
},
"custom": {
diff --git a/neoforge/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta
index a9c6340..a9c6340 100644
--- a/neoforge/src/main/resources/pack.mcmeta
+++ b/src/main/resources/pack.mcmeta
diff --git a/common/src/main/resources/yacl-128x.png b/src/main/resources/yacl-128x.png
index c86981c..c86981c 100644
--- a/common/src/main/resources/yacl-128x.png
+++ b/src/main/resources/yacl-128x.png
Binary files differ
diff --git a/fabric/src/main/resources/yacl-fabric.mixins.json b/src/main/resources/yacl-fabric.mixins.json
index 5374dd3..f755f0f 100644
--- a/fabric/src/main/resources/yacl-fabric.mixins.json
+++ b/src/main/resources/yacl-fabric.mixins.json
@@ -1,6 +1,6 @@
{
"required": true,
- "package": "dev.isxander.yacl3.fabric.mixin",
+ "package": "dev.isxander.yacl3.mixin",
"compatibilityLevel": "JAVA_17",
"injectors": {
"defaultRequire": 1
diff --git a/common/src/main/resources/yacl.accesswidener b/src/main/resources/yacl.accesswidener
index 54b0c13..7c0e2ca 100644
--- a/common/src/main/resources/yacl.accesswidener
+++ b/src/main/resources/yacl.accesswidener
@@ -4,10 +4,9 @@ extendable method net/minecraft/client/gui/components/AbstractSelectionList chil
extendable method net/minecraft/client/gui/components/AbstractSelectionList getEntryAtPosition (DD)Lnet/minecraft/client/gui/components/AbstractSelectionList$Entry;
accessible class net/minecraft/client/gui/components/AbstractSelectionList$Entry
accessible method net/minecraft/client/gui/components/tabs/TabNavigationBar <init> (ILnet/minecraft/client/gui/components/tabs/TabManager;Ljava/lang/Iterable;)V
-accessible field net/minecraft/client/gui/components/tabs/TabNavigationBar layout Lnet/minecraft/client/gui/layouts/LinearLayout;
+accessible field net/minecraft/client/gui/components/tabs/TabNavigationBar layout Lnet/minecraft/client/gui/layouts/GridLayout;
accessible field net/minecraft/client/gui/components/tabs/TabNavigationBar width I
accessible field net/minecraft/client/gui/components/tabs/TabNavigationBar tabManager Lnet/minecraft/client/gui/components/tabs/TabManager;
accessible field net/minecraft/client/gui/components/tabs/TabNavigationBar tabs Lcom/google/common/collect/ImmutableList;
accessible field net/minecraft/client/gui/components/tabs/TabNavigationBar tabButtons Lcom/google/common/collect/ImmutableList;
accessible method net/minecraft/client/gui/components/Tooltip <init> (Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/Component;)V
-accessible field net/minecraft/client/gui/components/AbstractSelectionList scrolling Z
diff --git a/common/src/main/resources/yacl.mixins.json b/src/main/resources/yacl.mixins.json
index 0225b44..2385a1b 100644
--- a/common/src/main/resources/yacl.mixins.json
+++ b/src/main/resources/yacl.mixins.json
@@ -8,6 +8,7 @@
"client": [
"AbstractSelectionListMixin",
"MinecraftMixin",
- "OptionInstanceAccessor"
+ "OptionInstanceAccessor",
+ "TabNavigationBarAccessor"
]
}
diff --git a/test-common/src/main/java/dev/isxander/yacl3/test/AutogenConfigTest.java b/src/testmod/java/dev/isxander/yacl3/test/AutogenConfigTest.java
index b3b49b6..b3b49b6 100644
--- a/test-common/src/main/java/dev/isxander/yacl3/test/AutogenConfigTest.java
+++ b/src/testmod/java/dev/isxander/yacl3/test/AutogenConfigTest.java
diff --git a/test-common/src/main/java/dev/isxander/yacl3/test/ConfigTest.java b/src/testmod/java/dev/isxander/yacl3/test/ConfigTest.java
index a8f49b0..a8f49b0 100644
--- a/test-common/src/main/java/dev/isxander/yacl3/test/ConfigTest.java
+++ b/src/testmod/java/dev/isxander/yacl3/test/ConfigTest.java
diff --git a/src/testmod/java/dev/isxander/yacl3/test/Entrypoint.java b/src/testmod/java/dev/isxander/yacl3/test/Entrypoint.java
new file mode 100644
index 0000000..2c4875f
--- /dev/null
+++ b/src/testmod/java/dev/isxander/yacl3/test/Entrypoint.java
@@ -0,0 +1,23 @@
+/*? if neoforge { *//*
+package dev.isxander.yacl3.test;
+
+import net.neoforged.fml.common.Mod;
+
+@Mod("yacl_test")
+public class Entrypoint {
+ public Entrypoint() {
+
+ }
+}
+*//*?} elif forge {*//*
+package dev.isxander.yacl3.test;
+
+import net.minecraftforge.fml.common.Mod;
+
+@Mod("yacl_test")
+public class Entrypoint {
+ public Entrypoint() {
+
+ }
+}
+*//*?}*/
diff --git a/test-common/src/main/java/dev/isxander/yacl3/test/GuiTest.java b/src/testmod/java/dev/isxander/yacl3/test/GuiTest.java
index f81db33..473b04a 100644
--- a/test-common/src/main/java/dev/isxander/yacl3/test/GuiTest.java
+++ b/src/testmod/java/dev/isxander/yacl3/test/GuiTest.java
@@ -83,7 +83,7 @@ public class GuiTest {
.append(Component.literal("e").withStyle(style -> style.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.literal("e")))))
.withStyle(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://isxander.dev")))
)
- .webpImage(new ResourceLocation("yacl3", "textures/reach-around-placement.webp"))
+ .webpImage(new ResourceLocation("yacl3", "reach-around-placement.webp"))
.build())
.binding(
defaults.booleanToggle,
@@ -100,7 +100,7 @@ public class GuiTest {
.name(Component.literal("Custom Boolean Toggle"))
.description(val -> OptionDescription.createBuilder()
.text(Component.literal("You can customize controllers like so! YACL is truly infinitely customizable! This tooltip is long in order to demonstrate the cool, smooth scrolling of these descriptions. Did you know, they are also super clickable?! I know, cool right, YACL 3.x really is amazing."))
- .webpImage(new ResourceLocation("yacl3", "textures/sample-1.webp"))
+ .image(Path.of("D:\\Xander\\Downloads\\_MG_0860-Enhanced-NR.png"), new ResourceLocation("yacl", "f.webp")) // TODO: Add img file to git?
.build())
.binding(
defaults.customBooleanToggle,
@@ -114,10 +114,7 @@ public class GuiTest {
.build())
.option(Option.<Boolean>createBuilder()
.name(Component.literal("Tick Box"))
- .description(OptionDescription.createBuilder()
- .text(Component.literal("There are even alternate methods of displaying the same data type!"))
- .webpImage(new ResourceLocation("yacl3", "textures/sample-2.webp"))
- .build())
+ .description(OptionDescription.of(Component.literal("There are even alternate methods of displaying the same data type!")))
.binding(
defaults.tickbox,
() -> config.tickbox,
@@ -130,9 +127,6 @@ public class GuiTest {
.name(Component.literal("Slider Controllers"))
.option(Option.<Integer>createBuilder()
.name(Component.literal("Int Slider"))
- .description(OptionDescription.createBuilder()
- .webpImage(new ResourceLocation("yacl3", "textures/sample-3.webp"))
- .build())
.binding(
defaults.intSlider,
() -> config.intSlider,
@@ -142,9 +136,6 @@ public class GuiTest {
.build())
.option(Option.<Double>createBuilder()
.name(Component.literal("Double Slider"))
- .description(OptionDescription.createBuilder()
- .webpImage(new ResourceLocation("yacl3", "textures/sample-4.webp"))
- .build())
.binding(
defaults.doubleSlider,
() -> config.doubleSlider,
@@ -154,9 +145,6 @@ public class GuiTest {
.build())
.option(Option.<Float>createBuilder()
.name(Component.literal("Float Slider"))
- .description(OptionDescription.createBuilder()
- .webpImage(new ResourceLocation("yacl3", "textures/sample-5.webp"))
- .build())
.binding(
defaults.floatSlider,
() -> config.floatSlider,
@@ -294,7 +282,7 @@ public class GuiTest {
.name(Component.literal("Options that aren't really options"))
.option(ButtonOption.createBuilder()
.name(Component.literal("Button \"Option\""))
- .action((screen, opt) -> SystemToast.add(Minecraft.getInstance().getToasts(), SystemToast.SystemToastId.PERIODIC_NOTIFICATION, Component.literal("Button Pressed"), Component.literal("Button option was invoked!")))
+ .action((screen, opt) -> opt.setAvailable(false))
.build())
.option(LabelOption.create(
Component.empty()
diff --git a/test-common/src/main/java/dev/isxander/yacl3/test/mixin/TitleScreenMixin.java b/src/testmod/java/dev/isxander/yacl3/test/mixin/TitleScreenMixin.java
index c3fddbc..c3fddbc 100644
--- a/test-common/src/main/java/dev/isxander/yacl3/test/mixin/TitleScreenMixin.java
+++ b/src/testmod/java/dev/isxander/yacl3/test/mixin/TitleScreenMixin.java
diff --git a/test-neoforge/src/main/resources/META-INF/mods.toml b/src/testmod/resources/META-INF/mods.toml
index 6cb1824..74e4078 100644
--- a/test-neoforge/src/main/resources/META-INF/mods.toml
+++ b/src/testmod/resources/META-INF/mods.toml
@@ -6,12 +6,11 @@ license = "LGPL-3.0-or-later"
[[mods]]
modId = "yacl_test"
version = "1"
-displayName = "YACL Test"
-authors = "isXander"
+displayName = "YACL Testmod"
description = '''
Test mod for YACL
'''
-#logoFile = ""
+authors = "isXander"
[[mixins]]
config = "yacl-test.mixins.json"
@@ -19,13 +18,8 @@ config = "yacl-test.mixins.json"
[[dependencies.yacl_test]]
modId = "neoforge"
mandatory = true
-versionRange = "[20,)"
-ordering = "NONE"
-side = "BOTH"
[[dependencies.yacl_test]]
modId = "minecraft"
mandatory = true
-versionRange = "1.20.4"
-ordering = "NONE"
-side = "BOTH"
+
diff --git a/test-common/src/main/resources/assets/yacl3/textures/reach-around-placement.webp b/src/testmod/resources/assets/yacl3/textures/reach-around-placement.webp
index 1937809..1937809 100644
--- a/test-common/src/main/resources/assets/yacl3/textures/reach-around-placement.webp
+++ b/src/testmod/resources/assets/yacl3/textures/reach-around-placement.webp
Binary files differ
diff --git a/test-common/src/main/resources/assets/yacl3/textures/sample-1.webp b/src/testmod/resources/assets/yacl3/textures/sample-1.webp
index 0da983e..0da983e 100644
--- a/test-common/src/main/resources/assets/yacl3/textures/sample-1.webp
+++ b/src/testmod/resources/assets/yacl3/textures/sample-1.webp
Binary files differ
diff --git a/test-common/src/main/resources/assets/yacl3/textures/sample-2.webp b/src/testmod/resources/assets/yacl3/textures/sample-2.webp
index e887f8c..e887f8c 100644
--- a/test-common/src/main/resources/assets/yacl3/textures/sample-2.webp
+++ b/src/testmod/resources/assets/yacl3/textures/sample-2.webp
Binary files differ
diff --git a/test-common/src/main/resources/assets/yacl3/textures/sample-3.webp b/src/testmod/resources/assets/yacl3/textures/sample-3.webp
index eda78a9..eda78a9 100644
--- a/test-common/src/main/resources/assets/yacl3/textures/sample-3.webp
+++ b/src/testmod/resources/assets/yacl3/textures/sample-3.webp
Binary files differ
diff --git a/test-common/src/main/resources/assets/yacl3/textures/sample-4.webp b/src/testmod/resources/assets/yacl3/textures/sample-4.webp
index 8bbe329..8bbe329 100644
--- a/test-common/src/main/resources/assets/yacl3/textures/sample-4.webp
+++ b/src/testmod/resources/assets/yacl3/textures/sample-4.webp
Binary files differ
diff --git a/test-common/src/main/resources/assets/yacl3/textures/sample-5.webp b/src/testmod/resources/assets/yacl3/textures/sample-5.webp
index ed91379..ed91379 100644
--- a/test-common/src/main/resources/assets/yacl3/textures/sample-5.webp
+++ b/src/testmod/resources/assets/yacl3/textures/sample-5.webp
Binary files differ
diff --git a/src/testmod/resources/fabric.mod.json b/src/testmod/resources/fabric.mod.json
new file mode 100644
index 0000000..fca48ab
--- /dev/null
+++ b/src/testmod/resources/fabric.mod.json
@@ -0,0 +1,33 @@
+{
+ "schemaVersion": 1,
+ "id": "yacl_test",
+ "version": "1",
+ "name": "YACL Testmod",
+ "description": "",
+ "authors": [
+ "isXander"
+ ],
+ "contact": {
+ "homepage": "https://isxander.dev",
+ "issues": "https://github.com/${github}/issues",
+ "sources": "https://github.com/${github}"
+ },
+ "license": "LGPL-3.0-or-later",
+ "environment": "*",
+ "depends": {
+ "yet_another_config_lib_v3": "*"
+ },
+ "mixins": [
+ "yacl-test.mixins.json"
+ ],
+ "entrypoints": {
+ "client": [
+ "dev.isxander.yacl3.platform.PlatformEntrypoint"
+ ]
+ },
+ "custom": {
+ "modmenu": {
+ "badges": ["library"]
+ }
+ }
+}
diff --git a/test-neoforge/src/main/resources/pack.mcmeta b/src/testmod/resources/pack.mcmeta
index 8fbe236..07adb97 100644
--- a/test-neoforge/src/main/resources/pack.mcmeta
+++ b/src/testmod/resources/pack.mcmeta
@@ -1,6 +1,6 @@
{
"pack": {
- "description": "Test YACL",
+ "description": "YACL test",
"pack_format": 14
}
-}
+} \ No newline at end of file
diff --git a/test-common/src/main/resources/yacl-test.mixins.json b/src/testmod/resources/yacl-test.mixins.json
index c7f9a71..c7f9a71 100644
--- a/test-common/src/main/resources/yacl-test.mixins.json
+++ b/src/testmod/resources/yacl-test.mixins.json
diff --git a/stonecutter.gradle.kts b/stonecutter.gradle.kts
new file mode 100644
index 0000000..155fae7
--- /dev/null
+++ b/stonecutter.gradle.kts
@@ -0,0 +1,14 @@
+plugins {
+ id("dev.kikugie.stonecutter")
+}
+stonecutter active "1.20.4-fabric" /* [SC] DO NOT EDIT */
+
+stonecutter registerChiseled tasks.register("chiseledBuild", stonecutter.chiseled) {
+ group = "mod"
+ ofTask("build")
+}
+
+stonecutter registerChiseled tasks.register("chiseledPublishMods", stonecutter.chiseled) {
+ group = "mod"
+ ofTask("releaseMod")
+}
diff --git a/test-common/.gitignore b/test-common/.gitignore
deleted file mode 100644
index b63da45..0000000
--- a/test-common/.gitignore
+++ /dev/null
@@ -1,42 +0,0 @@
-.gradle
-build/
-!gradle/wrapper/gradle-wrapper.jar
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### IntelliJ IDEA ###
-.idea/modules.xml
-.idea/jarRepositories.xml
-.idea/compiler.xml
-.idea/libraries/
-*.iws
-*.iml
-*.ipr
-out/
-!**/src/main/**/out/
-!**/src/test/**/out/
-
-### Eclipse ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-bin/
-!**/src/main/**/bin/
-!**/src/test/**/bin/
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-
-### VS Code ###
-.vscode/
-
-### Mac OS ###
-.DS_Store \ No newline at end of file
diff --git a/test-common/build.gradle.kts b/test-common/build.gradle.kts
deleted file mode 100644
index bd95f1e..0000000
--- a/test-common/build.gradle.kts
+++ /dev/null
@@ -1,25 +0,0 @@
-plugins {
- alias(libs.plugins.architectury.loom)
-}
-
-architectury {
- val enabledLoaders = rootProject.properties["loaders"].toString().split(",").map { it.trim() }
- common(enabledLoaders)
-}
-
-loom {
- silentMojangMappingsLicense()
-
- accessWidenerPath.set(project(":common").loom.accessWidenerPath)
-}
-
-dependencies {
- minecraft(libs.minecraft)
- mappings(loom.layered {
- officialMojangMappings()
- parchment(libs.parchment)
- })
- modImplementation(libs.fabric.loader)
-
- implementation(project(path = ":common", configuration = "namedElements"))
-}
diff --git a/test-fabric/.gitignore b/test-fabric/.gitignore
deleted file mode 100644
index b63da45..0000000
--- a/test-fabric/.gitignore
+++ /dev/null
@@ -1,42 +0,0 @@
-.gradle
-build/
-!gradle/wrapper/gradle-wrapper.jar
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### IntelliJ IDEA ###
-.idea/modules.xml
-.idea/jarRepositories.xml
-.idea/compiler.xml
-.idea/libraries/
-*.iws
-*.iml
-*.ipr
-out/
-!**/src/main/**/out/
-!**/src/test/**/out/
-
-### Eclipse ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-bin/
-!**/src/main/**/bin/
-!**/src/test/**/bin/
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-
-### VS Code ###
-.vscode/
-
-### Mac OS ###
-.DS_Store \ No newline at end of file
diff --git a/test-fabric/build.gradle.kts b/test-fabric/build.gradle.kts
deleted file mode 100644
index 17658cd..0000000
--- a/test-fabric/build.gradle.kts
+++ /dev/null
@@ -1,61 +0,0 @@
-plugins {
- alias(libs.plugins.architectury.loom)
- alias(libs.plugins.shadow)
-}
-
-architectury {
- platformSetupLoomIde()
- fabric()
-}
-
-loom {
- silentMojangMappingsLicense()
-
- accessWidenerPath.set(project(":common").loom.accessWidenerPath)
-}
-
-val common by configurations.registering
-val shadowCommon by configurations.registering
-configurations.compileClasspath.get().extendsFrom(common.get())
-configurations["developmentFabric"].extendsFrom(common.get())
-
-val minecraftVersion = libs.versions.minecraft.get()
-
-dependencies {
- minecraft(libs.minecraft)
- mappings(loom.layered {
- officialMojangMappings()
- parchment(libs.parchment)
- })
- modImplementation(libs.fabric.loader)
-
- implementation(libs.twelvemonkeys.imageio.core)
- implementation(libs.twelvemonkeys.imageio.webp)
- implementation(libs.bundles.quilt.parsers)
-
- "common"(project(path = ":test-common", configuration = "namedElements")) { isTransitive = false }
- implementation(project(path = ":fabric", configuration = "namedElements"))
-
- "common"(project(path = ":common", configuration = "namedElements")) { isTransitive = false }
-}
-
-tasks {
- shadowJar {
- exclude("architectury.common.json")
-
- configurations = listOf(shadowCommon.get())
- archiveClassifier.set("dev-shadow")
- }
-
- remapJar {
- injectAccessWidener.set(true)
- inputFile.set(shadowJar.get().archiveFile)
- dependsOn(shadowJar)
-
- archiveClassifier.set("fabric-$minecraftVersion")
- }
-
- jar {
- archiveClassifier.set("dev")
- }
-}
diff --git a/test-fabric/src/main/resources/fabric.mod.json b/test-fabric/src/main/resources/fabric.mod.json
deleted file mode 100644
index 83560f8..0000000
--- a/test-fabric/src/main/resources/fabric.mod.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "schemaVersion": 1,
- "id": "yacl_test",
- "version": "1",
- "name": "YACL Test",
- "license": "LGPL-3.0-or-later",
- "environment": "*",
- "entrypoints": {
- "modmenu": [
- "dev.isxander.yacl3.test.fabric.ModMenuEntrypoint"
- ]
- },
- "mixins": [
- "yacl-test.mixins.json"
- ]
-}
diff --git a/test-neoforge/.gitignore b/test-neoforge/.gitignore
deleted file mode 100644
index b63da45..0000000
--- a/test-neoforge/.gitignore
+++ /dev/null
@@ -1,42 +0,0 @@
-.gradle
-build/
-!gradle/wrapper/gradle-wrapper.jar
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### IntelliJ IDEA ###
-.idea/modules.xml
-.idea/jarRepositories.xml
-.idea/compiler.xml
-.idea/libraries/
-*.iws
-*.iml
-*.ipr
-out/
-!**/src/main/**/out/
-!**/src/test/**/out/
-
-### Eclipse ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-bin/
-!**/src/main/**/bin/
-!**/src/test/**/bin/
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-
-### VS Code ###
-.vscode/
-
-### Mac OS ###
-.DS_Store \ No newline at end of file
diff --git a/test-neoforge/build.gradle.kts b/test-neoforge/build.gradle.kts
deleted file mode 100644
index 32622d9..0000000
--- a/test-neoforge/build.gradle.kts
+++ /dev/null
@@ -1,77 +0,0 @@
-import org.gradle.kotlin.dsl.libs
-
-plugins {
- alias(libs.plugins.architectury.loom)
- alias(libs.plugins.shadow)
-}
-
-architectury {
- platformSetupLoomIde()
- neoForge()
-}
-
-loom {
- silentMojangMappingsLicense()
-
- accessWidenerPath.set(project(":common").loom.accessWidenerPath)
-
- neoForge {
-
- }
-
- mods {
- maybeCreate("forge").apply {
- sourceSet(project(":neoforge").sourceSets.main.get())
- }
- }
-}
-
-val common by configurations.registering
-val shadowCommon by configurations.registering
-configurations.compileClasspath.get().extendsFrom(common.get())
-configurations["developmentNeoForge"].extendsFrom(common.get())
-
-val minecraftVersion: String = libs.versions.minecraft.get()
-
-dependencies {
- minecraft(libs.minecraft)
- mappings(loom.layered {
- officialMojangMappings()
- parchment(libs.parchment)
- })
- neoForge(libs.neoforge)
-
- implementation(libs.twelvemonkeys.imageio.core)
- forgeRuntimeLibrary(libs.twelvemonkeys.imageio.core)
- implementation(libs.twelvemonkeys.imageio.webp)
- forgeRuntimeLibrary(libs.twelvemonkeys.imageio.webp)
- implementation(libs.bundles.quilt.parsers)
- forgeRuntimeLibrary(libs.bundles.quilt.parsers)
-
- "common"(project(path = ":test-common", configuration = "namedElements")) { isTransitive = false }
- implementation(project(path = ":neoforge", configuration = "namedElements")) { isTransitive = false }
-
- "common"(project(path = ":common", configuration = "namedElements")) { isTransitive = false }
-}
-
-tasks {
- shadowJar {
- exclude("fabric.mod.json")
- exclude("architectury.common.json")
-
- configurations = listOf(shadowCommon.get())
- archiveClassifier.set("dev-shadow")
- }
-
- remapJar {
- injectAccessWidener.set(true)
- inputFile.set(shadowJar.get().archiveFile)
- dependsOn(shadowJar)
-
- archiveClassifier.set("neoforge-$minecraftVersion")
- }
-
- jar {
- archiveClassifier.set("dev")
- }
-}
diff --git a/test-neoforge/gradle.properties b/test-neoforge/gradle.properties
deleted file mode 100644
index 7da18ea..0000000
--- a/test-neoforge/gradle.properties
+++ /dev/null
@@ -1 +0,0 @@
-loom.platform=neoforge
diff --git a/test-neoforge/src/main/java/dev/isxander/yacl3/test/forge/ForgeTest.java b/test-neoforge/src/main/java/dev/isxander/yacl3/test/forge/ForgeTest.java
deleted file mode 100644
index c27cdd8..0000000
--- a/test-neoforge/src/main/java/dev/isxander/yacl3/test/forge/ForgeTest.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package dev.isxander.yacl3.test.forge;
-
-import net.neoforged.fml.common.Mod;
-
-@Mod("yacl_test")
-public class ForgeTest {
- public ForgeTest() {
-
- }
-}
diff --git a/versions/1.20.1-fabric/gradle.properties b/versions/1.20.1-fabric/gradle.properties
new file mode 100644
index 0000000..2665843
--- /dev/null
+++ b/versions/1.20.1-fabric/gradle.properties
@@ -0,0 +1,5 @@
+loom.platform=fabric
+
+deps.quiltMappings=23
+deps.fabricApi=0.92.0+1.20.1
+fmj.mcDep=1.20.1 \ No newline at end of file
diff --git a/versions/1.20.1-forge/gradle.properties b/versions/1.20.1-forge/gradle.properties
new file mode 100644
index 0000000..36d4f13
--- /dev/null
+++ b/versions/1.20.1-forge/gradle.properties
@@ -0,0 +1,5 @@
+loom.platform=forge
+
+deps.quiltMappings=23
+deps.forge=1.20.1-47.2.23
+fmj.mcDep=1.20.1 \ No newline at end of file
diff --git a/versions/1.20.4-fabric/gradle.properties b/versions/1.20.4-fabric/gradle.properties
new file mode 100644
index 0000000..deb62e4
--- /dev/null
+++ b/versions/1.20.4-fabric/gradle.properties
@@ -0,0 +1,5 @@
+loom.platform=fabric
+
+deps.quiltMappings=3
+deps.fabricApi=0.96.11+1.20.4
+fmj.mcDep=1.20.4 \ No newline at end of file
diff --git a/versions/1.20.4-neoforge/gradle.properties b/versions/1.20.4-neoforge/gradle.properties
new file mode 100644
index 0000000..745c594
--- /dev/null
+++ b/versions/1.20.4-neoforge/gradle.properties
@@ -0,0 +1,5 @@
+loom.platform=neoforge
+
+deps.quiltMappings=3
+deps.neoforge=20.4.130-beta
+fmj.mcDep=1.20.3,1.20.4 \ No newline at end of file
diff --git a/versions/1.20.5-pre1-fabric/gradle.properties b/versions/1.20.5-pre1-fabric/gradle.properties
new file mode 100644
index 0000000..ce8ea68
--- /dev/null
+++ b/versions/1.20.5-pre1-fabric/gradle.properties
@@ -0,0 +1,5 @@
+loom.platform=fabric
+
+deps.quiltMappings=
+deps.fabricApi=0.96.15+1.20.5
+fmj.mcDep=~1.20.5- \ No newline at end of file