頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


マイクラのCycleButton.builderの最小実装

Minecraftのmod(forge 1.17.1-37.1.1)でCycleButtonがようやく動いた。
CycleButton.onOffBuilder
CycleButton.booleanBuilder
↑この2つは取りうる値が2種類しかなくすんなりいけたのだが、選択肢が3つ以上ある場合にハマった。
もっともJavaに慣れてる人なら簡単だったのかもしれないけど。
Screenのサブクラス内のコードは以下のような感じで。
    private MyMode myMode = MyMode.MODE1;

private void createView() {
this.addRenderableWidget(CycleButton.builder(MyMode::getCurrentComponent)
.withValues(MyMode.values())
.withInitialValue(myMode)
.create(x, y, width, height, new TextComponent("Mode"), (p_169299_, p_169300_) -> {
this.myMode = p_169300_;
}));
}

public static enum MyMode implements StringRepresentable {
MODE1("mode 1"),
MODE2("mode 2"),
MODE3("mode 3");

private final String name;
private MyMode(String p_59455_) {
this.name = p_59455_;
}

@Override
public String getSerializedName() {
return this.name;
}

public TextComponent getCurrentComponent() {
return new TextComponent(this.name);
}
}

CycleButton
↑スクショ。クリックするたびに表示内容が変わります(これは画像なので変わらないけど)。
なお、1.18だとどうなのかはわかりません。1.18にアップデートしたら挙動がおかしくなり結局1.17に戻していじっています、、、orz
スポンサーサイト




<< マイクラのmodでScreenにスライダーを置く  TopPage  PHPickerViewControllerで動画ファイルを選択した後、Task内だと動かない >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1374-2e66ca7b




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.