All Classes and Interfaces
Class
Description
Base class for all PNC tile entities which handle air.
For block entities with an entity-style model to render
Base class for blocks which may be camouflaged, storing the camouflaged block state in the
CAMO_STATE model property.
AbstractHopperBlockEntity<T extends net.minecraft.world.level.block.entity.BlockEntity & IRedstoneControl<T>>
AbstractPersistentEntityHack<T extends net.minecraft.world.entity.Entity>
Convenience base class for hacks which are added as a persistent object to an entity's hack list.
Some common hack types which can be passed to the
AbstractPersistentEntityHack constructor, only used
for armor HUD display purposes.AbstractPneumaticCraftContainerScreen<C extends AbstractPneumaticCraftMenu<T>,T extends AbstractPneumaticCraftBlockEntity>
AbstractTameableHack<T extends net.minecraft.world.entity.LivingEntity>
Common base for all tamable entities.
Ticking tile entities should either extend this class, or implement ITickable themselves.
ActionWidget<W extends net.minecraft.client.gui.components.AbstractWidget>
ActionWidgetVariable<W extends net.minecraft.client.gui.components.AbstractWidget>
Extended Amadron offer used for player-player trading.
An Amadron trade offer, loaded from datapack.
Fired (on the MinecraftForge.EVENT_BUS) when
IDroneRegistry.retrieveItemsAmazonStyle(GlobalPos, ItemStack...) or
IDroneRegistry.retrieveFluidAmazonStyle(GlobalPos, FluidStack)
has successfully retrieved the items requested.Represents an Amadron trade resource.
Adds a dropdownlist with alle the enum options
Adds a number textbox.
Convenience base class which armor handlers can extend, rather than implementing
IArmorUpgradeHandler
directly.Item stack handler which marks its owning BE as dirty when it changes.
A reference implementation.
Fired when a helmet Block Tracker is about to track a block.
Handles Block Tracker scanning of chests etc.
With credit to Vazkii for showing me how this can be made to work with connected textures (trick being
to pass IBlockAccess/BlockPos via extended state).
Implement this interface in tile entities which should store a camouflaged state.
Like a Region, but should be OK to use get a cache from a different thread (since we go through
ServerChunkProvider#getChunk(), which returns async chunk supplier when called off the main thread.
Used by the Pneumatic Helmet coordinate tracker to control path update frequency.
Miscellaneous client-side utilities.
Items implementing this will be automatically registered in the ColorHandler.Block event
Items implementing this will be automatically registered in the ColorHandler.Item event
An ItemStackHandler which also supports comparator signal level calculation.
Mod-agnostic class for sending events to computers.
Allows us to intercept ticks for memory stick(s) in a Curios inventory handler
Need to do this to cache what memory sticks players have on them for efficient
XP orb absorption.
Custom JEI recipe click area which also shows the current recipe outputs if any (and the current recipe ID
if advanced tooltips are on - F3+H)
Get an instance of this via
PneumaticRegistry.IPneumaticCraftInterface.getDamageSources()Fields marked with this annotation in a TileEntity class will be automatically synced to any players within 64 blocks
of this TileEntity.
rotateAround() disappeared from Direction in 1.15
Adapted (with permission) from the Ruby code at https://github.com/elifoster/drama-rb
This class is derived from Minecraft's {link EntityAITasks} class.
Keeps track of the positions the drones are working on, and allows the drones to pick a coordinate in a smart way.
Class to build simple (no jumping) Drone programs, without needing to worry about the X/Y locations of widgets
Event posted on the
MinecraftForge.EVENT_BUS just before a Drone executes a Suicide piece.To keep crafting widgets happy
Fired when a helmet Block Tracker is about to track an entity.
Any array fields annotated with this will only sync the specified indexes.
A fluid ingredient matcher, with fluid tag support.
Fired when a helmet Block Tracker is about to track a fluid tank.
Generic integration tasks which don't depend on specific mods' APIs.
Helper which allows querying BE's of specific types, like the Universal Sensor, Security Station and Charging Station
This is very important for performance, especially in worlds with many block entities.
GlobalBlockEntityCacheManager.GlobalTileEntityCache<T extends net.minecraft.world.level.block.entity.BlockEntity>
Manages global variables.
Fields marked with this annotation in a TileEntity class will be automatically synced to players with the container
open (provided that the container extends ContainerPneumaticBase).
Horses, although tameable animals, don't extend TamableAnimal, or even OwnableEntity.
Defines a generic harvest handler.
A simple harvest handler which just compares against a list of blocks, without checking any blockstate properties.
Harvest handler targeted at handling any subclass of BlockCrops.
This can be used to add heat dependent logic to non-BE's or blocks from outside your own mod.
Used for blocks like lava/ice, which have a constant heat.
Recipes which define the heat properties of a block; its temperature, thermal resistance, heat capacity, and the
blocks it can turn into when too much heat is added or removed via the PneumaticCraft heat system.
Currently unused.
Defines a hoe handler; use this to register items that are not vanilla-style hoes (i.e.
Default implementation for vanilla-compatible hoes.
Singleton object which manages all the Pneumatic Armor HUD drawing and input for the player.
Deprecated.
Base functionality for all air handlers.
An air handler for items.
Capability provider object for air-handling items.
An extended air handler which is used by tile entities.
Represents a connection to a neighbouring air handler.
Use this interface to get instances of air handlers for your tile entities.
Optionally implement this in your TileEntity to gain extra control over pneumatic behaviour.
Base class for armor upgrade handler extension data.
Represents the client-specific part of an armor upgrade handler; provides methods for rendering, getting the
configuration GUI page, reading/writing client-side configuration, and handling keybinds.
Convenience class which allows a reference to the common upgrade handler to be passed in and retrieved.
Convenience class for simple toggleable armor features with no additional settings.
Represents the common part of a Pneumatic Armor upgrade handler.
Provides methods to customize how items are rendered when held by Assembly machines.
Marker interface for blocks which have a comparator output; to be implemented on blocks whose block entities
implement
IComparatorSupport.This represents the drone's AI interaction handler.
Implement this interface and register it with
IClientArmorRegistry.registerBlockTrackEntry(ResourceLocation, Supplier).Implement this on widgets which need to render in a 3d context (i.e.
Represents an item with an upgrade GUI openable via the "Upgrade" button in the Charging Station GUI.
You can register an implementation of this via
IClientRegistry.registerRenderOverride(ItemLike, IChargingStationRenderOverride)
to provide custom rendering of items in the Charging Station.Represents a checkbox widget which can have a key bound to toggle it; use this to create a checkbox to toggle
a toggleable upgrade on & off.
Retrieve an instance of this via
PneumaticRegistry.IPneumaticCraftInterface.getClientArmorRegistry()Provides access to the current state of the Pneumatic Armor worn by a player.
Retrieve an instance of this via
PneumaticRegistry.IPneumaticCraftInterface.getCommonArmorRegistry()Implement on tile entities whose block will supply a signal level to adjacent Comparators
Implement this and register it with
IDroneRegistry#registerCustomBlockInteractor(RegisterEvent, ICustomBlockInteract).Implement on items which can show a custom durability bar *in addition to* any regular bar.
Allows a group of items/blocks to share a translation key, e.g.
Class aimed for debugging purposes only
Represents a semiblock which sits on the side of an actual block, rather than occupying the same space.
For widgets that need to do some drawing after everything else, to ensure it's on top.
Represents a drone or drone-like object (e.g.
Non-API extension to public IDrone interface
Retrieve an instance of this via
PneumaticRegistry.IPneumaticCraftInterface.getDroneRegistry().Implement this class and register it with
IClientArmorRegistry.registerEntityTrackEntry(java.util.function.Supplier).Implement this on items which can be used to as filters.
The glue between FluidItemModel and TankRenderInfo.
For items which can render contained fluids in their item model
To be implemented on equippable items.
This interface doesn't have to be implemented.
Implement on a Container/Block Entity/EntitySemiblock to allow it to receive messages from the client when a GUI button is
clicked.
Will handle tooltips to show whether or not a programmable item is applicable for this drone.
An interface wrapper for actual Screen objects.
Use this interface to specify any hackable block.
IHackableEntity<T extends net.minecraft.world.entity.Entity>
Use this interface to specify any hackable entity.
Manages the list of "hacks" on an entity.
A special extension of
IHeatExchangerLogic intended for implementing adapter objects for other mods' heat
systems.Convenience adapter implementation which can be extended.
Represents a heat exchanger owned by a block entity.
Non-API interface for all heat-handling tile entities in the mod
Get an instance of this via
PneumaticRegistry.IPneumaticCraftInterface.getHeatRegistry().Represents a module which can control or monitor how much air flows through the tube it's on.
A Block Entity implementing this interface will forward an info display mod (e.g.
Implement this interface for your items that have an inventory.
Get an instance of this with
PneumaticRegistry.IPneumaticCraftInterface.getItemRegistry()Implemented by widgets that have custom program flow behaviour when a program reaches the end.
Represents a button in a options screen which can be used to rebind a key.
Marker interface to indicate this message might have a payload larger than
ILargePayload.MAX_PAYLOAD_SIZE bytesA Block Entity which makes some of its functionality available via Lua methods for calling from other mods
(e.g.
Implement this and register it via
PneumaticRegistry.getItemRegistry().registerMagnetSuppressor() A collection of miscellaneous helper methods which don't fit elsewhere.
Represents a module which needs to be aware of other modules of its type which are connected to it via a tube.
Fired when a helmet Block Tracker is about to track an inventory.
An Option Page is the GUI object which holds the control widgets for a particular Pneumatic Armor upgrade.
Convenience class for simple armor features with no additional settings.
Implement this and register it via
IDroneRegistry.addPathfindableBlock(Block, IPathfindHandler) to provide
custom pathfinding functionality for a particular block.Some methods to control a drone-like object's movement.
A player matcher predicate with potential multiple uses - currently used by the Amadron tablet to check if a
particular offer is usable by a player.
Implement this and register it via
IMiscHelpers.registerPlayerMatcher(ResourceLocation, MatcherFactory).Just a marker interface to indicate that implementing blocks or entities can be probed using PneumaticCraft's
own The One Probe functionality.
Get an instance of this via
PneumaticRegistry.IPneumaticCraftInterface.getRecipeRegistry().Should be implemented by any block or entity that can be clicked by a Pneumatic Wrench.
Represents an item which can store & provide one or more block positions.
Convenience interface; if your item implements this, you can take advantage of PneumaticCraft's built-in item
air handling functionality, while providing the
IAirHandlerItem capability to access the item's air information.Implement this for items that can get programmed in a Programmer.
Represents a block entity which has a range manager and the concept of a range area of effect.
IRedstoneControl<T extends net.minecraft.world.level.block.entity.BlockEntity & IRedstoneControl<T>>
Represents a "semiblock" - an attachable gadget which sits on a real block, such as a logistics frame or
crop support.
Get an instance of this with
PneumaticRegistry.IPneumaticCraftInterface.getSensorRegistry().Represents a block entity which stores tank data that should be serialized onto the dropped item stack when the block
is broken, and deserialized back to the block entity when the block is placed down again.
Represents an block entity whose sides can be reconfigured, i.e.
Represents the entity types contained in a Spawner Core.
Implement this interface on containers for semiblocks which need to be synced from the client in item form,
generally as a result of GUI configuration.
Represents a widget with a string tag, which is sent to the server in a PacketUpdateGui when the widget is clicked.
Common code for the Air Cannon and Pneumatic Chestplate item launcher
A functional interface to modify a given Pneumatic item's effective volume based on attributes of the item stack
(generally values in its NBT, e.g.
A widget which will be ticked by PneumaticCraft GUI's.
Blocks can implement this interface to indicate that they can connect networked pressure tube
modules, such as Redstone Modules and Logistics Modules.
Represents an item which can be used as a PneumaticCraft upgrade in machines or other items.
The upgrade registry can be used to register custom upgrades to be accepted by block entities, entities and items.
Helper class to collect a list of upgrades for adding to an object via one of the
addApplicableUpgrades()
methodsSome utilities for interacting with third-party wrench behaviours.
Stuff that isn't sync'd like in JetBootsStateTracker but tracked internally on both client and server
Synced state: set on the server and sync'd to clients (i.e.
Fields marked with this and also @DescSynced will be included in a desc packet.
Exists to support saved drone programs from 1.12 and older versions of PneumaticCraft, and also to support
the Computer Control progwidget's "addArea" and "removeArea" methods.
MineChess
MineChess
Handle the standard serialization of PNC block entity data to the dropped itemstack.
Used to get constant return values.
A ticking air handler owned by a block entity, which disperses air to those neighbouring air handlers
which have lower pressure than it does.
Added to the Mechanic Villager house chest
This capability can be attached to Mekanism block entities to make them look like PneumaticCraft heat handlers.
Tracks various properties of the minigun item, without the overhead (especially for sync'ing) of using NBT
on the minigun item itself.
Used in three different places:
1.
Maintains a cache of mod id's to "friendly" mod names.
Like a vanilla ingredient, but requires the item must have no NBT whatsoever
Special "empty" options page for the case where there are no upgrade screens at all.
Intended for the (public-facing) output inventory of machines: doesn't allow items to be inserted.
Received on: CLIENT
Sent by server to confirm updated amount when player adjusts an offer with PacketAmadronOrderUpdate
(This needs a round trip rather than just updating client-side, since server needs to validate and cap
requested shopping amounts)
Received on: SERVER
Sent from client when an offer widget is clicked in the Amadron GUI to update the server-side order amount
Received on: CLIENT
Sent by server when an order is purchased by someone, to update remaining stock levels as seen on clients.
Received on: BOTH
Sent by Amadron GUI when player is adding a custom player->player trade.
Received on: CLIENT
Sent by server to notify client of a trade deal made, or restock event
Using a packet rather than a simple chat message because the client can also elect not to receive
these notifications.
Received on: SERVER
Sent by the client after editing an Aphorism Tile
Received on: SERVER
Send when the GPS Tool GUI is closed, to update the held GPS tool settings
Received on: SERVER
Sent by client to launch an item from the chestplate launcher
Received on: CLIENT
Sent by server when recipes are reloaded; clear our local cache of machine recipes
Sent to: CLIENT
This is the primary mechanism for syncing block entity data to clients when it changes.
Received on: SERVER
Sent by client to ask the server for more info about a block, for Pneumatic Helmet purposes
TODO: replace with a more formal data request protocol
Received on: SERVER
Sent when a GUI button is clicked.
Received on: CLIENT
Sent by server when a block hack has completed.
Received on: BOTH
Sent by client when player initiates a hack, and from server back to client to confirm initiation
Received on: CLIENT
Sent by server when an entity hack completes
Received on: BOTH
Sent by client when player initiates an entity hack, and by server to confirm initiation
Received on: SERVER
Sent from client to tell the server the player is activating/deactivating jet boots.
Received on: CLIENT
Sent from server so that all clients know the jet boots state (enabled/active) of all other clients.
Received on: SERVER
Sent by client when certain items are left-clicked in the air (which is a client-only event)
Received on: CLIENT
Sent by server when player switches away from a held minigun which is active (i.e.
Received on: SERVER
Sent from client when trying to rotate a block with a wrench other than PneumaticCraft's own wrench
Received on: SERVER
First part of a following multi-part message from the client
Received on: SERVER
Part of a multipart message from client (whole message too big to send at once)
Received on: CLIENT
Sent by server when a block is dropped by shift-wrenching it, rotated by wrenching it, or if a pneumatic BE explodes
due to overpressure.
Received on: CLIENT
Sent by server when air conditioning level changes so client can update the HUD gauge
Received on: CLIENT
Sent by server to start a new MovingSound playing
Received on: CLIENT
Sent by server to play a sound at a specific location
Received on: SERVER
Sent by client when the kick hotkey is pressed
Received on: BOTH
Sent by server when programmer GUI is being opened
Sent by client programmer GUI to push the current program to the server-side BE
Received on: CLIENT
Sent by server to get a message displayed on the Pneumatic Armor HUD
Received on: CLIENT
Sent by server to add a debug message to a debugged drone.
Received on: CLIENT
Sent by server to give a clientside BE a copy of its NBT data
Received on: CLIENT
Sent by server to keep client appraised of server TPS
Helps keep systems which use dead reckoning (right now, just Elevator) to stay as much in sync with the server
as possible
Received on: CLIENT
Sent by server when an immediate update is needed to a client-side entity's motion
Received on: BOTH
Sync's global variable data between server and client
Received on: SERVER
Sent by client when player shift-scrolls the mouse wheel while holding an item implementing the
IShiftScrollable interface.Received on: CLIENT
Sent by server to make a block entity render its area of effect
Received on: CLIENT
Sent by server to spawn coloured redstone particles in multiple positions around an initial position
Received on: CLIENT
Sent by server to spawn a particle (with support for multiple particles in an random area around the target point)
Received on: CLIENT
Sent by server to play a trail of particles between two points
Received on: CLIENT
Sent by server to get the client to spawn a new client-side ring entity
Received on: CLIENT
Sent by server to sync up current Amadron offer list when the offer list changes (due to a shuffle or reload),
or when a player logs in
Received on: SERVER
Sent by Processing Filter GUI to update the filter settings on a held Processing Filter item
Received on: CLIENT
Sent by server to sync a (debugged) drone's programming widgets
Received on: CLIENT
Sent by server when player starts tracking an entity with any active hacks on it.
Received on: CLIENT
Sent by the server periodically while a Security Station hack is in progress, and when either side has just won,
to keep the client up-to-date.
Received on: CLIENT
Sent by server to sync up the settings of a redstone module
Received on: SERVER
Sent by client to update server-side settings when redstone module GUI is closed
Received on: BOTH
Received on: BOTH
Sent by server when smart chest GUI is being opened to sync filter settings to client
Sent by client GUI to sync changed filter settings to server
Received on: SERVER
Sent by GPS Tool & Area GPS Tool GUI when the Teleport button is pressed
Received on: SERVER
Sent by client to switch an armor module on or off
Received on: SERVER
Sent by client to set the status of multiple armor features at once
(used in armor init & core components reset)
Received on: SERVER
Sent by client when logistics module colour is updated via GUI
Received on: SERVER
Update the entity filter of an air grate module
Received on: SERVER
Sent from Pneumatic Armor colors GUI to re-color armor pieces
Received on: SERVER
General packet for updating various pneumatic armor settings from client GUI
Received on: SERVER
Sent by client when the drone debug key is pressed, for a valid entity or programmable controller target
Received on: SERVER
Sent by client from area tool GUI to update stored settings
Received on: CLIENT
The primary mechanism for sync'ing BE fields to an open GUI.
Received on: CLIENT
Sent by server when the status or colour of a logistics module is updated
Received on: SERVER
Sent by client GUI to update (and maybe save as default) the configuration settings of a Micromissile item.
Received on: CLIENT
Sent periodically from server to sync pressure level:
- For pressure tubes with an attached pressure gauge module
- For air grate modules, when the pressure changes enough to modify the range
- For machine air handlers which are currently leaking
Received on: SERVER
Sent by client to update the layout of a Remote item from the Remote GUI
Received on: SERVER
Sent by client to update the searched item (Pneumatic Helmet search upgrade)
Received on: SERVER
Sent by client GUI's to update a IGUITextFieldSensitive block entity server-side
Received on: SERVER
Sent by client when tube module settings are updated via GUI.
A player filter is a collection of individual matcher objects with either match-any or match-all behaviour.
This capability object can be attached to PneumaticCraft heat-handling block entities to make them look like
Mekanism heat handlers.
Public PneumaticCraft capability objects.
Much like the default FluidTank implementation in Forge, but also passes the previous fluid & amount in its
onContentsChanged() method.
Represents an upgrade which can be inserted into a PNC machine or item.
Events related to Pneumatic Armor.
PneumaticArmorLayer<E extends net.minecraft.world.entity.LivingEntity,M extends net.minecraft.client.model.HumanoidModel<E>>
Class containing manager for sending all IMC messages to other mods
Base class for all PneumaticCraft machine recipes, which are registered in the vanilla RecipeManager.
Just to keep vanilla happy...
PneumaticElytraLayer<T extends net.minecraft.world.entity.LivingEntity,M extends net.minecraft.client.model.HumanoidModel<T>>
This class can be used to register and access various things to and from the mod.
Provides top-level access to the various registries and helpers in the API.
Data object for type of slot and the index of the slot.
Data object for storing a
PressureChamberRecipe.RecipeSlot and a cycle represented as a list of indices for the slot.Stores information about the subpart of a pressure tube that is being looked at or interacted with.
Tri-state representing the 3 possible states for a tube connection.
Special client-only entity used for rendering the programmable controller's "minidrone".
The Area widget itself
Base class for widgets which use Area and Item Filter widgets
Area widget as used by the GPS Area Tool.
Base class for in-world conditions.
Base class for non-world conditions (drone/item/coordinate)
Base class for widgets which have side filtering and count limits.
Represents the type of a progwidget.
For checking if a damage source type is radiation in a mod-agnostic way.
RecipeCache<T extends net.minecraft.world.item.crafting.RecipeType<R>,R extends net.minecraft.world.item.crafting.Recipe<C>,C extends net.minecraft.world.Container>
LRU recipe cache for quick lookup of recipes based on inventory contents.
RedstoneController<T extends net.minecraft.world.level.block.entity.BlockEntity & IRedstoneControl<T>>
Handles redstone behaviour & emission for a block entity
RedstoneController.EmittingRedstoneMode<T extends net.minecraft.world.level.block.entity.BlockEntity & IRedstoneControl<T>>
RedstoneController.ReceivingRedstoneMode<T extends net.minecraft.world.level.block.entity.BlockEntity & IRedstoneControl<T>>
RedstoneController.RedstoneMode<T extends net.minecraft.world.level.block.entity.BlockEntity & IRedstoneControl<T>>
Gather all the reflection work we need to do here for ease of reference.
Renders the Drone's currently executing widget in-world, above the drone itself.
An item with a TEISR (ISTER) with a base (static) model.
Fired when a semiblock has been removed from the world.
Fired when a semiblock has been added to the world.
Server side tracker to find the semiblock entities at a given world and blockpos
(Note that one blockpos could have up to 7 semiblocks - one non-sided plus six sided semiblocks)
Just like a regular shaped recipe, but any air in any input ingredients is added up and put into the output item.
Just like a regular vanilla shaped recipe, but no horizontal mirroring.
A class to manage which sides of a BE's block are mapped to which capability handler objects (item/fluid/energy...)
Runs both the player and AI simulation objects and mediates between them.
An item handler wrapper which pretends to be smaller than its wrapped item handler; only as large as its last
non-empty slot.
A fluid tank which smartly syncs its fluid and amount to clients to avoid performance problems due to excessive
packet sending.
Fired when a Drone is trying to get a special coordinate, by accessing a variable with '$' prefix.
Like a vanilla Ingredient, but also compares the size of the input ingredient.
Represents a resolution-independent position for an armor HUD stat panel
A small collection of handy Unicode symbols
FIXME: sync'ing an array of enum does not work
Designed to sync temperature to client but only when changed by a certain amount, the delta being dependent on the
temperature at the time.
Defines a valid operating temperature range for machines which use heat.
Collection of mod types; categories of mod which can be used to control whether blocks/items etc.
Since we can't use java.awt anymore, this copies the functionality we need from java.awt.Color
A bit like a FallingBlockEntity but tumbles as it flies, and tries to form a block on impact with any other
block, not just when it lands on top of another block.
Some helper methods to manage items which can store upgrades (Pneumatic Armor, Drones...)
TODO Not a true recipe type; here mainly as placeholder, and for JEI purposes.
With thanks to JTK222 | Lukas for this
Extension of GuiButtonExt that add: 1) a string tag which is sent to the server when clicked (PacketGuiButton),
2) ability to draw itemstack or textured icons, and 3) can render its area when invisible
Builder to manage creating a collection of related radio buttons.
This class is derived from BluePower and edited by MineMaarten:
https://github.com/Qmunity/BluePower/blob/FluidCrafting/src/main/java/com/bluepowermod/client/gui/widget/WidgetTank.java