diff --git a/src/main/java/com/github/ptom76/tutorialfabricmod/client/TutorialFabricClientMod.java b/src/main/java/com/github/ptom76/tutorialfabricmod/client/TutorialFabricClientMod.java index 386140d..9ea645b 100644 --- a/src/main/java/com/github/ptom76/tutorialfabricmod/client/TutorialFabricClientMod.java +++ b/src/main/java/com/github/ptom76/tutorialfabricmod/client/TutorialFabricClientMod.java @@ -2,9 +2,18 @@ import com.github.ptom76.tutorialfabricmod.client.render.entity.EntityRenderers; import com.github.ptom76.tutorialfabricmod.client.screen.Screens; +import com.github.ptom76.tutorialfabricmod.mixin.GridWidgetAccessor; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; +import net.minecraft.client.gui.screen.GameMenuScreen; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.ClickableWidget; +import net.minecraft.client.gui.widget.GridWidget; +import net.minecraft.text.Text; + +import java.util.List; @Environment(EnvType.CLIENT) public class TutorialFabricClientMod implements ClientModInitializer { @@ -19,5 +28,20 @@ public void onInitializeClient() { // キーバインドの登録 KeyBindings.init(); + + + ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> { + if (!(screen instanceof GameMenuScreen)) return; + ClickableWidget gridWidget = net.fabricmc.fabric.api.client.screen.v1.Screens.getButtons(screen).get(0); + if (gridWidget instanceof GridWidget) { + List widgets = ((GridWidgetAccessor)gridWidget).getChildren(); + + ButtonWidget helloWorldBtn = ButtonWidget.builder(Text.of("Hello, World!"), (widget) -> { + if (client.player != null) + client.player.sendMessage(Text.of("Hello, World!")); + }).dimensions(screen.width / 2 - 102, screen.height / 4 + 128, 204, 20).build(); + widgets.add(helloWorldBtn); + } + }); } } diff --git a/src/main/java/com/github/ptom76/tutorialfabricmod/mixin/GridWidgetAccessor.java b/src/main/java/com/github/ptom76/tutorialfabricmod/mixin/GridWidgetAccessor.java new file mode 100644 index 0000000..8e4d32b --- /dev/null +++ b/src/main/java/com/github/ptom76/tutorialfabricmod/mixin/GridWidgetAccessor.java @@ -0,0 +1,14 @@ +package com.github.ptom76.tutorialfabricmod.mixin; + +import net.minecraft.client.gui.widget.ClickableWidget; +import net.minecraft.client.gui.widget.GridWidget; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.List; + +@Mixin(GridWidget.class) +public interface GridWidgetAccessor { + @Accessor + List getChildren(); +} diff --git a/src/main/resources/tutorialfabricmod.mixins.json b/src/main/resources/tutorialfabricmod.mixins.json index fb0b1b2..33b3f74 100644 --- a/src/main/resources/tutorialfabricmod.mixins.json +++ b/src/main/resources/tutorialfabricmod.mixins.json @@ -8,6 +8,7 @@ "StuffTimer" ], "client": [ + "GridWidgetAccessor" ], "injectors": { "defaultRequire": 1