From bf901933690d62bb49affb85d34e122e72a0e975 Mon Sep 17 00:00:00 2001 From: michiel1106 <107875826+michiel1106@users.noreply.github.com> Date: Wed, 29 Oct 2025 19:28:26 +0100 Subject: [PATCH] Fixed issue 674 (#675) --- gradle.properties | 2 +- .../event/forge/EventHandlerImplClient.java | 5 ---- .../client/MixinAbstractContainerScreen.java | 25 +++++++++++++++++++ .../main/resources/architectury.mixins.json | 1 + .../dev/architectury/test/TestModClient.java | 8 ++++++ 5 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 neoforge/src/main/java/dev/architectury/mixin/forge/client/MixinAbstractContainerScreen.java diff --git a/gradle.properties b/gradle.properties index 8677e8cc..c420f07d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ fabric_api_version=0.136.0+1.21.10 mod_menu_version=15.0.0-beta.1 forge_version=51.0.0 -neoforge_version=21.10.32-beta +neoforge_version=21.10.38-beta # Set to empty if not snapshots neoforge_pr= diff --git a/neoforge/src/main/java/dev/architectury/event/forge/EventHandlerImplClient.java b/neoforge/src/main/java/dev/architectury/event/forge/EventHandlerImplClient.java index 9fa38515..058093c9 100644 --- a/neoforge/src/main/java/dev/architectury/event/forge/EventHandlerImplClient.java +++ b/neoforge/src/main/java/dev/architectury/event/forge/EventHandlerImplClient.java @@ -142,11 +142,6 @@ public class EventHandlerImplClient { ClientGuiEvent.RENDER_POST.invoker().render(event.getScreen(), event.getGuiGraphics(), event.getMouseX(), event.getMouseY(), event.getPartialTick()); } - @SubscribeEvent(priority = EventPriority.HIGH) - public static void eventContainerScreenEvent(ContainerScreenEvent.Render.Background event) { - ClientGuiEvent.RENDER_CONTAINER_BACKGROUND.invoker().render(event.getContainerScreen(), event.getGuiGraphics(), event.getMouseX(), event.getMouseY(), Minecraft.getInstance().getDeltaTracker().getRealtimeDeltaTicks()); - } - @SubscribeEvent(priority = EventPriority.HIGH) public static void eventContainerScreenEvent(ContainerScreenEvent.Render.Foreground event) { ClientGuiEvent.RENDER_CONTAINER_FOREGROUND.invoker().render(event.getContainerScreen(), event.getGuiGraphics(), event.getMouseX(), event.getMouseY(), Minecraft.getInstance().getDeltaTracker().getRealtimeDeltaTicks()); diff --git a/neoforge/src/main/java/dev/architectury/mixin/forge/client/MixinAbstractContainerScreen.java b/neoforge/src/main/java/dev/architectury/mixin/forge/client/MixinAbstractContainerScreen.java new file mode 100644 index 00000000..b6aba7f7 --- /dev/null +++ b/neoforge/src/main/java/dev/architectury/mixin/forge/client/MixinAbstractContainerScreen.java @@ -0,0 +1,25 @@ +package dev.architectury.mixin.forge.client; + +import dev.architectury.event.events.client.ClientGuiEvent; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.network.chat.Component; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(AbstractContainerScreen.class) +public abstract class MixinAbstractContainerScreen extends Screen { + protected MixinAbstractContainerScreen(Component component) { + super(component); + } + + @Inject(method = "renderBackground", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/inventory/AbstractContainerScreen;renderBg(Lnet/minecraft/client/gui/GuiGraphics;FII)V", + ordinal = 0, shift = At.Shift.AFTER)) + public void renderBackground(GuiGraphics graphics, int mouseX, int mouseY, float delta, CallbackInfo ci) { + ClientGuiEvent.RENDER_CONTAINER_BACKGROUND.invoker().render((AbstractContainerScreen) (Object) this, graphics, mouseX, mouseY, delta); + } +} diff --git a/neoforge/src/main/resources/architectury.mixins.json b/neoforge/src/main/resources/architectury.mixins.json index adcbd390..8537c2c6 100644 --- a/neoforge/src/main/resources/architectury.mixins.json +++ b/neoforge/src/main/resources/architectury.mixins.json @@ -7,6 +7,7 @@ "client": [ "client.MixinClientPacketListener", "client.MixinCommandSourceStack", + "client.MixinAbstractContainerScreen", "MixinClientLevel", "MixinMinecraft" ], diff --git a/testmod-common/src/main/java/dev/architectury/test/TestModClient.java b/testmod-common/src/main/java/dev/architectury/test/TestModClient.java index 2ad00c44..38f1f5eb 100644 --- a/testmod-common/src/main/java/dev/architectury/test/TestModClient.java +++ b/testmod-common/src/main/java/dev/architectury/test/TestModClient.java @@ -21,6 +21,7 @@ package dev.architectury.test; import com.mojang.brigadier.arguments.StringArgumentType; import dev.architectury.event.events.client.ClientCommandRegistrationEvent; +import dev.architectury.event.events.client.ClientGuiEvent; import dev.architectury.event.events.client.ClientLifecycleEvent; import dev.architectury.registry.client.gui.ClientTooltipComponentRegistry; import dev.architectury.registry.client.level.entity.EntityRendererRegistry; @@ -29,10 +30,14 @@ import dev.architectury.test.registry.TestRegistries; import dev.architectury.test.registry.client.TestKeybinds; import dev.architectury.test.registry.objects.ItemWithTooltip; import dev.architectury.test.registry.objects.MyClientTooltipComponent; +import net.minecraft.client.gui.components.FocusableTextWidget; import net.minecraft.client.renderer.entity.CowRenderer; import static dev.architectury.test.TestMod.SINK; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; + public class TestModClient { public static void initializeClient() { ClientLifecycleEvent.CLIENT_STARTED.register((client) -> SINK.accept("Client started!")); @@ -51,5 +56,8 @@ public class TestModClient { return 0; }))); }); + ClientGuiEvent.RENDER_CONTAINER_BACKGROUND.register(((screen, graphics, mouseX, mouseY, delta) -> { + graphics.renderItem(new ItemStack(Items.DIAMOND), mouseX, mouseY); + })); } }