Flow Clientは、拡張性と型安全性を重視して設計された、モダンなMinecraftモジュールクライアントのフレームワークです。ジェネリクスを用いた独自の設定システムと、直感的なGUIコンポーネントを特徴としています。
Flow Clientは、モジュール開発者が最小限のコードで高度な機能を実装できるように設計されています。特に、設定(Settings)の保存・読み込み・UI表示を自動化する仕組みに重点を置いています。
- 追記
クライアントは以下の4つの階層で構成されています:
- ModuleManager: 全てのモジュールを統括・管理。
- Module / HudModule: 各機能の基底クラス。ライフサイクル(onEnable/onDisable)を管理。
- Setting: データの保持、バリデーション、JSONへのシリアライズを担当。
- Custom Widgets:
ClickableWidgetを継承し、各設定に最適化された操作を提供。
新しいモジュールを作成するには、Module または TextHudModule を継承します。
public class FpsHud extends TextHudModule {
public FpsHud() {
super("FPS", 2, 2, "FPS: $(fps)", List.of("fps"));
}
@Override
public Map<String, String> getValue() {
return Map.of("fps", String.valueOf(MinecraftClient.getInstance().getFps()));
}
}設定は各モジュールのコンストラクタで登録するだけで、保存対象およびGUIの表示対象になります。
- BooleanSetting: ON/OFFの切り替え。
- NumberSetting: 最小値・最大値の指定が可能。指定時は自動的にスライダーとしてUIに表示。
- StringSetting: 文字列入力に対応。
- ColorSetting: ARGB形式のカラー管理。
Screen クラスを継承した設定画面では、登録された設定に応じて適切なウィジェットが自動配置されます。
- BooleanSettingWidget: 視覚的な色変化を伴うトグルボタン。
- NumberSettingWidget:
- 上限あり:直感的なドラッグ操作ができるスライダー。
- 上限なし:数値バリデーション機能付きテキストボックス。
- StringSettingWidget:
TextFieldWidgetを内包したラベル付き入力欄。
- Language: Java 21+
- Library:
- Gson (Google) - JSONシリアライズ
- Minecraft SDK (Fabric)