### AE2Things Core API - Java Source: https://context7.com/asdflj/ae2things/llms.txt Provides access to AE2Things mod functionality including storage management, terminal operations, backpack handling, and notification systems. It allows getting the mod version, registering custom backpack items, checking if an item is a backpack, getting backpack inventories, opening specialized terminals, handling fluid containers, finding items in ME cells, adding crafting complete notifications, and accessing storage and pinned item managers. ```java import com.asdflj.ae2thing.api.AE2ThingAPI; import com.asdflj.ae2thing.api.IAE2ThingAPI; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import appeng.api.storage.data.IAEItemStack; // Get the API instance IAE2ThingAPI api = AE2ThingAPI.instance(); // Get mod version String version = api.getVersion(); // Register custom backpack items for terminal integration api.addBackpackItem(MyBackpackItem.class); // Check if an item is a backpack boolean isBackpack = api.isBackpackItem(itemStack); // Get backpack inventory IInventory inv = api.getBackpackInv(itemStack); // Open specialized terminals (client-side) api.openBackpackTerminal(); api.openDualinterfaceTerminal(); api.openTerminalMenu(); // Fluid container handling ItemStack container = api.getFluidContainer(fluidStack); api.setDefaultFluidContainer(new ItemStack(Items.bucket)); // Find items in ME cells api.findCellItem(itemStack); // Add crafting complete notifications (client-side) api.addCraftingCompleteNotification(aeItemStack); api.addNotification("Title", "Content", itemStack); // Storage management StorageManager manager = api.getStorageManager(); // Get pinned items manager Pinned pinned = api.getPinned(); ``` -------------------------------- ### AE2Things Terminal Registration API - Java Source: https://context7.com/asdflj/ae2things/llms.txt Enables registration of custom AE2 terminal GUIs for integration with AE2Things features like pinned items, crafting terminals, and pattern terminals. It allows getting the Terminal API instance, registering custom terminal GUIs, blacklisting terminals, checking if the current screen is a terminal, and registering adapters for crafting, pattern, and 'Find It' storage functionalities. ```java import com.asdflj.ae2thing.api.AE2ThingAPI; import com.asdflj.ae2thing.api.Terminal; import com.asdflj.ae2thing.api.adapter.crafting.ICraftingTerminalAdapter; import com.asdflj.ae2thing.api.adapter.pattern.IPatternTerminalAdapter; import com.asdflj.ae2thing.api.adapter.findit.IFindItAdapter; import appeng.client.gui.AEBaseGui; // Get Terminal API Terminal terminal = AE2ThingAPI.instance().terminal(); // Register a custom terminal GUI for pinned items support terminal.registerTerminal(MyCustomTerminalGui.class); // Blacklist a terminal from pinned items feature terminal.registerTerminalBlackList(MyExcludedGui.class); // Check if current screen is a terminal boolean isTerminal = terminal.isTerminal(Minecraft.getMinecraft().currentScreen); // Register crafting terminal adapter for recipe transfer terminal.registerCraftingTerminal(new ICraftingTerminalAdapter() { @Override public Class getContainer() { return MyCraftingContainer.class; } @Override public void openGui(EntityPlayerMP player, TileEntity tile, ForgeDirection face, Object target) { // Open GUI implementation } @Override public void moveItems(GuiContainer firstGui, IRecipeHandler recipe, int recipeIndex) { // Recipe transfer implementation } }); // Register pattern terminal adapter terminal.registerPatternTerminal(new IPatternTerminalAdapter() { @Override public Class getContainer() { return MyPatternContainer.class; } @Override public boolean supportFluid() { return true; // Enable fluid pattern support } }); // Register storage provider for "Find It" feature terminal.registerFindItStorageProvider(new IFindItAdapter() { @Override public Class getCls() { return MyStorageHost.class; } @Override public boolean supportFluid() { return true; } @Override public List getStorageProver(IGrid grid, IGridNode node, IAEItemStack item, boolean isFluid) { // Return storage providers containing the item return Collections.emptyList(); } }); ``` -------------------------------- ### Core API - AE2ThingAPI Source: https://context7.com/asdflj/ae2things/llms.txt The main API singleton provides access to all mod functionality including storage management, terminal operations, backpack handling, and notification systems. ```APIDOC ## Core API - AE2ThingAPI ### Description The main API singleton provides access to all mod functionality including storage management, terminal operations, backpack handling, and notification systems. ### Method GET (Implicit - Singleton Access) ### Endpoint N/A (Singleton Instance) ### Parameters None ### Request Example ```java import com.asdflj.ae2thing.api.AE2ThingAPI; import com.asdflj.ae2thing.api.IAE2ThingAPI; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import appeng.api.storage.data.IAEItemStack; // Get the API instance IAE2ThingAPI api = AE2ThingAPI.instance(); // Get mod version String version = api.getVersion(); // Register custom backpack items for terminal integration api.addBackpackItem(MyBackpackItem.class); // Check if an item is a backpack boolean isBackpack = api.isBackpackItem(itemStack); // Get backpack inventory IInventory inv = api.getBackpackInv(itemStack); // Open specialized terminals (client-side) api.openBackpackTerminal(); api.openDualinterfaceTerminal(); api.openTerminalMenu(); // Fluid container handling ItemStack container = api.getFluidContainer(fluidStack); api.setDefaultFluidContainer(new ItemStack(Items.bucket)); // Find items in ME cells api.findCellItem(itemStack); // Add crafting complete notifications (client-side) api.addCraftingCompleteNotification(aeItemStack); api.addNotification("Title", "Content", itemStack); // Storage management StorageManager manager = api.getStorageManager(); // Get pinned items manager Pinned pinned = api.getPinned(); ``` ### Response #### Success Response (N/A - Direct API Access) - **IAE2ThingAPI** (interface) - The singleton instance providing access to mod features. #### Response Example N/A ``` -------------------------------- ### Register Custom Pattern Terminal Adapter in Java Source: https://context7.com/asdflj/ae2things/llms.txt Demonstrates how to register a custom IPatternTerminalAdapter for NEI recipe transfer support. It involves defining container classes, inventory names, and custom recipe handlers for fluid and item transfers. ```java import com.asdflj.ae2thing.api.AE2ThingAPI; import com.asdflj.ae2thing.api.adapter.pattern.IPatternTerminalAdapter; import com.asdflj.ae2thing.api.adapter.pattern.IRecipeHandler; import com.asdflj.ae2thing.nei.object.OrderStack; import com.asdflj.ae2thing.network.CPacketTransferRecipe; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; // Register pattern terminal with custom recipe handlers IPatternTerminalAdapter adapter = AE2ThingAPI.instance().terminal() .registerPatternTerminal(new IPatternTerminalAdapter() { @Override public Class getContainer() { return MyPatternContainer.class; } @Override public boolean supportFluid() { return true; // Enable fluid packet support } @Override public String getCraftingInvName() { return "crafting"; // Inventory name for inputs } @Override public String getOutputInvName() { return "output"; // Inventory name for outputs } }); // Register custom recipe identifier handler adapter.registerIdentifier("mymod.special_recipe", new IRecipeHandler() { @Override public void transferPack(Container container, List> inputs, List> outputs, String identifier, IPatternTerminalAdapter adapter, CPacketTransferRecipe message) { // Custom recipe transfer logic IInventory craftingInv = adapter.getInventoryByName(container, adapter.getCraftingInvName()); IInventory outputInv = adapter.getInventoryByName(container, adapter.getOutputInvName()); adapter.transferPack(inputs, craftingInv); adapter.transferPack(outputs, outputInv); } }); // Check if current screen is a pattern terminal boolean isPattern = AE2ThingAPI.instance().terminal().isPatternTerminal(); ``` -------------------------------- ### Custom Backpack Integration (Java) Source: https://context7.com/asdflj/ae2things/llms.txt Allows mods to register their backpack items for integration with the Backpack Terminal. Can be implemented directly or registered via the API. ```java import com.asdflj.ae2thing.api.IBackpackItem; import com.asdflj.ae2thing.api.AE2ThingAPI; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; // Implement IBackpackItem on your backpack item class public class MyBackpack extends Item implements IBackpackItem { @Override public IInventory getInventory(ItemStack is) { // Return the inventory stored in the ItemStack return new MyBackpackInventory(is); } } // Or register existing backpack classes via API AE2ThingAPI api = AE2ThingAPI.instance(); api.addBackpackItem(ExternalBackpackItem.class); // Check if an item is a registered backpack boolean isBackpack = api.isBackpackItem(Items.chest); // false boolean isBackpack2 = api.isBackpackItem(myBackpackStack); // true // Get inventory from any registered backpack IInventory backpackInv = api.getBackpackInv(backpackStack); if (backpackInv != null) { for (int i = 0; i < backpackInv.getSizeInventory(); i++) { ItemStack slot = backpackInv.getStackInSlot(i); // Process backpack contents } } // Blacklist items from DISK storage (same as addBackpackItem) api.blacklistItemInStorage(MySpecialItem.class); ``` -------------------------------- ### Access AE2Things Constants and Enums in Java Source: https://context7.com/asdflj/ae2things/llms.txt Shows how to access various constants and enumerations provided by the AE2Things mod. This includes NBT keys, inventory names, GUI colors, crafting modes, crafting job states, message types, and mouse wheel directions. ```java import com.asdflj.ae2thing.api.Constants; import com.asdflj.ae2thing.api.Constants.State; import com.asdflj.ae2thing.api.Constants.MessageType; import com.asdflj.ae2thing.api.Constants.MouseWheel; // NBT Keys for cell data String diskUuid = Constants.DISKUUID; // "diskuuid" String diskData = Constants.DISKDATA; // "diskdata" String isLinked = Constants.LINKED; // "linked" // Inventory names String crafting = Constants.CRAFTING; // "crafting" String output = Constants.OUTPUT; // "output" // GUI Colors (ARGB format) int outputColor = Constants.OUTPUT_COLOR; // 0x4566ccff (blue) int errorColor = Constants.ERROR_COLOR; // 0x45DA4527 (red) int inactiveColor = Constants.INACTIVE_COLOR; // 0x45FFEA05 (yellow) int selectedColor = Constants.SELECTED_COLOR; // 0x4545DA75 (green) // Crafting modes int processingMode = Constants.MODE_PROCESSING; // 0 int craftingMode = Constants.MODE_CRAFTING; // 1 // State enumeration for crafting jobs State running = State.RUNNING; State finished = State.FINISHED; State cancelled = State.CANCELLED; // Message types for network packets MessageType updateItems = MessageType.UPDATE_ITEMS; MessageType notification = MessageType.NOTIFICATION; byte typeValue = MessageType.UPDATE_ITEMS.type; // 0 // Mouse wheel direction MouseWheel next = MouseWheel.NEXT; // direction = 1 MouseWheel preview = MouseWheel.PREVIEW; // direction = -1 ``` -------------------------------- ### Terminal Item Handler (Java) Source: https://context7.com/asdflj/ae2things/llms.txt Enables custom wireless terminal items to integrate with the terminal switching system. Requires registering a handler and optionally implementing IItemTerminal for menu integration. ```java import com.asdflj.ae2thing.api.AE2ThingAPI; import com.asdflj.ae2thing.api.adapter.terminal.item.ITerminalHandler; import com.asdflj.ae2thing.api.adapter.terminal.item.TerminalItems; import com.asdflj.ae2thing.api.adapter.terminal.item.IItemTerminal; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; // Register a terminal item handler AE2ThingAPI.instance().terminal().registerTerminalItem( MyWirelessTerminal.class, new ITerminalHandler() { @Override public void openGui(ItemStack item, ITerminalHandler terminal, TerminalItems items, EntityPlayerMP player) { // Check connection and open GUI if (canConnect(item, terminal, items, player)) { // Open your terminal GUI player.openGui(MyMod.INSTANCE, GUI_ID, player.worldObj, (int) player.posX, (int) player.posY, (int) player.posZ); } } // Default canConnect checks wireless link, power, etc. } ); // Implement IItemTerminal for terminal menu integration public class MyTerminalProvider implements IItemTerminal { @Override public Set> getClasses() { return Collections.singleton(MyWirelessTerminal.class); } @Override public String getIcon() { return "mymod:textures/gui/terminal_icon.png"; } @Override public boolean supportBaubles() { return true; // Search Baubles inventory for terminals } } ``` -------------------------------- ### Crafting Debug Helper API Source: https://context7.com/asdflj/ae2things/llms.txt Provides detailed tracking and debugging information for AE2 crafting jobs. ```APIDOC ## Crafting Debug Helper ### Description Provides detailed tracking and debugging information for AE2 crafting jobs, useful for diagnosing crafting issues. ### Method Various methods are available through the `CraftingDebugHelper` and `AE2ThingAPI`. ### Endpoint N/A (Client-side API) ### Parameters N/A ### Request Example ```java // Get crafting history for a network Grid grid = (Grid) someGridNode.getGrid(); long networkId = AE2ThingAPI.instance().getStorageMyID(grid); LimitedSizeLinkedList history = AE2ThingAPI.instance().getHistory(grid); // Or by network ID LimitedSizeLinkedList historyById = AE2ThingAPI.instance().getHistory(networkId); // Examine crafting info for (CraftingInfo info : history) { String name = info.getName(); // Requester name (player or machine) String itemName = info.itemName; // Item being crafted long requestSize = info.requestSize; // Amount requested // Timing information String startTime = info.getFormatStartTime(); // "2024-01-15 14:30:00" String usageTime = info.getUsageTime(); // "150 ms" boolean finished = info.isFinish(); // Status State state = info.getState(); // RUNNING, FINISHED, or CANCELLED boolean hasMissing = info.isSimulation(); String error = info.getErrorMessage(); // Location (for machine requests) if (!info.isPlayer && info.pos != null) { int x = info.pos.x; int y = info.pos.y; int z = info.pos.z; int dim = info.pos.getDimension(); } // Network ID String netId = info.getNetworkID(); } // Save history to file (client-side) AE2ThingAPI.instance().saveHistory(); // Exports to: minecraft/history.json // Serialize history to JSON String json = CraftingDebugHelper.getGson().toJson(history); ``` ### Response N/A (Methods return values or modify state) #### Success Response (200) N/A #### Response Example N/A ``` -------------------------------- ### Manage Pinned Items with AE2 Things API (Java) Source: https://context7.com/asdflj/ae2things/llms.txt This Java code demonstrates how to interact with the Pinned Items System in AE2 Things. It covers adding, removing, checking, and retrieving pinned items, as well as configuring the system and updating crafting item statuses. This API is client-side only. ```java import com.asdflj.ae2thing.api.AE2ThingAPI; import com.asdflj.ae2thing.api.Pinned; import com.asdflj.ae2thing.api.Pinned.PinInfo; import com.asdflj.ae2thing.api.Pinned.PinReason; import appeng.api.storage.data.IAEItemStack; import java.util.List; import java.time.Instant; // Get Pinned instance (client-side only) Pinned pinned = AE2ThingAPI.instance().getPinned(); // Add an item to pinned list pinned.add(aeItemStack); // Remove an item PinInfo removed = pinned.remove(aeItemStack); // Toggle pin status pinned.togglePinnedItems(aeItemStack); // Check if item is pinned boolean isPinned = pinned.isPinnedItem(aeItemStack); // Get all pinned items sorted by time List sortedPinned = pinned.getSortedPinnedItems(); // Get pin info for an item PinInfo info = pinned.getPinInfo(aeItemStack); if (info != null) { Instant since = info.since; // When item was pinned PinReason reason = info.reason; // Why item was pinned (CRAFTING) boolean canPrune = info.canPrune; // Can be auto-removed } // Configure max pinned items (default: 9) Pinned.MAX_PINNED = 12; // Update crafting items from server pinned.updateCraftingItems(); pinned.updateCraftingItems(true); // Force update // Clear all pinned items pinned.clear(); // Prune items that are no longer being crafted pinned.prune(); ``` -------------------------------- ### Storage Cell Inventory Interface (Java) Source: https://context7.com/asdflj/ae2things/llms.txt Defines the contract for custom storage cells with extended capacity and type limits. Implemented by custom cell inventory classes. ```java import com.asdflj.ae2thing.common.storage.ITCellInventory; import com.asdflj.ae2thing.common.storage.StorageManager; import com.asdflj.ae2thing.common.storage.DataStorage; import net.minecraft.item.ItemStack; import appeng.api.storage.data.IAEItemStack; // Get storage manager from API StorageManager manager = AE2ThingAPI.instance().getStorageManager(); // Get storage for a cell item DataStorage storage = manager.getStorage(cellItemStack); // Get storage with UUID assignment for new cells DataStorage storageWithPlayer = manager.getStorage(cellItemStack, player); // Link cells to share storage manager.setStorage(targetUuid, cellItemStack); // Register grid for cell synchronization manager.addGrid(uuid, chestOrDrive); // ITCellInventory methods (implemented by cell inventories) public class MyCellInventory implements ITCellInventory { @Override public long getTotalBytes() { return Long.MAX_VALUE; } @Override public long getFreeBytes() { return Long.MAX_VALUE - getUsedBytes(); } @Override public long getUsedBytes() { return storedItemCount * getBytesPerType(); } @Override public long getTotalItemTypes() { return Integer.MAX_VALUE; } @Override public long getStoredItemTypes() { return itemMap.size(); } @Override public long getStoredItemCount() { return totalItems; } @Override public long getRemainingItemCount() { return Long.MAX_VALUE; } @Override public double getIdleDrain(ItemStack is) { return 2000D; } @Override public boolean canHoldNewItem(ItemStack is) { return true; } @Override public FuzzyMode getFuzzyMode() { return FuzzyMode.IGNORE_ALL; } } ``` -------------------------------- ### Pinned Items System API Source: https://context7.com/asdflj/ae2things/llms.txt Manage pinned crafting items in terminals for quick access and status tracking. ```APIDOC ## Pinned Items System ### Description Manages pinned crafting items in terminals, displaying their status and allowing users to pin frequently used items for quick access. ### Method Various methods are available through the `Pinned` interface. ### Endpoint N/A (Client-side API) ### Parameters N/A ### Request Example ```java // Get Pinned instance (client-side only) Pinned pinned = AE2ThingAPI.instance().getPinned(); // Add an item to pinned list pinned.add(aeItemStack); // Remove an item PinInfo removed = pinned.remove(aeItemStack); // Toggle pin status pinned.togglePinnedItems(aeItemStack); // Check if item is pinned boolean isPinned = pinned.isPinnedItem(aeItemStack); // Get all pinned items sorted by time List sortedPinned = pinned.getSortedPinnedItems(); // Get pin info for an item PinInfo info = pinned.getPinInfo(aeItemStack); if (info != null) { Instant since = info.since; // When item was pinned PinReason reason = info.reason; // Why item was pinned (CRAFTING) boolean canPrune = info.canPrune; // Can be auto-removed } // Configure max pinned items (default: 9) Pinned.MAX_PINNED = 12; // Update crafting items from server pinned.updateCraftingItems(); pinned.updateCraftingItems(true); // Force update // Clear all pinned items pinned.clear(); // Prune items that are no longer being crafted pinned.prune(); ``` ### Response N/A (Methods return values or modify state) #### Success Response (200) N/A #### Response Example N/A ``` -------------------------------- ### Terminal Registration API Source: https://context7.com/asdflj/ae2things/llms.txt The Terminal API allows registration of custom AE2 terminal GUIs for integration with mod features like pinned items, crafting terminals, and pattern terminals. ```APIDOC ## Terminal Registration API ### Description The Terminal API allows registration of custom AE2 terminal GUIs for integration with mod features like pinned items, crafting terminals, and pattern terminals. ### Method GET (Implicit - API Access) ### Endpoint N/A (Singleton Instance Access) ### Parameters None ### Request Example ```java import com.asdflj.ae2thing.api.AE2ThingAPI; import com.asdflj.ae2thing.api.Terminal; import com.asdflj.ae2thing.api.adapter.crafting.ICraftingTerminalAdapter; import com.asdflj.ae2thing.api.adapter.pattern.IPatternTerminalAdapter; import com.asdflj.ae2thing.api.adapter.findit.IFindItAdapter; import appeng.client.gui.AEBaseGui; // Get Terminal API Terminal terminal = AE2ThingAPI.instance().terminal(); // Register a custom terminal GUI for pinned items support terminal.registerTerminal(MyCustomTerminalGui.class); // Blacklist a terminal from pinned items feature terminal.registerTerminalBlackList(MyExcludedGui.class); // Check if current screen is a terminal boolean isTerminal = terminal.isTerminal(Minecraft.getMinecraft().currentScreen); // Register crafting terminal adapter for recipe transfer terminal.registerCraftingTerminal(new ICraftingTerminalAdapter() { @Override public Class getContainer() { return MyCraftingContainer.class; } @Override public void openGui(EntityPlayerMP player, TileEntity tile, ForgeDirection face, Object target) { // Open GUI implementation } @Override public void moveItems(GuiContainer firstGui, IRecipeHandler recipe, int recipeIndex) { // Recipe transfer implementation } }); // Register pattern terminal adapter terminal.registerPatternTerminal(new IPatternTerminalAdapter() { @Override public Class getContainer() { return MyPatternContainer.class; } @Override public boolean supportFluid() { return true; // Enable fluid pattern support } }); // Register storage provider for "Find It" feature terminal.registerFindItStorageProvider(new IFindItAdapter() { @Override public Class getCls() { return MyStorageHost.class; } @Override public boolean supportFluid() { return true; } @Override public List getStorageProver(IGrid grid, IGridNode node, IAEItemStack item, boolean isFluid) { // Return storage providers containing the item return Collections.emptyList(); } }); ``` ### Response #### Success Response (N/A - Direct API Access) - **Terminal** (interface) - The interface for registering custom terminals and adapters. #### Response Example N/A ``` -------------------------------- ### Debug AE2 Crafting Jobs with CraftingDebugHelper (Java) Source: https://context7.com/asdflj/ae2things/llms.txt This Java code snippet shows how to use the CraftingDebugHelper to retrieve and analyze crafting job information for AE2 networks. It allows access to crafting history, item details, timing, status, and error messages. The history can be saved to a file or serialized to JSON. ```java import com.asdflj.ae2thing.api.AE2ThingAPI; import com.asdflj.ae2thing.api.CraftingDebugHelper; import com.asdflj.ae2thing.api.CraftingDebugHelper.CraftingInfo; import com.asdflj.ae2thing.api.LimitedSizeLinkedList; import com.asdflj.ae2thing.api.Constants.State; import appeng.me.Grid; import java.util.List; // Get crafting history for a network Grid grid = (Grid) someGridNode.getGrid(); long networkId = AE2ThingAPI.instance().getStorageMyID(grid); LimitedSizeLinkedList history = AE2ThingAPI.instance().getHistory(grid); // Or by network ID LimitedSizeLinkedList historyById = AE2ThingAPI.instance().getHistory(networkId); // Examine crafting info for (CraftingInfo info : history) { String name = info.getName(); // Requester name (player or machine) String itemName = info.itemName; // Item being crafted long requestSize = info.requestSize; // Amount requested // Timing information String startTime = info.getFormatStartTime(); // "2024-01-15 14:30:00" String usageTime = info.getUsageTime(); // "150 ms" boolean finished = info.isFinish(); // Status State state = info.getState(); // RUNNING, FINISHED, or CANCELLED boolean hasMissing = info.isSimulation(); String error = info.getErrorMessage(); // Location (for machine requests) if (!info.isPlayer && info.pos != null) { int x = info.pos.x; int y = info.pos.y; int z = info.pos.z; int dim = info.pos.getDimension(); } // Network ID String netId = info.getNetworkID(); } // Save history to file (client-side) AE2ThingAPI.instance().saveHistory(); // Exports to: minecraft/history.json // Serialize history to JSON String json = CraftingDebugHelper.getGson().toJson(history); ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.