From bb3254389cb4c7d53a82f04ca1d4fe355d97fe95 Mon Sep 17 00:00:00 2001 From: lucaslah Date: Sat, 10 Dec 2022 12:13:12 -0500 Subject: [PATCH] update to 1.19.3 note: this version only supports 1.19.3, not older versions. --- gradle.properties | 10 ++-- .../me/lucaslah/ncrb/OpenToLanButton.java | 28 +++++++++++ .../ncrb/mixin/GameMenuScreenMixin.java | 46 ++++++++++++------- src/main/resources/fabric.mod.json | 2 +- 4 files changed, 64 insertions(+), 22 deletions(-) create mode 100644 src/main/java/me/lucaslah/ncrb/OpenToLanButton.java diff --git a/gradle.properties b/gradle.properties index 3fdb3c9..fe25acd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,14 +3,14 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.19.2 -yarn_mappings=1.19.2+build.1 -loader_version=0.14.8 +minecraft_version=1.19.3 +yarn_mappings=1.19.3+build.1 +loader_version=0.14.11 # Mod Properties -mod_version = 1.2.1 +mod_version = 1.3.0 maven_group = me.lucaslah archives_base_name = no-report-button # Dependencies -fabric_version=0.58.6+1.19.2 +fabric_version=0.68.1+1.19.3 diff --git a/src/main/java/me/lucaslah/ncrb/OpenToLanButton.java b/src/main/java/me/lucaslah/ncrb/OpenToLanButton.java new file mode 100644 index 0000000..32a99cc --- /dev/null +++ b/src/main/java/me/lucaslah/ncrb/OpenToLanButton.java @@ -0,0 +1,28 @@ +package me.lucaslah.ncrb; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.OpenToLanScreen; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; +import net.minecraft.client.gui.widget.PressableWidget; +import net.minecraft.text.Text; + +public class OpenToLanButton extends PressableWidget { + private final Screen screen; + public OpenToLanButton(Screen screen, int i, int j, int k, int l, Text text) { + super(i, j, k, l, text); + this.screen = screen; + } + + @Override + public void onPress() { + MinecraftClient client = MinecraftClient.getInstance(); + assert client != null; + client.setScreen(new OpenToLanScreen(screen)); + } + + @Override + protected void appendClickableNarrations(NarrationMessageBuilder builder) { + + } +} diff --git a/src/main/java/me/lucaslah/ncrb/mixin/GameMenuScreenMixin.java b/src/main/java/me/lucaslah/ncrb/mixin/GameMenuScreenMixin.java index e89a0a3..0e097aa 100644 --- a/src/main/java/me/lucaslah/ncrb/mixin/GameMenuScreenMixin.java +++ b/src/main/java/me/lucaslah/ncrb/mixin/GameMenuScreenMixin.java @@ -1,11 +1,12 @@ package me.lucaslah.ncrb.mixin; +import me.lucaslah.ncrb.OpenToLanButton; import net.fabricmc.fabric.api.client.screen.v1.Screens; +import net.minecraft.client.gui.Element; import net.minecraft.client.gui.screen.GameMenuScreen; -import net.minecraft.client.gui.screen.OpenToLanScreen; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ClickableWidget; +import net.minecraft.client.gui.widget.GridWidget; import net.minecraft.client.resource.language.I18n; import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; @@ -25,28 +26,41 @@ public abstract class GameMenuScreenMixin extends Screen { @Inject(method = "initWidgets()V", at = @At(value = "RETURN")) public void initWidgets(CallbackInfo ci) { - final List buttons = Screens.getButtons(this); + final List widgets = Screens.getButtons(this); + List buttons = null; + + for (ClickableWidget clickableWidget : widgets) { + if (clickableWidget instanceof GridWidget widget) { + List children = widget.children(); + + if (children != null) { + buttons = children; + } + } + } - ClickableWidget reportButton = null; boolean reportButtonFound = false; - for (ClickableWidget button : buttons) { - if (button.getMessage().getString().equals(I18n.translate("menu.playerReporting"))) { - button.setWidth(-9999); - button.active = false; - reportButton = button; - reportButtonFound = true; + if (buttons != null) { + for (Element element : buttons) { + if (element instanceof ClickableWidget button) { + if (button.getMessage().getString().equals(I18n.translate("menu.playerReporting"))) { + button.visible = false; + button.active = false; + reportButtonFound = true; + } + } } } if (reportButtonFound) { - ButtonWidget openToLanButton = this.addDrawableChild(new ButtonWidget(this.width / 2 + 4, this.height / 4 + 96 + -16, 98, 20, Text.translatable("menu.shareToLan"), (button) -> { - assert this.client != null; - this.client.setScreen(new OpenToLanScreen(this)); - })); + OpenToLanButton openToLanButton = new OpenToLanButton(this,this.width / 2 + 4, this.height / 4 + 96 + -16, 98, 20, Text.translatable("menu.shareToLan")); - assert this.client != null; - openToLanButton.active = this.client.isIntegratedServerRunning() && !Objects.requireNonNull(this.client.getServer()).isRemote(); + if (this.client != null) { + openToLanButton.active = this.client.isIntegratedServerRunning() && !Objects.requireNonNull(this.client.getServer()).isRemote(); + } + + widgets.add(openToLanButton); } } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 6aeee9e..f34b808 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -28,7 +28,7 @@ "depends": { "fabricloader": ">=0.14.6", - "minecraft": "~1.19", + "minecraft": ">=1.19.3", "java": ">=17", "fabric-screen-api-v1": ">=1.0.4" }