mirror of
https://github.com/architectury/architectury-api.git
synced 2026-04-02 05:27:42 -05:00
@@ -22,6 +22,7 @@ package me.shedaniel.architectury.event.events;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import me.shedaniel.architectury.event.Event;
|
||||
import me.shedaniel.architectury.event.EventFactory;
|
||||
import me.shedaniel.architectury.hooks.screen.ScreenAccess;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.gui.components.AbstractWidget;
|
||||
@@ -68,12 +69,12 @@ public interface GuiEvent {
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
interface ScreenInitPre {
|
||||
InteractionResult init(Screen screen, List<AbstractWidget> widgets, List<GuiEventListener> children);
|
||||
InteractionResult init(Screen screen, ScreenAccess access);
|
||||
}
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
interface ScreenInitPost {
|
||||
void init(Screen screen, List<AbstractWidget> widgets, List<GuiEventListener> children);
|
||||
void init(Screen screen, ScreenAccess access);
|
||||
}
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package me.shedaniel.architectury.hooks.screen;
|
||||
|
||||
import net.minecraft.client.gui.components.AbstractWidget;
|
||||
import net.minecraft.client.gui.components.Widget;
|
||||
import net.minecraft.client.gui.components.events.GuiEventListener;
|
||||
import net.minecraft.client.gui.narration.NarratableEntry;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ScreenAccess {
|
||||
Screen getScreen();
|
||||
|
||||
List<NarratableEntry> getNarratables();
|
||||
|
||||
List<Widget> getRenderables();
|
||||
|
||||
<T extends AbstractWidget & Widget & NarratableEntry> T addRenderableWidget(T widget);
|
||||
|
||||
<T extends Widget> T addRenderableOnly(T listener);
|
||||
|
||||
<T extends GuiEventListener & NarratableEntry> T addWidget(T listener);
|
||||
}
|
||||
@@ -17,13 +17,15 @@
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package me.shedaniel.architectury.hooks;
|
||||
package me.shedaniel.architectury.hooks.screen;
|
||||
|
||||
import me.shedaniel.architectury.annotations.ExpectPlatform;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.gui.components.AbstractWidget;
|
||||
import net.minecraft.client.gui.components.Widget;
|
||||
import net.minecraft.client.gui.components.events.GuiEventListener;
|
||||
import net.minecraft.client.gui.narration.NarratableEntry;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
|
||||
import java.util.List;
|
||||
@@ -34,17 +36,27 @@ public final class ScreenHooks {
|
||||
}
|
||||
|
||||
@ExpectPlatform
|
||||
public static List<AbstractWidget> getButtons(Screen screen) {
|
||||
public static List<NarratableEntry> getNarratables(Screen screen) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
@ExpectPlatform
|
||||
public static <T extends AbstractWidget> T addButton(Screen screen, T widget) {
|
||||
public static List<Widget> getRenderables(Screen screen) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
@ExpectPlatform
|
||||
public static <T extends GuiEventListener> T addChild(Screen screen, T listener) {
|
||||
public static <T extends AbstractWidget & Widget & NarratableEntry> T addRenderableWidget(Screen screen, T widget) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
@ExpectPlatform
|
||||
public static <T extends Widget> T addRenderableOnly(Screen screen, T listener) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
@ExpectPlatform
|
||||
public static <T extends GuiEventListener & NarratableEntry> T addWidget(Screen screen, T listener) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package me.shedaniel.architectury.impl;
|
||||
|
||||
import me.shedaniel.architectury.hooks.screen.ScreenAccess;
|
||||
import me.shedaniel.architectury.hooks.screen.ScreenHooks;
|
||||
import net.minecraft.client.gui.components.AbstractWidget;
|
||||
import net.minecraft.client.gui.components.Widget;
|
||||
import net.minecraft.client.gui.components.events.GuiEventListener;
|
||||
import net.minecraft.client.gui.narration.NarratableEntry;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ScreenAccessImpl implements ScreenAccess {
|
||||
private Screen screen;
|
||||
|
||||
public ScreenAccessImpl(Screen screen) {
|
||||
this.screen = screen;
|
||||
}
|
||||
|
||||
public void setScreen(Screen screen) {
|
||||
this.screen = screen;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Screen getScreen() {
|
||||
return screen;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NarratableEntry> getNarratables() {
|
||||
return ScreenHooks.getNarratables(screen);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Widget> getRenderables() {
|
||||
return ScreenHooks.getRenderables(screen);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends AbstractWidget & Widget & NarratableEntry> T addRenderableWidget(T widget) {
|
||||
return ScreenHooks.addRenderableWidget(screen, widget);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Widget> T addRenderableOnly(T listener) {
|
||||
return ScreenHooks.addRenderableOnly(screen, listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends GuiEventListener & NarratableEntry> T addWidget(T listener) {
|
||||
return ScreenHooks.addWidget(screen, listener);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user