From a83e25ee8ba5254913fd33fb88de2e4936a19fb7 Mon Sep 17 00:00:00 2001 From: Mithi83 <28407460+Mithi83@users.noreply.github.com> Date: Tue, 17 Jun 2025 10:09:22 +0200 Subject: [PATCH 01/27] Add wireless requester terminal support Based on original PR by Mari023 found here: https://github.com/AlmostReliable/merequester/pull/11 --- CHANGELOG.md | 2 +- build.gradle.kts | 2 + gradle.properties | 1 + .../merequester/MERequester.java | 1 + .../abstraction/AbstractRequesterScreen.java | 12 ++-- .../merequester/core/Registration.java | 56 +++++++++++++++++ .../merequester/wireless/ItemWR.java | 16 +++++ .../merequester/wireless/WRMenu.java | 58 ++++++++++++++++++ .../merequester/wireless/WRMenuHost.java | 19 ++++++ .../merequester/wireless/WRScreen.java | 37 +++++++++++ .../merequester/wireless/package-info.java | 9 +++ .../screens/wireless_requester_terminal.json | 4 ++ .../assets/merequester/lang/en_us.json | 1 + .../item/wireless_requester_terminal.json | 6 ++ .../item/wireless_requester_terminal.png | Bin 0 -> 4328 bytes .../wireless_requester/combine_access.json | 17 +++++ .../wireless_requester/combine_crafting.json | 17 +++++ .../wireless_requester/combine_encoding.json | 17 +++++ .../wireless_requester/upgrade_requester.json | 13 ++++ .../wireless_requester_terminal.json | 18 ++++++ 20 files changed, 299 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/almostreliable/merequester/wireless/ItemWR.java create mode 100644 src/main/java/com/almostreliable/merequester/wireless/WRMenu.java create mode 100644 src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java create mode 100644 src/main/java/com/almostreliable/merequester/wireless/WRScreen.java create mode 100644 src/main/java/com/almostreliable/merequester/wireless/package-info.java create mode 100644 src/main/resources/assets/ae2/screens/wireless_requester_terminal.json create mode 100644 src/main/resources/assets/merequester/models/item/wireless_requester_terminal.json create mode 100644 src/main/resources/assets/merequester/textures/item/wireless_requester_terminal.png create mode 100644 src/main/resources/data/merequester/recipe/wireless_requester/combine_access.json create mode 100644 src/main/resources/data/merequester/recipe/wireless_requester/combine_crafting.json create mode 100644 src/main/resources/data/merequester/recipe/wireless_requester/combine_encoding.json create mode 100644 src/main/resources/data/merequester/recipe/wireless_requester/upgrade_requester.json create mode 100644 src/main/resources/data/merequester/recipe/wireless_requester/wireless_requester_terminal.json diff --git a/CHANGELOG.md b/CHANGELOG.md index a5b652f..c7ae05b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. ## Unreleased -- / +- added ae2wtlib support and a wireless requester terminal ## [1.2.0] - 2025-04-18 diff --git a/build.gradle.kts b/build.gradle.kts index 8c0d6f7..0c6b2d3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,11 +25,13 @@ neoForge { repositories { mavenCentral() + maven("https://modmaven.dev") mavenLocal() } dependencies { implementation("org.appliedenergistics:appliedenergistics2:${almostgradle.getProperty("aeVersion")}") + implementation("de.mari_023:ae2wtlib_api:${almostgradle.getProperty("ae2wtlibVersion")}") } tasks.withType { diff --git a/gradle.properties b/gradle.properties index 3029d97..00ae6e2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,6 +15,7 @@ githubRepo = merequester # mod dependencies aeVersion = 19.2.7 +ae2wtlibVersion = 19.2.3 # settings neoForge.parchment.minecraftVersion = 1.21.1 diff --git a/src/main/java/com/almostreliable/merequester/MERequester.java b/src/main/java/com/almostreliable/merequester/MERequester.java index d1aa378..f5636b4 100644 --- a/src/main/java/com/almostreliable/merequester/MERequester.java +++ b/src/main/java/com/almostreliable/merequester/MERequester.java @@ -17,6 +17,7 @@ public final class MERequester { public static final Logger LOGGER = LogUtils.getLogger(); public static final String REQUESTER_ID = "requester"; public static final String TERMINAL_ID = "requester_terminal"; + public static final String WIRELESS_TERMINAL_ID = "wireless_requester_terminal"; public MERequester(IEventBus modEventBus, ModContainer modContainer) { Registration.init(modEventBus); diff --git a/src/main/java/com/almostreliable/merequester/client/abstraction/AbstractRequesterScreen.java b/src/main/java/com/almostreliable/merequester/client/abstraction/AbstractRequesterScreen.java index e98c8d1..f2a21fb 100644 --- a/src/main/java/com/almostreliable/merequester/client/abstraction/AbstractRequesterScreen.java +++ b/src/main/java/com/almostreliable/merequester/client/abstraction/AbstractRequesterScreen.java @@ -51,8 +51,8 @@ public abstract class AbstractRequesterScreen e protected static final int GUI_WIDTH = 195; private static final int GUI_PADDING_X = 8; private static final int GUI_PADDING_Y = 6; - protected static final int GUI_HEADER_HEIGHT = 19; - protected static final int GUI_FOOTER_HEIGHT = 100; + protected static final int GUI_HEADER_HEIGHT = 20; + protected static final int GUI_FOOTER_HEIGHT = 99; private static final int TEXT_MARGIN_X = 2; private static final int TEXT_MAX_WIDTH = 156; @@ -62,7 +62,7 @@ public abstract class AbstractRequesterScreen e private static final Rect2i HEADER_BBOX = new Rect2i(0, 0, GUI_WIDTH, GUI_HEADER_HEIGHT); - private static final Rect2i TEXT_BBOX = new Rect2i(0, 19, GUI_WIDTH, ROW_HEIGHT); + private static final Rect2i TEXT_BBOX = new Rect2i(0, 60, GUI_WIDTH, ROW_HEIGHT); private static final Rect2i REQUEST_BBOX = new Rect2i(0, 38, GUI_WIDTH, ROW_HEIGHT); private final ResourceLocation texture; @@ -134,14 +134,14 @@ public void updateFromMenu(boolean clearData, long requesterId, CompoundTag data @Override @MustBeInvokedByOverriders protected void init() { - imageHeight = GUI_HEADER_HEIGHT + GUI_FOOTER_HEIGHT + rowAmount * ROW_HEIGHT; + imageHeight = GUI_HEADER_HEIGHT + GUI_FOOTER_HEIGHT + rowAmount * ROW_HEIGHT + 1; requestWidgets.forEach(w -> w.preInit(Utils.cast(widgets, WidgetContainerMixin.class).merequester$getWidgets())); super.init(); // clear old widgets because init() is recalled when the terminal resizes requestWidgets.clear(); for (var i = 0; i < rowAmount; i++) { - var requestWidget = new RequestWidget(this, i, GUI_PADDING_X, (i + 1) * ROW_HEIGHT, style); + var requestWidget = new RequestWidget(this, i, GUI_PADDING_X, (i + 1) * ROW_HEIGHT + 1, style); requestWidget.postInit(); requestWidgets.add(requestWidget); } @@ -306,7 +306,7 @@ private RequestSlot createSlot(int index, Request request) { (RequesterReference) request.getRequesterReference(), request.getIndex(), ROW_HEIGHT + GUI_PADDING_X, - (index + 1) * ROW_HEIGHT + 1 + (index + 1) * ROW_HEIGHT + 2 ); slot.setHideAmount(true); slot.setLocked(request.getClientStatus().locksRequest()); diff --git a/src/main/java/com/almostreliable/merequester/core/Registration.java b/src/main/java/com/almostreliable/merequester/core/Registration.java index 1c46b8b..bde9307 100644 --- a/src/main/java/com/almostreliable/merequester/core/Registration.java +++ b/src/main/java/com/almostreliable/merequester/core/Registration.java @@ -9,6 +9,12 @@ import com.almostreliable.merequester.terminal.RequesterTerminalMenu; import com.almostreliable.merequester.terminal.RequesterTerminalPart; +import appeng.api.implementations.items.IAEItemPowerStorage; +import appeng.items.tools.powered.powersink.PoweredItemCapabilities; +import de.mari_023.ae2wtlib.api.gui.Icon; +import de.mari_023.ae2wtlib.api.registration.AddTerminalEvent; +import net.neoforged.neoforge.capabilities.Capabilities; + import net.minecraft.core.component.DataComponentType; import net.minecraft.core.registries.Registries; import net.minecraft.network.codec.ByteBufCodecs; @@ -18,8 +24,32 @@ import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.entity.BlockEntityType; + +import com.almostreliable.merequester.ModConstants; +import com.almostreliable.merequester.Utils; +import com.almostreliable.merequester.requester.Request; +import com.almostreliable.merequester.requester.RequesterBlock; +import com.almostreliable.merequester.requester.RequesterBlockEntity; +import com.almostreliable.merequester.requester.RequesterMenu; +import com.almostreliable.merequester.terminal.RequesterTerminalMenu; +import com.almostreliable.merequester.terminal.RequesterTerminalPart; +import com.almostreliable.merequester.wireless.ItemWR; +import com.almostreliable.merequester.wireless.WRMenu; +import com.almostreliable.merequester.wireless.WRMenuHost; +import com.almostreliable.merequester.wireless.WRScreen; + +import appeng.api.AECapabilities; +import appeng.api.features.GridLinkables; +import appeng.api.parts.PartModels; +import appeng.block.AEBaseBlock; +import appeng.blockentity.AEBaseBlockEntity; +import appeng.init.client.InitScreens; +import appeng.items.parts.PartItem; +import appeng.items.parts.PartModelsHelper; +import appeng.items.tools.powered.WirelessTerminalItem; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; +import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent; import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent; import net.neoforged.neoforge.registries.DeferredBlock; import net.neoforged.neoforge.registries.DeferredHolder; @@ -38,6 +68,7 @@ import static com.almostreliable.merequester.MERequester.REQUESTER_ID; import static com.almostreliable.merequester.MERequester.TERMINAL_ID; +import static com.almostreliable.merequester.MERequester.WIRELESS_TERMINAL_ID; public final class Registration { @@ -100,6 +131,17 @@ public final class Registration { () -> RequesterTerminalMenu.TYPE ); + public static final DeferredItem WIRELESS_REQUESTER_TERMINAL = ITEMS.registerItem( + WIRELESS_TERMINAL_ID, + properties -> { + return new ItemWR(); + } + ); + public static final DeferredHolder, MenuType> WIRELESS_REQUESTER_TERMINAL_MENU = MENUS.register( + WIRELESS_TERMINAL_ID, + () -> WRMenu.TYPE + ); + public static final DeferredHolder, DataComponentType>> EXPORTED_REQUESTS = COMPONENTS.register( "exported_requests", @@ -115,12 +157,19 @@ public static void init(IEventBus modEventBus) { modEventBus.addListener(Registration::registerContents); modEventBus.addListener(Registration::registerCapabilities); modEventBus.addListener(Tab::initContents); + modEventBus.addListener(Registration::registerScreens); BLOCKS.register(modEventBus); ITEMS.register(modEventBus); BLOCK_ENTITIES.register(modEventBus); MENUS.register(modEventBus); COMPONENTS.register(modEventBus); + + AddTerminalEvent.register((event -> { + event.builder("requester", WRMenuHost::new, WRMenu.TYPE, WIRELESS_REQUESTER_TERMINAL.get(), + Icon.PATTERN_ACCESS) + .addTerminal(); + })); } private static void registerContents(RegisterEvent event) { @@ -135,6 +184,12 @@ private static void registerCapabilities(RegisterCapabilitiesEvent event) { REQUESTER_ENTITY.get(), (requester, ctx) -> requester ); + + GridLinkables.register(WIRELESS_REQUESTER_TERMINAL, WirelessTerminalItem.LINKABLE_HANDLER); + } + + private static void registerScreens(RegisterMenuScreensEvent event) { + InitScreens.register(event, WRMenu.TYPE, WRScreen::new, "/screens/wireless_requester_terminal.json"); } public static final class Tab { @@ -152,6 +207,7 @@ private static void initContents(BuildCreativeModeTabContentsEvent event) { if (event.getTabKey() == TAB_KEY) { event.accept(REQUESTER_BLOCK); event.accept(REQUESTER_TERMINAL); + event.accept(WIRELESS_REQUESTER_TERMINAL); } } diff --git a/src/main/java/com/almostreliable/merequester/wireless/ItemWR.java b/src/main/java/com/almostreliable/merequester/wireless/ItemWR.java new file mode 100644 index 0000000..f470276 --- /dev/null +++ b/src/main/java/com/almostreliable/merequester/wireless/ItemWR.java @@ -0,0 +1,16 @@ +package com.almostreliable.merequester.wireless; + +import appeng.menu.locator.ItemMenuHostLocator; +import de.mari_023.ae2wtlib.api.terminal.ItemWT; + +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.MenuType; +//import net.minecraft.world.item.ItemStack; + +public class ItemWR extends ItemWT { + + @Override + public MenuType getMenuType(ItemMenuHostLocator itemMenuHostLocator, Player player) { + return WRMenu.TYPE; + } +} \ No newline at end of file diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRMenu.java b/src/main/java/com/almostreliable/merequester/wireless/WRMenu.java new file mode 100644 index 0000000..effd585 --- /dev/null +++ b/src/main/java/com/almostreliable/merequester/wireless/WRMenu.java @@ -0,0 +1,58 @@ +package com.almostreliable.merequester.wireless; + +import appeng.api.storage.ITerminalHost; +import appeng.api.upgrades.IUpgradeInventory; +import appeng.menu.SlotSemantics; +import appeng.menu.ToolboxMenu; +import appeng.menu.implementations.MenuTypeBuilder; +import appeng.menu.slot.RestrictedInputSlot; + +import com.almostreliable.merequester.MERequester; +import com.almostreliable.merequester.Utils; +import com.almostreliable.merequester.terminal.RequesterTerminalMenu; + +import de.mari_023.ae2wtlib.api.terminal.ItemWUT; + +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.MenuType; + +public class WRMenu extends RequesterTerminalMenu { + + public static final MenuType TYPE = MenuTypeBuilder + .create(WRMenu::new, WRMenuHost.class) + .build(Utils.getRL(MERequester.WIRELESS_TERMINAL_ID)); + + private final WRMenuHost wrMenuHost; + private final ToolboxMenu toolboxMenu; + + public WRMenu(int id, Inventory playerInventory, WRMenuHost host) { + super(TYPE, id, playerInventory, host); + wrMenuHost = host; + toolboxMenu = new ToolboxMenu(this); + + IUpgradeInventory upgrades = wrMenuHost.getUpgrades(); + for (int i = 0; i < upgrades.size(); i++) { + var slot = new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, i); + slot.setNotDraggable(); + addSlot(slot, SlotSemantics.UPGRADE); + } + } + + @Override + public void broadcastChanges() { + toolboxMenu.tick(); + super.broadcastChanges(); + } + + public boolean isWUT() { + return wrMenuHost.getItemStack().getItem() instanceof ItemWUT; + } + + public ITerminalHost getHost() { + return wrMenuHost; + } + + public ToolboxMenu getToolbox() { + return toolboxMenu; + } +} \ No newline at end of file diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java b/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java new file mode 100644 index 0000000..ae5687c --- /dev/null +++ b/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java @@ -0,0 +1,19 @@ +package com.almostreliable.merequester.wireless; + +import appeng.api.storage.ITerminalHost; +import appeng.menu.ISubMenu; +import appeng.menu.locator.ItemMenuHostLocator; + +import de.mari_023.ae2wtlib.api.terminal.ItemWT; +import de.mari_023.ae2wtlib.api.terminal.WTMenuHost; + +import net.minecraft.world.entity.player.Player; + +import java.util.function.BiConsumer; + +public class WRMenuHost extends WTMenuHost implements ITerminalHost { + + public WRMenuHost(ItemWT item, Player player, ItemMenuHostLocator locator, BiConsumer returnToMainMenu) { + super(item, player, locator, returnToMainMenu); + } +} \ No newline at end of file diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java b/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java new file mode 100644 index 0000000..86b7168 --- /dev/null +++ b/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java @@ -0,0 +1,37 @@ +package com.almostreliable.merequester.wireless; + +import appeng.client.gui.style.ScreenStyle; +import appeng.client.gui.widgets.BackgroundPanel; +import appeng.client.gui.widgets.ToolboxPanel; +import appeng.client.gui.widgets.UpgradesPanel; +import appeng.menu.SlotSemantics; + +import com.almostreliable.merequester.client.RequesterTerminalScreen; + +import de.mari_023.ae2wtlib.api.terminal.IUniversalTerminalCapable; +import de.mari_023.ae2wtlib.api.terminal.WTMenuHost; + +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.player.Inventory; + +public class WRScreen extends RequesterTerminalScreen implements IUniversalTerminalCapable { + + public WRScreen(WRMenu menu, Inventory playerInventory, Component name, ScreenStyle style) { + super(menu, playerInventory, name, style); + if (getMenu().isWUT()) + addToLeftToolbar(cycleTerminalButton()); + + widgets.add("upgrades", new UpgradesPanel(getMenu().getSlots(SlotSemantics.UPGRADE), getMenu().getHost())); + if (getMenu().getToolbox().isPresent()) + widgets.add("toolbox", new ToolboxPanel(style, getMenu().getToolbox().getName())); + //widgets.add("singularityBackground", new BackgroundPanel(style.getImage("singularityBackground"))); + } + + @Override + public WTMenuHost getHost() { + return (WTMenuHost) getMenu().getHost(); + } + + @Override + public void storeState() {} +} \ No newline at end of file diff --git a/src/main/java/com/almostreliable/merequester/wireless/package-info.java b/src/main/java/com/almostreliable/merequester/wireless/package-info.java new file mode 100644 index 0000000..65d77cb --- /dev/null +++ b/src/main/java/com/almostreliable/merequester/wireless/package-info.java @@ -0,0 +1,9 @@ +@FieldsAreNonnullByDefault +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.almostreliable.merequester.wireless; + +import javax.annotation.ParametersAreNonnullByDefault; + +import net.minecraft.FieldsAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/resources/assets/ae2/screens/wireless_requester_terminal.json b/src/main/resources/assets/ae2/screens/wireless_requester_terminal.json new file mode 100644 index 0000000..44dc4a6 --- /dev/null +++ b/src/main/resources/assets/ae2/screens/wireless_requester_terminal.json @@ -0,0 +1,4 @@ +{ + "$schema": "schema.json", + "includes": ["requester_terminal.json"] +} \ No newline at end of file diff --git a/src/main/resources/assets/merequester/lang/en_us.json b/src/main/resources/assets/merequester/lang/en_us.json index 14ba68a..4e23bfa 100644 --- a/src/main/resources/assets/merequester/lang/en_us.json +++ b/src/main/resources/assets/merequester/lang/en_us.json @@ -2,6 +2,7 @@ "itemGroup.merequester.tab": "ME Requester", "item.merequester.requester_terminal": "ME Requester Terminal", + "item.merequester.wireless_requester_terminal": "Wireless Requester Terminal", "block.merequester.requester": "ME Requester", "gui.merequester.requester_terminal": "ME Requ. Terminal", diff --git a/src/main/resources/assets/merequester/models/item/wireless_requester_terminal.json b/src/main/resources/assets/merequester/models/item/wireless_requester_terminal.json new file mode 100644 index 0000000..779db13 --- /dev/null +++ b/src/main/resources/assets/merequester/models/item/wireless_requester_terminal.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "merequester:item/wireless_requester_terminal" + } +} diff --git a/src/main/resources/assets/merequester/textures/item/wireless_requester_terminal.png b/src/main/resources/assets/merequester/textures/item/wireless_requester_terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..77b86560f750233b0ba0c99a62005ac756d79a1b GIT binary patch literal 4328 zcmeHLeNYo;8sF5T&=e50?TFfTZ|OK{+3aqBTbG{jP?GOZFZ-e;!|SCgmSX<~@4#l=Ik^H4jhUtl0A4vE7bqf2<$; zpM>T>*%`Vly?{P zTsk?s^{XAt#hnLMtuNDdAg|z#Wyk`<;XRkK`CH`4Z*SfHdi8dH?cO0d^_`>^&EnUr z=l=exv%{WqLbyr}%-YtLeW>$`&RLJHZu-9Y>#beluBGXZ=ad>h_^Q^|T)yajd-s{P zKt-pab4FRu!ZjC;wMjSo+sfv)$;*E{?Xj=97~Xwn!OZd{GZz+lF6Skcl{a+1)8a$i zLsir3uity?!hxnkj}-ha=}N1;=7+xeyC+^gY_HVnw&kDvif!{W`Mn>VtzJ?3-G;8G*M9!CZte$J{}!}ok-O^)KHHxB zs<^RlXYb4YXWyEhx8wLrCpGEm8}H5J-e1?TuJywY>pxW<3~BmOrS1^9A2eB7jR3l< z+`Wuq#GsC5MIWb&2E(B3ASfp{8m5^_PJw-#UkKTdffJ_?SYU0)3X>amhx54#p{P#c zO6!WfOkE{IvPkY?ZBCQ|1VK)r;b<@rlBuW-iSbfkteP-4 z6b;E)Dn*>b!O4sygcU&y!73;16RQ;)f&f1}nqM&Nc8}4Ab;E-Y^oGeyL4Ck!jLP}O51vU^o^9#GZgu1b$qs3Aw4BSUHJ_fbcQi3Fy(0*2K~J1S(fZR_GAJsZ@YmCjcHF zL68=bF`)p?phnt2gOPuLWhHQ(!5Z_Z8$*F| zfV8yQsemA62h~vd5=SedR%i#UaDWuo8!19h>CIj}K^d)- z$@n}@PSKP%^&>=qu?vIg%9kmNT(F|4}&09@8jha~+>>y5asLx^oO=UE(ILmUpl^`dw z%ObBtXo<7?fsQ~c(4aA`-~}UFwQwRnQo*VF03<^}+a^ecU?at1>Wwj4Z4UNddgR0a z30Dk=i`&4}1#UuY>?$15OTBb{#@EO`{ERCA>ZwI0rSFtnQ*up8fk}a#T<$d#=~*_P2{ShKGma~{Z~w+9CY?apcKAXcN46qiDIcdmo~0w9fVX`usZNP4;mOdbmt zt&}0?@mcCy1MS>38yJ%nm)n{AW$K(KaPxV`$G{K$%H^ Date: Fri, 15 Aug 2025 21:48:18 +0200 Subject: [PATCH 02/27] Update ae2wtlibVersion Co-authored-by: Mari023 <38946771+Mari023@users.noreply.github.com> --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 00ae6e2..b798ac9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,7 +15,7 @@ githubRepo = merequester # mod dependencies aeVersion = 19.2.7 -ae2wtlibVersion = 19.2.3 +ae2wtlibVersion = 19.2.5 # settings neoForge.parchment.minecraftVersion = 1.21.1 From dd07c62ff101b7c1b61fdbc2062f35c66274db7d Mon Sep 17 00:00:00 2001 From: Mithi83 <28407460+Mithi83@users.noreply.github.com> Date: Fri, 15 Aug 2025 21:49:23 +0200 Subject: [PATCH 03/27] WRMenuHost implements RequesterTerminalHost as well Co-authored-by: Mari023 <38946771+Mari023@users.noreply.github.com> --- .../java/com/almostreliable/merequester/wireless/WRMenuHost.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java b/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java index ae5687c..f22aec3 100644 --- a/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java +++ b/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java @@ -12,6 +12,7 @@ import java.util.function.BiConsumer; public class WRMenuHost extends WTMenuHost implements ITerminalHost { +public class WRMenuHost extends WTMenuHost implements ITerminalHost, RequesterTerminalHost { public WRMenuHost(ItemWT item, Player player, ItemMenuHostLocator locator, BiConsumer returnToMainMenu) { super(item, player, locator, returnToMainMenu); From a742d94c56f1b2581ea904819b48924dc3154969 Mon Sep 17 00:00:00 2001 From: Mithi83 <28407460+Mithi83@users.noreply.github.com> Date: Fri, 15 Aug 2025 21:50:44 +0200 Subject: [PATCH 04/27] Use upgrade panel from ae2wtlib Co-authored-by: Mari023 <38946771+Mari023@users.noreply.github.com> --- .../almostreliable/merequester/wireless/WRScreen.java | 10 ++++++++-- .../ae2/screens/wireless_requester_terminal.json | 6 +++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java b/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java index 86b7168..83845c6 100644 --- a/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java +++ b/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java @@ -15,16 +15,22 @@ import net.minecraft.world.entity.player.Inventory; public class WRScreen extends RequesterTerminalScreen implements IUniversalTerminalCapable { +private final ScrollingUpgradesPanel upgradesPanel; public WRScreen(WRMenu menu, Inventory playerInventory, Component name, ScreenStyle style) { super(menu, playerInventory, name, style); if (getMenu().isWUT()) addToLeftToolbar(cycleTerminalButton()); - widgets.add("upgrades", new UpgradesPanel(getMenu().getSlots(SlotSemantics.UPGRADE), getMenu().getHost())); + upgradesPanel = addUpgradePanel(widgets, getMenu()); if (getMenu().getToolbox().isPresent()) widgets.add("toolbox", new ToolboxPanel(style, getMenu().getToolbox().getName())); - //widgets.add("singularityBackground", new BackgroundPanel(style.getImage("singularityBackground"))); + } + +@Override + public void init() { + super.init(); + upgradesPanel.setMaxRows(Math.max(2, rowAmount)); } @Override diff --git a/src/main/resources/assets/ae2/screens/wireless_requester_terminal.json b/src/main/resources/assets/ae2/screens/wireless_requester_terminal.json index 44dc4a6..dba1fe6 100644 --- a/src/main/resources/assets/ae2/screens/wireless_requester_terminal.json +++ b/src/main/resources/assets/ae2/screens/wireless_requester_terminal.json @@ -1,4 +1,8 @@ { "$schema": "schema.json", - "includes": ["requester_terminal.json"] + "includes": [ + "requester_terminal.json", + "common/toolbox.json", + "wtlib/universal_terminal.json" + ] } \ No newline at end of file From 955fba770e5b9baa93312d1db26211b86dd38abd Mon Sep 17 00:00:00 2001 From: Mithi83 <28407460+Mithi83@users.noreply.github.com> Date: Fri, 15 Aug 2025 21:51:37 +0200 Subject: [PATCH 05/27] Handle keypress correctly in all cases Co-authored-by: Mari023 <38946771+Mari023@users.noreply.github.com> --- .../com/almostreliable/merequester/wireless/WRScreen.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java b/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java index 83845c6..bb5a258 100644 --- a/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java +++ b/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java @@ -40,4 +40,11 @@ public WTMenuHost getHost() { @Override public void storeState() {} + + @Override + public boolean keyPressed(int keyCode, int scanCode, int keyPressed) { + if (!super.keyPressed(keyCode, scanCode, keyPressed)) + return checkForTerminalKeys(keyCode, scanCode); + return true; + } } \ No newline at end of file From f4ed52d80a9192d1cefc37ad74bcf41c479ead13 Mon Sep 17 00:00:00 2001 From: Mithi83 <28407460+Mithi83@users.noreply.github.com> Date: Sat, 16 Aug 2025 20:28:43 +0200 Subject: [PATCH 06/27] Compile fixes --- .../com/almostreliable/merequester/wireless/WRMenuHost.java | 3 ++- .../java/com/almostreliable/merequester/wireless/WRScreen.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java b/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java index f22aec3..3753955 100644 --- a/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java +++ b/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java @@ -1,5 +1,7 @@ package com.almostreliable.merequester.wireless; +import com.almostreliable.merequester.terminal.RequesterTerminalHost; + import appeng.api.storage.ITerminalHost; import appeng.menu.ISubMenu; import appeng.menu.locator.ItemMenuHostLocator; @@ -11,7 +13,6 @@ import java.util.function.BiConsumer; -public class WRMenuHost extends WTMenuHost implements ITerminalHost { public class WRMenuHost extends WTMenuHost implements ITerminalHost, RequesterTerminalHost { public WRMenuHost(ItemWT item, Player player, ItemMenuHostLocator locator, BiConsumer returnToMainMenu) { diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java b/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java index bb5a258..b77a98c 100644 --- a/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java +++ b/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java @@ -8,6 +8,7 @@ import com.almostreliable.merequester.client.RequesterTerminalScreen; +import de.mari_023.ae2wtlib.api.gui.ScrollingUpgradesPanel; import de.mari_023.ae2wtlib.api.terminal.IUniversalTerminalCapable; import de.mari_023.ae2wtlib.api.terminal.WTMenuHost; @@ -15,7 +16,7 @@ import net.minecraft.world.entity.player.Inventory; public class WRScreen extends RequesterTerminalScreen implements IUniversalTerminalCapable { -private final ScrollingUpgradesPanel upgradesPanel; + private final ScrollingUpgradesPanel upgradesPanel; public WRScreen(WRMenu menu, Inventory playerInventory, Component name, ScreenStyle style) { super(menu, playerInventory, name, style); From 39350c000a2062c32fb51af69b024d089317bbea Mon Sep 17 00:00:00 2001 From: Mithi83 <28407460+Mithi83@users.noreply.github.com> Date: Sat, 16 Aug 2025 20:29:01 +0200 Subject: [PATCH 07/27] Add singularity slot --- .../java/com/almostreliable/merequester/wireless/WRMenu.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRMenu.java b/src/main/java/com/almostreliable/merequester/wireless/WRMenu.java index effd585..bc12aea 100644 --- a/src/main/java/com/almostreliable/merequester/wireless/WRMenu.java +++ b/src/main/java/com/almostreliable/merequester/wireless/WRMenu.java @@ -11,7 +11,9 @@ import com.almostreliable.merequester.Utils; import com.almostreliable.merequester.terminal.RequesterTerminalMenu; +import de.mari_023.ae2wtlib.api.gui.AE2wtlibSlotSemantics; import de.mari_023.ae2wtlib.api.terminal.ItemWUT; +import de.mari_023.ae2wtlib.api.terminal.WTMenuHost; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.MenuType; @@ -36,6 +38,7 @@ public WRMenu(int id, Inventory playerInventory, WRMenuHost host) { slot.setNotDraggable(); addSlot(slot, SlotSemantics.UPGRADE); } + addSlot(new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.QE_SINGULARITY, wrMenuHost.getSubInventory(WTMenuHost.INV_SINGULARITY), 0), AE2wtlibSlotSemantics.SINGULARITY); } @Override From f27dd321343b9119b098d5626239375d89814d9c Mon Sep 17 00:00:00 2001 From: Mithi83 <28407460+Mithi83@users.noreply.github.com> Date: Sun, 17 Aug 2025 20:15:57 +0200 Subject: [PATCH 08/27] Add keybind translation string --- src/main/resources/assets/merequester/lang/en_us.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/resources/assets/merequester/lang/en_us.json b/src/main/resources/assets/merequester/lang/en_us.json index 4e23bfa..6b0cf33 100644 --- a/src/main/resources/assets/merequester/lang/en_us.json +++ b/src/main/resources/assets/merequester/lang/en_us.json @@ -5,6 +5,8 @@ "item.merequester.wireless_requester_terminal": "Wireless Requester Terminal", "block.merequester.requester": "ME Requester", + "key.ae2.wireless_requester_terminal": "Open Wireless Requester Terminal", + "gui.merequester.requester_terminal": "ME Requ. Terminal", "gui.merequester.no_requesters": "No ME Requesters found!", From 15406eb42d6f1ce3f654fa4477323aab8c40229c Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 19:48:09 +0200 Subject: [PATCH 09/27] rename dependency gradle property and disable transitivity --- build.gradle.kts | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 0c6b2d3..658034a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -31,7 +31,7 @@ repositories { dependencies { implementation("org.appliedenergistics:appliedenergistics2:${almostgradle.getProperty("aeVersion")}") - implementation("de.mari_023:ae2wtlib_api:${almostgradle.getProperty("ae2wtlibVersion")}") + implementation("de.mari_023:ae2wtlib_api:${almostgradle.getProperty("wtlibVersion")}") { isTransitive = false } } tasks.withType { diff --git a/gradle.properties b/gradle.properties index b798ac9..c7c5836 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,7 +15,7 @@ githubRepo = merequester # mod dependencies aeVersion = 19.2.7 -ae2wtlibVersion = 19.2.5 +wtlibVersion = 19.2.5 # settings neoForge.parchment.minecraftVersion = 1.21.1 From 6e90d0df9aff20ea0ffb34a614e5935528f4b20c Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 19:48:32 +0200 Subject: [PATCH 10/27] add dependency to mods.toml with minimum version range --- src/main/resources/META-INF/neoforge.mods.toml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/resources/META-INF/neoforge.mods.toml b/src/main/resources/META-INF/neoforge.mods.toml index e582c11..6cb6d07 100644 --- a/src/main/resources/META-INF/neoforge.mods.toml +++ b/src/main/resources/META-INF/neoforge.mods.toml @@ -34,3 +34,10 @@ type = "REQUIRED" versionRange = "[${aeVersion},)" ordering = "AFTER" side = "BOTH" + +[[dependencies."${modId}"]] +modId = "ae2wtlib" +type = "OPTIONAL" +versionRange = "[${wtlibVersion},)" +ordering = "AFTER" +side = "BOTH" From 0799943ffb8f7b7447c2dc47d64b426b02e3c511 Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 19:54:41 +0200 Subject: [PATCH 11/27] update ae2 and neoforge required by ae2wtlib --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index c7c5836..c1ce519 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ modId = merequester modName = ME Requester modVersion = 1.2.0 minecraftVersion = 1.21.1 -neoforgeVersion = 21.1.113 +neoforgeVersion = 21.1.169 # replacement properties modAuthor = Almost Reliable @@ -14,7 +14,7 @@ githubUser = AlmostReliable githubRepo = merequester # mod dependencies -aeVersion = 19.2.7 +aeVersion = 19.2.13 wtlibVersion = 19.2.5 # settings From 8bef3da4a8a3103b86d1a2bda578ebc1e82288e5 Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 20:16:29 +0200 Subject: [PATCH 12/27] jij the api dependency and avoid publishing to POM --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 658034a..0d83a27 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -31,7 +31,7 @@ repositories { dependencies { implementation("org.appliedenergistics:appliedenergistics2:${almostgradle.getProperty("aeVersion")}") - implementation("de.mari_023:ae2wtlib_api:${almostgradle.getProperty("wtlibVersion")}") { isTransitive = false } + jarJar(localImplementation("de.mari_023:ae2wtlib_api:${almostgradle.getProperty("wtlibVersion")}") { isTransitive = false }) } tasks.withType { From 8f0a13d6c82dcd72973aa09dd7d38cea55a8d23d Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 20:18:42 +0200 Subject: [PATCH 13/27] publish ae2 to compile time and runtime in POM --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 0d83a27..0ed02a7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -30,7 +30,7 @@ repositories { } dependencies { - implementation("org.appliedenergistics:appliedenergistics2:${almostgradle.getProperty("aeVersion")}") + api("org.appliedenergistics:appliedenergistics2:${almostgradle.getProperty("aeVersion")}") jarJar(localImplementation("de.mari_023:ae2wtlib_api:${almostgradle.getProperty("wtlibVersion")}") { isTransitive = false }) } From 3e70818c4d4bcaaa6c279f738039a59e9aff6097 Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 20:24:08 +0200 Subject: [PATCH 14/27] add PR link in changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7ae05b..5fccfad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ All notable changes to this project will be documented in this file. ## Unreleased -- added ae2wtlib support and a wireless requester terminal + +- added ae2wtlib integration ([Mithi83](https://github.com/Mithi83),[Mari023](https://github.com/Mari023)@[#48](https://github.com/AlmostReliable/merequester/pull/48)) ## [1.2.0] - 2025-04-18 From 2963171620227517c817d98724b8eb1f015abd6e Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:05:13 +0200 Subject: [PATCH 15/27] move to compat package and make registration conditional --- .../wtlib/ReqWirelessTerminalItem.java} | 13 ++- .../wtlib/ReqWirelessTerminalMenu.java} | 35 ++++---- .../wtlib/ReqWirelessTerminalMenuHost.java} | 12 +-- .../wtlib/ReqWirelessTerminalScreen.java} | 30 +++---- .../compat/wtlib/WirelessTerminalCompat.java | 89 +++++++++++++++++++ .../compat/wtlib/package-info.java | 4 + .../merequester/core/Registration.java | 67 ++++---------- .../merequester/wireless/package-info.java | 9 -- 8 files changed, 157 insertions(+), 102 deletions(-) rename src/main/java/com/almostreliable/merequester/{wireless/ItemWR.java => compat/wtlib/ReqWirelessTerminalItem.java} (66%) rename src/main/java/com/almostreliable/merequester/{wireless/WRMenu.java => compat/wtlib/ReqWirelessTerminalMenu.java} (69%) rename src/main/java/com/almostreliable/merequester/{wireless/WRMenuHost.java => compat/wtlib/ReqWirelessTerminalMenuHost.java} (58%) rename src/main/java/com/almostreliable/merequester/{wireless/WRScreen.java => compat/wtlib/ReqWirelessTerminalScreen.java} (69%) create mode 100644 src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java create mode 100644 src/main/java/com/almostreliable/merequester/compat/wtlib/package-info.java delete mode 100644 src/main/java/com/almostreliable/merequester/wireless/package-info.java diff --git a/src/main/java/com/almostreliable/merequester/wireless/ItemWR.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalItem.java similarity index 66% rename from src/main/java/com/almostreliable/merequester/wireless/ItemWR.java rename to src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalItem.java index f470276..590949a 100644 --- a/src/main/java/com/almostreliable/merequester/wireless/ItemWR.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalItem.java @@ -1,16 +1,15 @@ -package com.almostreliable.merequester.wireless; - -import appeng.menu.locator.ItemMenuHostLocator; -import de.mari_023.ae2wtlib.api.terminal.ItemWT; +package com.almostreliable.merequester.compat.wtlib; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.MenuType; -//import net.minecraft.world.item.ItemStack; -public class ItemWR extends ItemWT { +import appeng.menu.locator.ItemMenuHostLocator; +import de.mari_023.ae2wtlib.api.terminal.ItemWT; + +public class ReqWirelessTerminalItem extends ItemWT { @Override public MenuType getMenuType(ItemMenuHostLocator itemMenuHostLocator, Player player) { - return WRMenu.TYPE; + return ReqWirelessTerminalMenu.TYPE; } } \ No newline at end of file diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRMenu.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenu.java similarity index 69% rename from src/main/java/com/almostreliable/merequester/wireless/WRMenu.java rename to src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenu.java index bc12aea..e9be3c3 100644 --- a/src/main/java/com/almostreliable/merequester/wireless/WRMenu.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenu.java @@ -1,4 +1,11 @@ -package com.almostreliable.merequester.wireless; +package com.almostreliable.merequester.compat.wtlib; + +import com.almostreliable.merequester.MERequester; +import com.almostreliable.merequester.Utils; +import com.almostreliable.merequester.terminal.RequesterTerminalMenu; + +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.MenuType; import appeng.api.storage.ITerminalHost; import appeng.api.upgrades.IUpgradeInventory; @@ -6,28 +13,20 @@ import appeng.menu.ToolboxMenu; import appeng.menu.implementations.MenuTypeBuilder; import appeng.menu.slot.RestrictedInputSlot; - -import com.almostreliable.merequester.MERequester; -import com.almostreliable.merequester.Utils; -import com.almostreliable.merequester.terminal.RequesterTerminalMenu; - import de.mari_023.ae2wtlib.api.gui.AE2wtlibSlotSemantics; import de.mari_023.ae2wtlib.api.terminal.ItemWUT; import de.mari_023.ae2wtlib.api.terminal.WTMenuHost; -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.inventory.MenuType; - -public class WRMenu extends RequesterTerminalMenu { +public class ReqWirelessTerminalMenu extends RequesterTerminalMenu { - public static final MenuType TYPE = MenuTypeBuilder - .create(WRMenu::new, WRMenuHost.class) + public static final MenuType TYPE = MenuTypeBuilder + .create(ReqWirelessTerminalMenu::new, ReqWirelessTerminalMenuHost.class) .build(Utils.getRL(MERequester.WIRELESS_TERMINAL_ID)); - private final WRMenuHost wrMenuHost; + private final ReqWirelessTerminalMenuHost wrMenuHost; private final ToolboxMenu toolboxMenu; - public WRMenu(int id, Inventory playerInventory, WRMenuHost host) { + public ReqWirelessTerminalMenu(int id, Inventory playerInventory, ReqWirelessTerminalMenuHost host) { super(TYPE, id, playerInventory, host); wrMenuHost = host; toolboxMenu = new ToolboxMenu(this); @@ -38,7 +37,13 @@ public WRMenu(int id, Inventory playerInventory, WRMenuHost host) { slot.setNotDraggable(); addSlot(slot, SlotSemantics.UPGRADE); } - addSlot(new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.QE_SINGULARITY, wrMenuHost.getSubInventory(WTMenuHost.INV_SINGULARITY), 0), AE2wtlibSlotSemantics.SINGULARITY); + addSlot( + new RestrictedInputSlot( + RestrictedInputSlot.PlacableItemType.QE_SINGULARITY, + wrMenuHost.getSubInventory(WTMenuHost.INV_SINGULARITY), + 0 + ), AE2wtlibSlotSemantics.SINGULARITY + ); } @Override diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenuHost.java similarity index 58% rename from src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java rename to src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenuHost.java index 3753955..84f4d49 100644 --- a/src/main/java/com/almostreliable/merequester/wireless/WRMenuHost.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenuHost.java @@ -1,21 +1,21 @@ -package com.almostreliable.merequester.wireless; +package com.almostreliable.merequester.compat.wtlib; import com.almostreliable.merequester.terminal.RequesterTerminalHost; +import net.minecraft.world.entity.player.Player; + import appeng.api.storage.ITerminalHost; import appeng.menu.ISubMenu; import appeng.menu.locator.ItemMenuHostLocator; - import de.mari_023.ae2wtlib.api.terminal.ItemWT; import de.mari_023.ae2wtlib.api.terminal.WTMenuHost; -import net.minecraft.world.entity.player.Player; - import java.util.function.BiConsumer; -public class WRMenuHost extends WTMenuHost implements ITerminalHost, RequesterTerminalHost { +public class ReqWirelessTerminalMenuHost extends WTMenuHost implements ITerminalHost, RequesterTerminalHost { - public WRMenuHost(ItemWT item, Player player, ItemMenuHostLocator locator, BiConsumer returnToMainMenu) { + public ReqWirelessTerminalMenuHost( + ItemWT item, Player player, ItemMenuHostLocator locator, BiConsumer returnToMainMenu) { super(item, player, locator, returnToMainMenu); } } \ No newline at end of file diff --git a/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalScreen.java similarity index 69% rename from src/main/java/com/almostreliable/merequester/wireless/WRScreen.java rename to src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalScreen.java index b77a98c..8e6b27d 100644 --- a/src/main/java/com/almostreliable/merequester/wireless/WRScreen.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalScreen.java @@ -1,34 +1,33 @@ -package com.almostreliable.merequester.wireless; - -import appeng.client.gui.style.ScreenStyle; -import appeng.client.gui.widgets.BackgroundPanel; -import appeng.client.gui.widgets.ToolboxPanel; -import appeng.client.gui.widgets.UpgradesPanel; -import appeng.menu.SlotSemantics; +package com.almostreliable.merequester.compat.wtlib; import com.almostreliable.merequester.client.RequesterTerminalScreen; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.player.Inventory; + +import appeng.client.gui.style.ScreenStyle; +import appeng.client.gui.widgets.ToolboxPanel; import de.mari_023.ae2wtlib.api.gui.ScrollingUpgradesPanel; import de.mari_023.ae2wtlib.api.terminal.IUniversalTerminalCapable; import de.mari_023.ae2wtlib.api.terminal.WTMenuHost; -import net.minecraft.network.chat.Component; -import net.minecraft.world.entity.player.Inventory; +public class ReqWirelessTerminalScreen extends RequesterTerminalScreen implements IUniversalTerminalCapable { -public class WRScreen extends RequesterTerminalScreen implements IUniversalTerminalCapable { private final ScrollingUpgradesPanel upgradesPanel; - public WRScreen(WRMenu menu, Inventory playerInventory, Component name, ScreenStyle style) { + public ReqWirelessTerminalScreen(ReqWirelessTerminalMenu menu, Inventory playerInventory, Component name, ScreenStyle style) { super(menu, playerInventory, name, style); - if (getMenu().isWUT()) + if (getMenu().isWUT()) { addToLeftToolbar(cycleTerminalButton()); + } upgradesPanel = addUpgradePanel(widgets, getMenu()); - if (getMenu().getToolbox().isPresent()) + if (getMenu().getToolbox().isPresent()) { widgets.add("toolbox", new ToolboxPanel(style, getMenu().getToolbox().getName())); + } } -@Override + @Override public void init() { super.init(); upgradesPanel.setMaxRows(Math.max(2, rowAmount)); @@ -44,8 +43,9 @@ public void storeState() {} @Override public boolean keyPressed(int keyCode, int scanCode, int keyPressed) { - if (!super.keyPressed(keyCode, scanCode, keyPressed)) + if (!super.keyPressed(keyCode, scanCode, keyPressed)) { return checkForTerminalKeys(keyCode, scanCode); + } return true; } } \ No newline at end of file diff --git a/src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java new file mode 100644 index 0000000..d2475ca --- /dev/null +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java @@ -0,0 +1,89 @@ +package com.almostreliable.merequester.compat.wtlib; + +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.level.ItemLike; +import net.neoforged.fml.ModList; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredItem; +import net.neoforged.neoforge.registries.DeferredRegister; + +import appeng.api.features.GridLinkables; +import de.mari_023.ae2wtlib.api.gui.Icon; +import de.mari_023.ae2wtlib.api.registration.AddTerminalEvent; + +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +import static com.almostreliable.merequester.MERequester.WIRELESS_TERMINAL_ID; + +@SuppressWarnings({"NonConstantFieldWithUpperCaseName", "StaticVariableMayNotBeInitialized"}) +public final class WirelessTerminalCompat { + + public static final WirelessTerminalCompat INSTANCE = new WirelessTerminalCompat(); + + public void init(DeferredRegister.Items itemRegistry, DeferredRegister> menuRegistry) { + if (isLoaded()) { + Guard.init(itemRegistry, menuRegistry); + } + } + + public void registerCapabilities() { + if (isLoaded()) { + Guard.registerCapabilities(); + } + } + + public Iterable collectItems() { + if (!isLoaded()) { + return List.of(); + } + + return Guard.collectItems(); + } + + private boolean isLoaded() { + return ModList.get().isLoaded("ae2wtlib"); + } + + private WirelessTerminalCompat() {} + + @SuppressWarnings("StaticVariableUsedBeforeInitialization") + public static final class Guard { + + @Nullable + static DeferredItem WIRELESS_REQUESTER_TERMINAL; + @Nullable + static DeferredHolder, MenuType> WIRELESS_REQUESTER_TERMINAL_MENU; + + private static void init(DeferredRegister.Items itemRegistry, DeferredRegister> menuRegistry) { + + WIRELESS_REQUESTER_TERMINAL = itemRegistry.registerItem( + WIRELESS_TERMINAL_ID, + properties -> new ReqWirelessTerminalItem() + ); + WIRELESS_REQUESTER_TERMINAL_MENU = menuRegistry.register( + WIRELESS_TERMINAL_ID, + () -> ReqWirelessTerminalMenu.TYPE + ); + + AddTerminalEvent.register(event -> event.builder( + "requester", ReqWirelessTerminalMenuHost::new, ReqWirelessTerminalMenu.TYPE, WIRELESS_REQUESTER_TERMINAL.get(), + Icon.PATTERN_ACCESS + ) + .addTerminal()); + } + + private static void registerCapabilities() { + assert WIRELESS_REQUESTER_TERMINAL != null; + GridLinkables.register(WIRELESS_REQUESTER_TERMINAL, appeng.items.tools.powered.WirelessTerminalItem.LINKABLE_HANDLER); + } + + private static Iterable collectItems() { + assert WIRELESS_REQUESTER_TERMINAL != null; + return List.of(WIRELESS_REQUESTER_TERMINAL.get()); + } + + private Guard() {} + } +} diff --git a/src/main/java/com/almostreliable/merequester/compat/wtlib/package-info.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/package-info.java new file mode 100644 index 0000000..c17aa3b --- /dev/null +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/package-info.java @@ -0,0 +1,4 @@ +@NonnullDefault +package com.almostreliable.merequester.compat.wtlib; + +import org.lwjgl.system.NonnullDefault; diff --git a/src/main/java/com/almostreliable/merequester/core/Registration.java b/src/main/java/com/almostreliable/merequester/core/Registration.java index bde9307..04a7d3a 100644 --- a/src/main/java/com/almostreliable/merequester/core/Registration.java +++ b/src/main/java/com/almostreliable/merequester/core/Registration.java @@ -2,6 +2,9 @@ import com.almostreliable.merequester.ModConstants; import com.almostreliable.merequester.Utils; +import com.almostreliable.merequester.compat.wtlib.ReqWirelessTerminalMenu; +import com.almostreliable.merequester.compat.wtlib.ReqWirelessTerminalScreen; +import com.almostreliable.merequester.compat.wtlib.WirelessTerminalCompat; import com.almostreliable.merequester.requester.Request; import com.almostreliable.merequester.requester.RequesterBlock; import com.almostreliable.merequester.requester.RequesterBlockEntity; @@ -9,12 +12,6 @@ import com.almostreliable.merequester.terminal.RequesterTerminalMenu; import com.almostreliable.merequester.terminal.RequesterTerminalPart; -import appeng.api.implementations.items.IAEItemPowerStorage; -import appeng.items.tools.powered.powersink.PoweredItemCapabilities; -import de.mari_023.ae2wtlib.api.gui.Icon; -import de.mari_023.ae2wtlib.api.registration.AddTerminalEvent; -import net.neoforged.neoforge.capabilities.Capabilities; - import net.minecraft.core.component.DataComponentType; import net.minecraft.core.registries.Registries; import net.minecraft.network.codec.ByteBufCodecs; @@ -23,30 +20,8 @@ import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; +import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.entity.BlockEntityType; - -import com.almostreliable.merequester.ModConstants; -import com.almostreliable.merequester.Utils; -import com.almostreliable.merequester.requester.Request; -import com.almostreliable.merequester.requester.RequesterBlock; -import com.almostreliable.merequester.requester.RequesterBlockEntity; -import com.almostreliable.merequester.requester.RequesterMenu; -import com.almostreliable.merequester.terminal.RequesterTerminalMenu; -import com.almostreliable.merequester.terminal.RequesterTerminalPart; -import com.almostreliable.merequester.wireless.ItemWR; -import com.almostreliable.merequester.wireless.WRMenu; -import com.almostreliable.merequester.wireless.WRMenuHost; -import com.almostreliable.merequester.wireless.WRScreen; - -import appeng.api.AECapabilities; -import appeng.api.features.GridLinkables; -import appeng.api.parts.PartModels; -import appeng.block.AEBaseBlock; -import appeng.blockentity.AEBaseBlockEntity; -import appeng.init.client.InitScreens; -import appeng.items.parts.PartItem; -import appeng.items.parts.PartModelsHelper; -import appeng.items.tools.powered.WirelessTerminalItem; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent; @@ -61,6 +36,7 @@ import appeng.api.parts.PartModels; import appeng.block.AEBaseBlock; import appeng.blockentity.AEBaseBlockEntity; +import appeng.init.client.InitScreens; import appeng.items.parts.PartItem; import appeng.items.parts.PartModelsHelper; @@ -68,7 +44,6 @@ import static com.almostreliable.merequester.MERequester.REQUESTER_ID; import static com.almostreliable.merequester.MERequester.TERMINAL_ID; -import static com.almostreliable.merequester.MERequester.WIRELESS_TERMINAL_ID; public final class Registration { @@ -131,17 +106,6 @@ public final class Registration { () -> RequesterTerminalMenu.TYPE ); - public static final DeferredItem WIRELESS_REQUESTER_TERMINAL = ITEMS.registerItem( - WIRELESS_TERMINAL_ID, - properties -> { - return new ItemWR(); - } - ); - public static final DeferredHolder, MenuType> WIRELESS_REQUESTER_TERMINAL_MENU = MENUS.register( - WIRELESS_TERMINAL_ID, - () -> WRMenu.TYPE - ); - public static final DeferredHolder, DataComponentType>> EXPORTED_REQUESTS = COMPONENTS.register( "exported_requests", @@ -159,17 +123,13 @@ public static void init(IEventBus modEventBus) { modEventBus.addListener(Tab::initContents); modEventBus.addListener(Registration::registerScreens); + WirelessTerminalCompat.INSTANCE.init(ITEMS, MENUS); + BLOCKS.register(modEventBus); ITEMS.register(modEventBus); BLOCK_ENTITIES.register(modEventBus); MENUS.register(modEventBus); COMPONENTS.register(modEventBus); - - AddTerminalEvent.register((event -> { - event.builder("requester", WRMenuHost::new, WRMenu.TYPE, WIRELESS_REQUESTER_TERMINAL.get(), - Icon.PATTERN_ACCESS) - .addTerminal(); - })); } private static void registerContents(RegisterEvent event) { @@ -185,11 +145,16 @@ private static void registerCapabilities(RegisterCapabilitiesEvent event) { (requester, ctx) -> requester ); - GridLinkables.register(WIRELESS_REQUESTER_TERMINAL, WirelessTerminalItem.LINKABLE_HANDLER); + WirelessTerminalCompat.INSTANCE.registerCapabilities(); } private static void registerScreens(RegisterMenuScreensEvent event) { - InitScreens.register(event, WRMenu.TYPE, WRScreen::new, "/screens/wireless_requester_terminal.json"); + InitScreens.register( + event, + ReqWirelessTerminalMenu.TYPE, + ReqWirelessTerminalScreen::new, + "/screens/wireless_requester_terminal.json" + ); } public static final class Tab { @@ -207,7 +172,9 @@ private static void initContents(BuildCreativeModeTabContentsEvent event) { if (event.getTabKey() == TAB_KEY) { event.accept(REQUESTER_BLOCK); event.accept(REQUESTER_TERMINAL); - event.accept(WIRELESS_REQUESTER_TERMINAL); + for (ItemLike item : WirelessTerminalCompat.INSTANCE.collectItems()) { + event.accept(item); + } } } diff --git a/src/main/java/com/almostreliable/merequester/wireless/package-info.java b/src/main/java/com/almostreliable/merequester/wireless/package-info.java deleted file mode 100644 index 65d77cb..0000000 --- a/src/main/java/com/almostreliable/merequester/wireless/package-info.java +++ /dev/null @@ -1,9 +0,0 @@ -@FieldsAreNonnullByDefault -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -package com.almostreliable.merequester.wireless; - -import javax.annotation.ParametersAreNonnullByDefault; - -import net.minecraft.FieldsAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; \ No newline at end of file From 4fb9bc30a13b6e9d59c623f79f190dd9c2ccaabb Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:10:24 +0200 Subject: [PATCH 16/27] move client registration to conditional compat class --- .../merequester/MERequester.java | 1 - .../merequester/MERequesterClient.java | 2 ++ .../compat/wtlib/ReqWirelessTerminalMenu.java | 3 +- .../compat/wtlib/WirelessTerminalCompat.java | 29 +++++++++++++++---- .../merequester/core/Registration.java | 14 --------- 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/almostreliable/merequester/MERequester.java b/src/main/java/com/almostreliable/merequester/MERequester.java index f5636b4..d1aa378 100644 --- a/src/main/java/com/almostreliable/merequester/MERequester.java +++ b/src/main/java/com/almostreliable/merequester/MERequester.java @@ -17,7 +17,6 @@ public final class MERequester { public static final Logger LOGGER = LogUtils.getLogger(); public static final String REQUESTER_ID = "requester"; public static final String TERMINAL_ID = "requester_terminal"; - public static final String WIRELESS_TERMINAL_ID = "wireless_requester_terminal"; public MERequester(IEventBus modEventBus, ModContainer modContainer) { Registration.init(modEventBus); diff --git a/src/main/java/com/almostreliable/merequester/MERequesterClient.java b/src/main/java/com/almostreliable/merequester/MERequesterClient.java index 945c035..3e68ee3 100644 --- a/src/main/java/com/almostreliable/merequester/MERequesterClient.java +++ b/src/main/java/com/almostreliable/merequester/MERequesterClient.java @@ -2,6 +2,7 @@ import com.almostreliable.merequester.client.RequesterScreen; import com.almostreliable.merequester.client.RequesterTerminalScreen; +import com.almostreliable.merequester.compat.wtlib.WirelessTerminalCompat; import com.almostreliable.merequester.core.Registration; import com.almostreliable.merequester.requester.RequesterMenu; import com.almostreliable.merequester.terminal.RequesterTerminalMenu; @@ -35,6 +36,7 @@ InitScreens. TYPE = MenuTypeBuilder .create(ReqWirelessTerminalMenu::new, ReqWirelessTerminalMenuHost.class) - .build(Utils.getRL(MERequester.WIRELESS_TERMINAL_ID)); + .build(Utils.getRL(WirelessTerminalCompat.TERMINAL_ID)); private final ReqWirelessTerminalMenuHost wrMenuHost; private final ToolboxMenu toolboxMenu; diff --git a/src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java index d2475ca..a8b9a1b 100644 --- a/src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java @@ -3,11 +3,13 @@ import net.minecraft.world.inventory.MenuType; import net.minecraft.world.level.ItemLike; import net.neoforged.fml.ModList; +import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredItem; import net.neoforged.neoforge.registries.DeferredRegister; import appeng.api.features.GridLinkables; +import appeng.init.client.InitScreens; import de.mari_023.ae2wtlib.api.gui.Icon; import de.mari_023.ae2wtlib.api.registration.AddTerminalEvent; @@ -15,12 +17,11 @@ import java.util.List; -import static com.almostreliable.merequester.MERequester.WIRELESS_TERMINAL_ID; - @SuppressWarnings({"NonConstantFieldWithUpperCaseName", "StaticVariableMayNotBeInitialized"}) public final class WirelessTerminalCompat { public static final WirelessTerminalCompat INSTANCE = new WirelessTerminalCompat(); + private static final String TERMINAL_ID = "wireless_requester_terminal"; public void init(DeferredRegister.Items itemRegistry, DeferredRegister> menuRegistry) { if (isLoaded()) { @@ -28,6 +29,12 @@ public void init(DeferredRegister.Items itemRegistry, DeferredRegister WIRELESS_REQUESTER_TERMINAL; @@ -59,11 +66,11 @@ public static final class Guard { private static void init(DeferredRegister.Items itemRegistry, DeferredRegister> menuRegistry) { WIRELESS_REQUESTER_TERMINAL = itemRegistry.registerItem( - WIRELESS_TERMINAL_ID, + TERMINAL_ID, properties -> new ReqWirelessTerminalItem() ); WIRELESS_REQUESTER_TERMINAL_MENU = menuRegistry.register( - WIRELESS_TERMINAL_ID, + TERMINAL_ID, () -> ReqWirelessTerminalMenu.TYPE ); @@ -86,4 +93,16 @@ private static Iterable collectItems() { private Guard() {} } + + private static final class GuardClient { + + private static void init(RegisterMenuScreensEvent event) { + InitScreens.register( + event, + ReqWirelessTerminalMenu.TYPE, + ReqWirelessTerminalScreen::new, + String.format("/screens/%s.json", TERMINAL_ID) + ); + } + } } diff --git a/src/main/java/com/almostreliable/merequester/core/Registration.java b/src/main/java/com/almostreliable/merequester/core/Registration.java index 04a7d3a..e349dde 100644 --- a/src/main/java/com/almostreliable/merequester/core/Registration.java +++ b/src/main/java/com/almostreliable/merequester/core/Registration.java @@ -2,8 +2,6 @@ import com.almostreliable.merequester.ModConstants; import com.almostreliable.merequester.Utils; -import com.almostreliable.merequester.compat.wtlib.ReqWirelessTerminalMenu; -import com.almostreliable.merequester.compat.wtlib.ReqWirelessTerminalScreen; import com.almostreliable.merequester.compat.wtlib.WirelessTerminalCompat; import com.almostreliable.merequester.requester.Request; import com.almostreliable.merequester.requester.RequesterBlock; @@ -24,7 +22,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; -import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent; import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent; import net.neoforged.neoforge.registries.DeferredBlock; import net.neoforged.neoforge.registries.DeferredHolder; @@ -36,7 +33,6 @@ import appeng.api.parts.PartModels; import appeng.block.AEBaseBlock; import appeng.blockentity.AEBaseBlockEntity; -import appeng.init.client.InitScreens; import appeng.items.parts.PartItem; import appeng.items.parts.PartModelsHelper; @@ -121,7 +117,6 @@ public static void init(IEventBus modEventBus) { modEventBus.addListener(Registration::registerContents); modEventBus.addListener(Registration::registerCapabilities); modEventBus.addListener(Tab::initContents); - modEventBus.addListener(Registration::registerScreens); WirelessTerminalCompat.INSTANCE.init(ITEMS, MENUS); @@ -148,15 +143,6 @@ private static void registerCapabilities(RegisterCapabilitiesEvent event) { WirelessTerminalCompat.INSTANCE.registerCapabilities(); } - private static void registerScreens(RegisterMenuScreensEvent event) { - InitScreens.register( - event, - ReqWirelessTerminalMenu.TYPE, - ReqWirelessTerminalScreen::new, - "/screens/wireless_requester_terminal.json" - ); - } - public static final class Tab { public static final ResourceKey TAB_KEY = ResourceKey.create(Registries.CREATIVE_MODE_TAB, Utils.getRL("tab")); From 881bf992274a16ff4dfbfc0b9141f761ba1a9594 Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:13:39 +0200 Subject: [PATCH 17/27] lower visibility for compat classes --- .../compat/wtlib/ReqWirelessTerminalItem.java | 2 +- .../compat/wtlib/ReqWirelessTerminalMenu.java | 12 ++++++------ .../compat/wtlib/ReqWirelessTerminalMenuHost.java | 4 ++-- .../compat/wtlib/ReqWirelessTerminalScreen.java | 4 ++-- .../compat/wtlib/WirelessTerminalCompat.java | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalItem.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalItem.java index 590949a..3636c2a 100644 --- a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalItem.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalItem.java @@ -6,7 +6,7 @@ import appeng.menu.locator.ItemMenuHostLocator; import de.mari_023.ae2wtlib.api.terminal.ItemWT; -public class ReqWirelessTerminalItem extends ItemWT { +class ReqWirelessTerminalItem extends ItemWT { @Override public MenuType getMenuType(ItemMenuHostLocator itemMenuHostLocator, Player player) { diff --git a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenu.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenu.java index 62a0cad..f3e2715 100644 --- a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenu.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenu.java @@ -16,16 +16,16 @@ import de.mari_023.ae2wtlib.api.terminal.ItemWUT; import de.mari_023.ae2wtlib.api.terminal.WTMenuHost; -public class ReqWirelessTerminalMenu extends RequesterTerminalMenu { +final class ReqWirelessTerminalMenu extends RequesterTerminalMenu { - public static final MenuType TYPE = MenuTypeBuilder + static final MenuType TYPE = MenuTypeBuilder .create(ReqWirelessTerminalMenu::new, ReqWirelessTerminalMenuHost.class) .build(Utils.getRL(WirelessTerminalCompat.TERMINAL_ID)); private final ReqWirelessTerminalMenuHost wrMenuHost; private final ToolboxMenu toolboxMenu; - public ReqWirelessTerminalMenu(int id, Inventory playerInventory, ReqWirelessTerminalMenuHost host) { + private ReqWirelessTerminalMenu(int id, Inventory playerInventory, ReqWirelessTerminalMenuHost host) { super(TYPE, id, playerInventory, host); wrMenuHost = host; toolboxMenu = new ToolboxMenu(this); @@ -51,15 +51,15 @@ public void broadcastChanges() { super.broadcastChanges(); } - public boolean isWUT() { + boolean isWUT() { return wrMenuHost.getItemStack().getItem() instanceof ItemWUT; } - public ITerminalHost getHost() { + ITerminalHost getHost() { return wrMenuHost; } - public ToolboxMenu getToolbox() { + ToolboxMenu getToolbox() { return toolboxMenu; } } \ No newline at end of file diff --git a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenuHost.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenuHost.java index 84f4d49..7055c4d 100644 --- a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenuHost.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenuHost.java @@ -12,9 +12,9 @@ import java.util.function.BiConsumer; -public class ReqWirelessTerminalMenuHost extends WTMenuHost implements ITerminalHost, RequesterTerminalHost { +class ReqWirelessTerminalMenuHost extends WTMenuHost implements ITerminalHost, RequesterTerminalHost { - public ReqWirelessTerminalMenuHost( + ReqWirelessTerminalMenuHost( ItemWT item, Player player, ItemMenuHostLocator locator, BiConsumer returnToMainMenu) { super(item, player, locator, returnToMainMenu); } diff --git a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalScreen.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalScreen.java index 8e6b27d..0b0b337 100644 --- a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalScreen.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalScreen.java @@ -11,11 +11,11 @@ import de.mari_023.ae2wtlib.api.terminal.IUniversalTerminalCapable; import de.mari_023.ae2wtlib.api.terminal.WTMenuHost; -public class ReqWirelessTerminalScreen extends RequesterTerminalScreen implements IUniversalTerminalCapable { +class ReqWirelessTerminalScreen extends RequesterTerminalScreen implements IUniversalTerminalCapable { private final ScrollingUpgradesPanel upgradesPanel; - public ReqWirelessTerminalScreen(ReqWirelessTerminalMenu menu, Inventory playerInventory, Component name, ScreenStyle style) { + ReqWirelessTerminalScreen(ReqWirelessTerminalMenu menu, Inventory playerInventory, Component name, ScreenStyle style) { super(menu, playerInventory, name, style); if (getMenu().isWUT()) { addToLeftToolbar(cycleTerminalButton()); diff --git a/src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java index a8b9a1b..ecf18e5 100644 --- a/src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/WirelessTerminalCompat.java @@ -21,7 +21,7 @@ public final class WirelessTerminalCompat { public static final WirelessTerminalCompat INSTANCE = new WirelessTerminalCompat(); - private static final String TERMINAL_ID = "wireless_requester_terminal"; + static final String TERMINAL_ID = "wireless_requester_terminal"; public void init(DeferredRegister.Items itemRegistry, DeferredRegister> menuRegistry) { if (isLoaded()) { From 1635ca0fcf87d5e35cb09a885f0d2dd99ca1038f Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:15:03 +0200 Subject: [PATCH 18/27] remove redundant interfaces on terminal menu host --- .../compat/wtlib/ReqWirelessTerminalMenuHost.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenuHost.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenuHost.java index 7055c4d..ca24b9e 100644 --- a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenuHost.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalMenuHost.java @@ -1,10 +1,7 @@ package com.almostreliable.merequester.compat.wtlib; -import com.almostreliable.merequester.terminal.RequesterTerminalHost; - import net.minecraft.world.entity.player.Player; -import appeng.api.storage.ITerminalHost; import appeng.menu.ISubMenu; import appeng.menu.locator.ItemMenuHostLocator; import de.mari_023.ae2wtlib.api.terminal.ItemWT; @@ -12,7 +9,7 @@ import java.util.function.BiConsumer; -class ReqWirelessTerminalMenuHost extends WTMenuHost implements ITerminalHost, RequesterTerminalHost { +class ReqWirelessTerminalMenuHost extends WTMenuHost { ReqWirelessTerminalMenuHost( ItemWT item, Player player, ItemMenuHostLocator locator, BiConsumer returnToMainMenu) { From 9695f51e030d9d17dbc0ef32c80246b1b178d5b0 Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:15:37 +0200 Subject: [PATCH 19/27] simplify boolean logic in terminal screen key press check --- .../merequester/compat/wtlib/ReqWirelessTerminalScreen.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalScreen.java b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalScreen.java index 0b0b337..32a23cc 100644 --- a/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalScreen.java +++ b/src/main/java/com/almostreliable/merequester/compat/wtlib/ReqWirelessTerminalScreen.java @@ -43,9 +43,6 @@ public void storeState() {} @Override public boolean keyPressed(int keyCode, int scanCode, int keyPressed) { - if (!super.keyPressed(keyCode, scanCode, keyPressed)) { - return checkForTerminalKeys(keyCode, scanCode); - } - return true; + return super.keyPressed(keyCode, scanCode, keyPressed) || checkForTerminalKeys(keyCode, scanCode); } } \ No newline at end of file From cb4472b43f8f00b19e512fefe466fa0efd1301ca Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:18:20 +0200 Subject: [PATCH 20/27] add german translation for wireless terminal --- src/main/resources/assets/merequester/lang/de_de.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/assets/merequester/lang/de_de.json b/src/main/resources/assets/merequester/lang/de_de.json index 7bdb259..9636e9f 100644 --- a/src/main/resources/assets/merequester/lang/de_de.json +++ b/src/main/resources/assets/merequester/lang/de_de.json @@ -2,6 +2,7 @@ "itemGroup.merequester.tab": "ME Anforderer", "item.merequester.requester_terminal": "ME Anforderungskonsole", + "item.merequester.wireless_requester_terminal": "Kabellose ME Anforderungskonsole", "block.merequester.requester": "ME Anforderer", "gui.merequester.requester_terminal": "ME Anforderungsk.", From 75cdf62d74605a7959f3d21dd7d56d8ebcdbbf03 Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:25:05 +0200 Subject: [PATCH 21/27] rename recipe sub directory --- .../recipe/{wireless_requester => wireless}/combine_access.json | 0 .../recipe/{wireless_requester => wireless}/combine_crafting.json | 0 .../recipe/{wireless_requester => wireless}/combine_encoding.json | 0 .../{wireless_requester => wireless}/upgrade_requester.json | 0 .../wireless_requester_terminal.json | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/data/merequester/recipe/{wireless_requester => wireless}/combine_access.json (100%) rename src/main/resources/data/merequester/recipe/{wireless_requester => wireless}/combine_crafting.json (100%) rename src/main/resources/data/merequester/recipe/{wireless_requester => wireless}/combine_encoding.json (100%) rename src/main/resources/data/merequester/recipe/{wireless_requester => wireless}/upgrade_requester.json (100%) rename src/main/resources/data/merequester/recipe/{wireless_requester => wireless}/wireless_requester_terminal.json (100%) diff --git a/src/main/resources/data/merequester/recipe/wireless_requester/combine_access.json b/src/main/resources/data/merequester/recipe/wireless/combine_access.json similarity index 100% rename from src/main/resources/data/merequester/recipe/wireless_requester/combine_access.json rename to src/main/resources/data/merequester/recipe/wireless/combine_access.json diff --git a/src/main/resources/data/merequester/recipe/wireless_requester/combine_crafting.json b/src/main/resources/data/merequester/recipe/wireless/combine_crafting.json similarity index 100% rename from src/main/resources/data/merequester/recipe/wireless_requester/combine_crafting.json rename to src/main/resources/data/merequester/recipe/wireless/combine_crafting.json diff --git a/src/main/resources/data/merequester/recipe/wireless_requester/combine_encoding.json b/src/main/resources/data/merequester/recipe/wireless/combine_encoding.json similarity index 100% rename from src/main/resources/data/merequester/recipe/wireless_requester/combine_encoding.json rename to src/main/resources/data/merequester/recipe/wireless/combine_encoding.json diff --git a/src/main/resources/data/merequester/recipe/wireless_requester/upgrade_requester.json b/src/main/resources/data/merequester/recipe/wireless/upgrade_requester.json similarity index 100% rename from src/main/resources/data/merequester/recipe/wireless_requester/upgrade_requester.json rename to src/main/resources/data/merequester/recipe/wireless/upgrade_requester.json diff --git a/src/main/resources/data/merequester/recipe/wireless_requester/wireless_requester_terminal.json b/src/main/resources/data/merequester/recipe/wireless/wireless_requester_terminal.json similarity index 100% rename from src/main/resources/data/merequester/recipe/wireless_requester/wireless_requester_terminal.json rename to src/main/resources/data/merequester/recipe/wireless/wireless_requester_terminal.json From e515e84f2e08ebf94f9ecfc350b3e3c7f7e875ca Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:26:07 +0200 Subject: [PATCH 22/27] make wireless terminal recipe conditional --- .../recipe/wireless/wireless_requester_terminal.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/resources/data/merequester/recipe/wireless/wireless_requester_terminal.json b/src/main/resources/data/merequester/recipe/wireless/wireless_requester_terminal.json index aa276ba..68177a8 100644 --- a/src/main/resources/data/merequester/recipe/wireless/wireless_requester_terminal.json +++ b/src/main/resources/data/merequester/recipe/wireless/wireless_requester_terminal.json @@ -1,6 +1,16 @@ { + "neoforge:conditions": [ + { + "type": "neoforge:mod_loaded", + "modid": "ae2wtlib" + } + ], "type": "minecraft:crafting_shaped", - "pattern": ["a", "b", "c"], + "pattern": [ + "a", + "b", + "c" + ], "key": { "a": { "item": "ae2:wireless_receiver" From 0f3e2de160da7424e80dbace547f18df164997d7 Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:26:20 +0200 Subject: [PATCH 23/27] add missing recipe advancement --- .../recipes/wireless_requester_terminal.json | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/main/resources/data/merequester/advancement/recipes/wireless_requester_terminal.json diff --git a/src/main/resources/data/merequester/advancement/recipes/wireless_requester_terminal.json b/src/main/resources/data/merequester/advancement/recipes/wireless_requester_terminal.json new file mode 100644 index 0000000..1fab45d --- /dev/null +++ b/src/main/resources/data/merequester/advancement/recipes/wireless_requester_terminal.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "merequester:wireless/wireless_requester_terminal" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "merequester:requester_terminal" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "merequester:wireless/wireless_requester_terminal" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} From e793f13bf4bd105eba0fca8f1c3b5008e4ef0905 Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:28:33 +0200 Subject: [PATCH 24/27] add base wireless terminal mod to runtime for testing --- build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle.kts b/build.gradle.kts index 0ed02a7..4c3190a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,6 +32,7 @@ repositories { dependencies { api("org.appliedenergistics:appliedenergistics2:${almostgradle.getProperty("aeVersion")}") jarJar(localImplementation("de.mari_023:ae2wtlib_api:${almostgradle.getProperty("wtlibVersion")}") { isTransitive = false }) + localRuntime("de.mari_023:ae2wtlib:${almostgradle.getProperty("wtlibVersion")}") { isTransitive = false } } tasks.withType { From e9159835ab4b6f283b8c33b9abcdcba60f5c9aa7 Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:44:16 +0200 Subject: [PATCH 25/27] fix wireless terminal crafting recipe not parsing correctly --- .../recipe/wireless/wireless_requester_terminal.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/data/merequester/recipe/wireless/wireless_requester_terminal.json b/src/main/resources/data/merequester/recipe/wireless/wireless_requester_terminal.json index 68177a8..4b92915 100644 --- a/src/main/resources/data/merequester/recipe/wireless/wireless_requester_terminal.json +++ b/src/main/resources/data/merequester/recipe/wireless/wireless_requester_terminal.json @@ -23,6 +23,6 @@ } }, "result": { - "item": "merequester:wireless_requester_terminal" + "id": "merequester:wireless_requester_terminal" } } \ No newline at end of file From 5ed1a238004a6cd338de8f2d53da0b7a1bea7da4 Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 21:55:46 +0200 Subject: [PATCH 26/27] disable implicit menu type registration --- .../mixin/injects/InitMenuTypesMixin.java | 21 +++++++++++++++++++ .../mixin/injects/package-info.java | 4 ++++ src/main/resources/merequester.mixins.json | 5 ++++- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/almostreliable/merequester/mixin/injects/InitMenuTypesMixin.java create mode 100644 src/main/java/com/almostreliable/merequester/mixin/injects/package-info.java diff --git a/src/main/java/com/almostreliable/merequester/mixin/injects/InitMenuTypesMixin.java b/src/main/java/com/almostreliable/merequester/mixin/injects/InitMenuTypesMixin.java new file mode 100644 index 0000000..b22da00 --- /dev/null +++ b/src/main/java/com/almostreliable/merequester/mixin/injects/InitMenuTypesMixin.java @@ -0,0 +1,21 @@ +package com.almostreliable.merequester.mixin.injects; + +import com.almostreliable.merequester.ModConstants; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.MenuType; + +import appeng.init.InitMenuTypes; +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(InitMenuTypes.class) +public abstract class InitMenuTypesMixin { + + @Inject(method = "queueRegistration", at = @At("HEAD"), cancellable = true) + private static void merequester$cancelImplicitReg(ResourceLocation id, MenuType menuType, CallbackInfo ci) { + if (id.getNamespace().equals(ModConstants.MOD_ID)) ci.cancel(); + } +} diff --git a/src/main/java/com/almostreliable/merequester/mixin/injects/package-info.java b/src/main/java/com/almostreliable/merequester/mixin/injects/package-info.java new file mode 100644 index 0000000..6692003 --- /dev/null +++ b/src/main/java/com/almostreliable/merequester/mixin/injects/package-info.java @@ -0,0 +1,4 @@ +@NonnullDefault +package com.almostreliable.merequester.mixin.injects; + +import org.lwjgl.system.NonnullDefault; diff --git a/src/main/resources/merequester.mixins.json b/src/main/resources/merequester.mixins.json index e3773d9..8bfff6b 100644 --- a/src/main/resources/merequester.mixins.json +++ b/src/main/resources/merequester.mixins.json @@ -10,5 +10,8 @@ ], "injectors": { "defaultRequire": 1 - } + }, + "mixins": [ + "injects.InitMenuTypesMixin" + ] } From ad32ada8e0ff5ad8eebfc81d36d728ca6b0147ac Mon Sep 17 00:00:00 2001 From: rlnt Date: Tue, 26 Aug 2025 22:03:59 +0200 Subject: [PATCH 27/27] do not JiJ the api --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 4c3190a..a7c1aa9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -31,7 +31,7 @@ repositories { dependencies { api("org.appliedenergistics:appliedenergistics2:${almostgradle.getProperty("aeVersion")}") - jarJar(localImplementation("de.mari_023:ae2wtlib_api:${almostgradle.getProperty("wtlibVersion")}") { isTransitive = false }) + compileOnly("de.mari_023:ae2wtlib_api:${almostgradle.getProperty("wtlibVersion")}") { isTransitive = false } localRuntime("de.mari_023:ae2wtlib:${almostgradle.getProperty("wtlibVersion")}") { isTransitive = false } }