Skip to content

Configuration ModMenu et YACL

Vue d'ensemble

Stack Size Adjuster propose une interface graphique optionnelle via ModMenu et YetAnotherConfigLib (YACL v3), isolée par réflexion (GuiHelper.getOptionalYaclFactory) afin d'éviter tout plantage sur les serveurs dédiés dépourvus de YACL.


⚙️ Spécification du fichier de configuration

  • Chemin : config/stack-size-adjuster.json
  • Format : JSON avec suivi de version.

Schéma JSON et valeurs par défaut :

json
{
  "configVersion": 1,
  "items64Limit": 128,
  "items16Limit": 32,
  "items1Limit": 1,
  "maxDropEntities": 8
}

🖥️ Architecture de l'écran YACL 3.9.5

L'écran de réglages côté client est construit de manière réflexive dans YaclScreenHelper :

java
public class YaclScreenHelper {
    public static ConfigScreenFactory<?> createScreen() {
        return YaclScreenHelper::buildScreen;
    }

    private static Screen buildScreen(Screen parent) {
        StackSizeConfig config = StackSizeConfig.get();

        return YetAnotherConfigLib.createBuilder()
            .title(Component.translatable("config.stacksizeadjuster.title"))
            .category(ConfigCategory.createBuilder()
                .name(Component.translatable("config.stacksizeadjuster.category.general"))
                .group(OptionGroup.createBuilder()
                    .name(Component.translatable("config.stacksizeadjuster.group.categories"))
                    .option(Option.<Integer>createBuilder()
                        .name(Component.translatable("config.stacksizeadjuster.option.limit_64"))
                        .description(val -> {
                            if (val > 39768215) {
                                return OptionDescription.of(Component.translatable("config.stacksizeadjuster.option.warning", val));
                            }
                            return OptionDescription.of(Component.translatable("config.stacksizeadjuster.option.limit_64.description"));
                        })
                        .binding(128, () -> config.items64Limit, val -> config.items64Limit = val)
                        .controller(opt -> IntegerFieldControllerBuilder.create(opt).min(1).max(Integer.MAX_VALUE))
                        .build()
                    )
                    ...
                )
                .group(OptionGroup.createBuilder()
                    .name(Component.translatable("config.stacksizeadjuster.group.container_drops"))
                    .option(Option.<Integer>createBuilder()
                        .name(Component.translatable("config.stacksizeadjuster.option.max_drop_entities"))
                        .binding(8, () -> config.maxDropEntities, val -> config.maxDropEntities = val)
                        .customController(opt -> new IntegerSliderController(opt, 1, 64, 1))
                        .build()
                    )
                )
                .build()
            )
            .save(StackSizeConfig::save)
            .build()
            .generateScreen(parent);
    }
}

Notification d'avertissement

Si une valeur supérieure à $39,768,215$ est saisie, YACL affiche une infobulle d'avertissement sur les risques de débordement dans les grands coffres.

Official documentation & web portal for Dasik Igaijinn mods.