diff --git a/src/main/java/api/hbm/ntl/EnumStorageType.java b/src/main/java/api/hbm/ntl/EnumStorageType.java
index 287f18c77..bbde53f61 100644
--- a/src/main/java/api/hbm/ntl/EnumStorageType.java
+++ b/src/main/java/api/hbm/ntl/EnumStorageType.java
@@ -1,5 +1,6 @@
package api.hbm.ntl;
+@Deprecated
public enum EnumStorageType {
CLUTTER, //potentially unsorted storage (like crates) with many slots that have low capacity
MASS //storage with very few lots (usually 1) and very high capacity
diff --git a/src/main/java/api/hbm/ntl/IPneumaticConnector.java b/src/main/java/api/hbm/ntl/IPneumaticConnector.java
new file mode 100644
index 000000000..d9ff3ec7d
--- /dev/null
+++ b/src/main/java/api/hbm/ntl/IPneumaticConnector.java
@@ -0,0 +1,15 @@
+package api.hbm.ntl;
+
+import net.minecraftforge.common.util.ForgeDirection;
+
+public interface IPneumaticConnector {
+
+ /**
+ * Whether the given side can be connected to.
+ * @param dir The side of this block, not the one that is trying to connect.
+ * @return
+ */
+ public default boolean canConnectPneumatic(ForgeDirection dir) {
+ return dir != ForgeDirection.UNKNOWN;
+ }
+}
diff --git a/src/main/java/api/hbm/ntl/IStorageComponent.java b/src/main/java/api/hbm/ntl/IStorageComponent.java
index adb46ead0..13b7ea669 100644
--- a/src/main/java/api/hbm/ntl/IStorageComponent.java
+++ b/src/main/java/api/hbm/ntl/IStorageComponent.java
@@ -2,6 +2,7 @@ package api.hbm.ntl;
import net.minecraft.item.ItemStack;
+@Deprecated
public interface IStorageComponent {
/**
diff --git a/src/main/java/api/hbm/ntl/StorageManifest.java b/src/main/java/api/hbm/ntl/StorageManifest.java
index 628502d52..0d58df702 100644
--- a/src/main/java/api/hbm/ntl/StorageManifest.java
+++ b/src/main/java/api/hbm/ntl/StorageManifest.java
@@ -10,6 +10,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+@Deprecated
public class StorageManifest {
public LinkedHashMap itemMeta = new LinkedHashMap();
diff --git a/src/main/java/api/hbm/ntl/StorageStack.java b/src/main/java/api/hbm/ntl/StorageStack.java
index 31871f696..4980bdcbf 100644
--- a/src/main/java/api/hbm/ntl/StorageStack.java
+++ b/src/main/java/api/hbm/ntl/StorageStack.java
@@ -3,6 +3,7 @@ package api.hbm.ntl;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+@Deprecated
public class StorageStack implements Comparable {
private int cachedItemId;
diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java
index eeff5c1bb..82c53856b 100644
--- a/src/main/java/com/hbm/blocks/ModBlocks.java
+++ b/src/main/java/com/hbm/blocks/ModBlocks.java
@@ -12,6 +12,11 @@ import com.hbm.blocks.machine.fusion.*;
import com.hbm.blocks.machine.pile.*;
import com.hbm.blocks.machine.rbmk.*;
import com.hbm.blocks.network.*;
+import com.hbm.blocks.network.pneumatic.PneumoStorageAccess;
+import com.hbm.blocks.network.pneumatic.PneumoStorageClutter;
+import com.hbm.blocks.network.pneumatic.PneumoStorageMono;
+import com.hbm.blocks.network.pneumatic.PneumoTube;
+import com.hbm.blocks.network.pneumatic.PneumoTubePaintableBlock;
import com.hbm.blocks.rail.*;
import com.hbm.blocks.test.*;
import com.hbm.blocks.turret.*;
@@ -798,6 +803,9 @@ public class ModBlocks {
public static Block pneumatic_tube;
public static Block pneumatic_tube_paintable;
+ public static Block pneumatic_storage_access;
+ public static Block pneumatic_storage_clutter;
+ public static Block pneumatic_storage_mono;
public static Block fan;
public static Block piston_inserter;
@@ -1914,6 +1922,9 @@ public class ModBlocks {
pneumatic_tube = new PneumoTube().setBlockName("pneumatic_tube").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_tube");
pneumatic_tube_paintable = new PneumoTubePaintableBlock().setBlockName("pneumatic_tube_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
+ pneumatic_storage_access = new PneumoStorageAccess().setBlockName("pneumatic_storage_access").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_access");
+ pneumatic_storage_clutter = new PneumoStorageClutter().setBlockName("pneumatic_storage_clutter").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_clutter");
+ pneumatic_storage_mono = new PneumoStorageMono().setBlockName("pneumatic_storage_mono").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_mono");
chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain");
@@ -3185,6 +3196,9 @@ public class ModBlocks {
register(drone_crate_requester);
register(pneumatic_tube);
register(pneumatic_tube_paintable);
+ register(pneumatic_storage_access);
+ register(pneumatic_storage_clutter);
+ register(pneumatic_storage_mono);
register(fan);
register(piston_inserter);
diff --git a/src/main/java/com/hbm/blocks/network/pneumatic/PneumoStorageAccess.java b/src/main/java/com/hbm/blocks/network/pneumatic/PneumoStorageAccess.java
new file mode 100644
index 000000000..9b449e957
--- /dev/null
+++ b/src/main/java/com/hbm/blocks/network/pneumatic/PneumoStorageAccess.java
@@ -0,0 +1,63 @@
+package com.hbm.blocks.network.pneumatic;
+
+import com.hbm.lib.RefStrings;
+import com.hbm.main.MainRegistry;
+import com.hbm.tileentity.network.pneumatic.TileEntityPneumoStorageAccess;
+
+import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.BlockPistonBase;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+
+public class PneumoStorageAccess extends BlockContainer {
+
+ @SideOnly(Side.CLIENT)
+ private IIcon iconFront;
+
+ public PneumoStorageAccess() {
+ super(Material.iron);
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World world, int meta) {
+ return new TileEntityPneumoStorageAccess();
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerBlockIcons(IIconRegister reg) {
+ super.registerBlockIcons(reg);
+ this.iconFront = reg.registerIcon(RefStrings.MODID + ":pneumatic_storage_access_front");
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(int side, int meta) {
+ return meta == side ? iconFront : blockIcon;
+ }
+
+ @Override
+ public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) {
+ int l = BlockPistonBase.determineOrientation(world, x, y, z, player);
+ world.setBlockMetadataWithNotify(x, y, z, l, 2);
+ }
+
+ @Override
+ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
+ if(world.isRemote) return true;
+ if(!player.isSneaking()) {
+ FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/main/java/com/hbm/blocks/network/pneumatic/PneumoStorageClutter.java b/src/main/java/com/hbm/blocks/network/pneumatic/PneumoStorageClutter.java
new file mode 100644
index 000000000..33b18b6ae
--- /dev/null
+++ b/src/main/java/com/hbm/blocks/network/pneumatic/PneumoStorageClutter.java
@@ -0,0 +1,33 @@
+package com.hbm.blocks.network.pneumatic;
+
+import com.hbm.main.MainRegistry;
+import com.hbm.tileentity.network.pneumatic.TileEntityPneumoStorageClutter;
+
+import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.material.Material;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class PneumoStorageClutter extends BlockContainer {
+
+ public PneumoStorageClutter() {
+ super(Material.iron);
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World world, int meta) {
+ return new TileEntityPneumoStorageClutter();
+ }
+
+ @Override
+ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
+ if(world.isRemote) return true;
+ if(!player.isSneaking()) {
+ FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/main/java/com/hbm/blocks/network/pneumatic/PneumoStorageMono.java b/src/main/java/com/hbm/blocks/network/pneumatic/PneumoStorageMono.java
new file mode 100644
index 000000000..47428aff2
--- /dev/null
+++ b/src/main/java/com/hbm/blocks/network/pneumatic/PneumoStorageMono.java
@@ -0,0 +1,19 @@
+package com.hbm.blocks.network.pneumatic;
+
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.material.Material;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class PneumoStorageMono extends BlockContainer {
+
+ public PneumoStorageMono() {
+ super(Material.iron);
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World world, int meta) {
+ return null;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/hbm/blocks/network/PneumoTube.java b/src/main/java/com/hbm/blocks/network/pneumatic/PneumoTube.java
similarity index 96%
rename from src/main/java/com/hbm/blocks/network/PneumoTube.java
rename to src/main/java/com/hbm/blocks/network/pneumatic/PneumoTube.java
index 729f224dc..ec739a3b8 100644
--- a/src/main/java/com/hbm/blocks/network/PneumoTube.java
+++ b/src/main/java/com/hbm/blocks/network/pneumatic/PneumoTube.java
@@ -1,4 +1,4 @@
-package com.hbm.blocks.network;
+package com.hbm.blocks.network.pneumatic;
import java.util.ArrayList;
import java.util.List;
@@ -8,10 +8,11 @@ import com.hbm.inventory.fluid.Fluids;
import com.hbm.lib.Library;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
-import com.hbm.tileentity.network.TileEntityPneumoTube;
+import com.hbm.tileentity.network.pneumatic.TileEntityPneumoTube;
import com.hbm.util.Compat;
import api.hbm.block.IToolable;
+import api.hbm.ntl.IPneumaticConnector;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
@@ -207,7 +208,9 @@ public class PneumoTube extends BlockContainer implements IToolable, ITooltipPro
public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir) {
TileEntity tile = world instanceof World ? Compat.getTileStandard((World) world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) : world.getTileEntity(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
- return tile instanceof TileEntityPneumoTube;
+ if(tile instanceof TileEntityPneumoTube) return true;
+ if(tile instanceof IPneumaticConnector) return ((IPneumaticConnector) tile).canConnectPneumatic(dir.getOpposite());
+ return false;
}
public boolean canConnectToAir(IBlockAccess world, int x, int y, int z, ForgeDirection dir) {
diff --git a/src/main/java/com/hbm/blocks/network/PneumoTubePaintableBlock.java b/src/main/java/com/hbm/blocks/network/pneumatic/PneumoTubePaintableBlock.java
similarity index 95%
rename from src/main/java/com/hbm/blocks/network/PneumoTubePaintableBlock.java
rename to src/main/java/com/hbm/blocks/network/pneumatic/PneumoTubePaintableBlock.java
index c54baab81..3845a12e7 100644
--- a/src/main/java/com/hbm/blocks/network/PneumoTubePaintableBlock.java
+++ b/src/main/java/com/hbm/blocks/network/pneumatic/PneumoTubePaintableBlock.java
@@ -1,4 +1,4 @@
-package com.hbm.blocks.network;
+package com.hbm.blocks.network.pneumatic;
import api.hbm.block.IToolable;
@@ -6,11 +6,12 @@ import java.util.List;
import com.hbm.blocks.IBlockMultiPass;
import com.hbm.blocks.ITooltipProvider;
+import com.hbm.blocks.network.BlockCablePaintable;
import com.hbm.interfaces.ICopiable;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.render.block.RenderBlockMultipass;
-import com.hbm.tileentity.network.TileEntityPneumoTube;
+import com.hbm.tileentity.network.pneumatic.TileEntityPneumoTube;
import com.hbm.util.Compat;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
diff --git a/src/main/java/com/hbm/inventory/container/ContainerPneumoTube.java b/src/main/java/com/hbm/inventory/container/ContainerPneumoTube.java
index 91eaab7f3..6f844e35f 100644
--- a/src/main/java/com/hbm/inventory/container/ContainerPneumoTube.java
+++ b/src/main/java/com/hbm/inventory/container/ContainerPneumoTube.java
@@ -1,7 +1,7 @@
package com.hbm.inventory.container;
import com.hbm.inventory.SlotPattern;
-import com.hbm.tileentity.network.TileEntityPneumoTube;
+import com.hbm.tileentity.network.pneumatic.TileEntityPneumoTube;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
diff --git a/src/main/java/com/hbm/inventory/gui/GUIPneumoTube.java b/src/main/java/com/hbm/inventory/gui/GUIPneumoTube.java
index 9ee7bd1b1..eba1e7c9a 100644
--- a/src/main/java/com/hbm/inventory/gui/GUIPneumoTube.java
+++ b/src/main/java/com/hbm/inventory/gui/GUIPneumoTube.java
@@ -10,7 +10,7 @@ import com.hbm.module.ModulePatternMatcher;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toserver.NBTControlPacket;
import com.hbm.render.util.GaugeUtil;
-import com.hbm.tileentity.network.TileEntityPneumoTube;
+import com.hbm.tileentity.network.pneumatic.TileEntityPneumoTube;
import com.hbm.uninos.networkproviders.PneumaticNetwork;
import net.minecraft.client.Minecraft;
diff --git a/src/main/java/com/hbm/render/block/RenderPneumoTube.java b/src/main/java/com/hbm/render/block/RenderPneumoTube.java
index 119231e08..85c03f86b 100644
--- a/src/main/java/com/hbm/render/block/RenderPneumoTube.java
+++ b/src/main/java/com/hbm/render/block/RenderPneumoTube.java
@@ -2,10 +2,10 @@ package com.hbm.render.block;
import org.lwjgl.opengl.GL11;
-import com.hbm.blocks.network.PneumoTube;
+import com.hbm.blocks.network.pneumatic.PneumoTube;
import com.hbm.lib.Library;
import com.hbm.render.util.RenderBlocksNT;
-import com.hbm.tileentity.network.TileEntityPneumoTube;
+import com.hbm.tileentity.network.pneumatic.TileEntityPneumoTube;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java
index 68be764bc..6a8a5608b 100644
--- a/src/main/java/com/hbm/tileentity/TileMappings.java
+++ b/src/main/java/com/hbm/tileentity/TileMappings.java
@@ -42,7 +42,7 @@ import com.hbm.blocks.network.FluidDuctGauge.TileEntityPipeGauge;
import com.hbm.blocks.network.FluidDuctPaintable.TileEntityPipePaintable;
import com.hbm.blocks.network.FluidDuctPaintableBlockExhaust.TileEntityPipeExhaustPaintable;
import com.hbm.blocks.network.FluidPump.TileEntityFluidPump;
-import com.hbm.blocks.network.PneumoTubePaintableBlock.TileEntityPneumoTubePaintable;
+import com.hbm.blocks.network.pneumatic.PneumoTubePaintableBlock.TileEntityPneumoTubePaintable;
import com.hbm.blocks.rail.RailStandardSwitch.TileEntityRailSwitch;
import com.hbm.blocks.test.TestEventTester.TileEntityTestStorage;
import com.hbm.blocks.network.BlockOpenComputersCablePaintable.TileEntityOpenComputersCablePaintable;
@@ -56,6 +56,9 @@ import com.hbm.tileentity.machine.pile.*;
import com.hbm.tileentity.machine.rbmk.*;
import com.hbm.tileentity.machine.storage.*;
import com.hbm.tileentity.network.*;
+import com.hbm.tileentity.network.pneumatic.TileEntityPneumoStorageAccess;
+import com.hbm.tileentity.network.pneumatic.TileEntityPneumoStorageClutter;
+import com.hbm.tileentity.network.pneumatic.TileEntityPneumoTube;
import com.hbm.tileentity.turret.*;
import com.hbm.util.Compat;
@@ -467,6 +470,8 @@ public class TileMappings {
put(TileEntityPneumoTube.class, "tileentity_pneumatic_tube");
put(TileEntityPneumoTubePaintable.class, "tileentity_pneumatic_tube_paintable");
+ put(TileEntityPneumoStorageAccess.class, "tileentity_pneumatic_storage_access");
+ put(TileEntityPneumoStorageClutter.class, "tileentity_pneumatic_storage_clutter");
put(TileEntityRadioTorchSender.class, "tileentity_rtty_sender");
put(TileEntityRadioTorchReceiver.class, "tileentity_rtty_rec");
diff --git a/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageAccess.java b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageAccess.java
new file mode 100644
index 000000000..f5c4eaca4
--- /dev/null
+++ b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageAccess.java
@@ -0,0 +1,14 @@
+package com.hbm.tileentity.network.pneumatic;
+
+import api.hbm.ntl.IPneumaticConnector;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class TileEntityPneumoStorageAccess extends TileEntity implements IPneumaticConnector {
+
+ @Override
+ public boolean canConnectPneumatic(ForgeDirection dir) {
+ ForgeDirection selfdir = ForgeDirection.getOrientation(getBlockMetadata());
+ return dir == selfdir.getOpposite();
+ }
+}
diff --git a/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageClutter.java b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageClutter.java
new file mode 100644
index 000000000..126bed44e
--- /dev/null
+++ b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageClutter.java
@@ -0,0 +1,30 @@
+package com.hbm.tileentity.network.pneumatic;
+
+import com.hbm.inventory.fluid.Fluids;
+import com.hbm.inventory.fluid.tank.FluidTank;
+import com.hbm.tileentity.TileEntityMachineBase;
+
+import api.hbm.fluidmk2.IFluidStandardReceiverMK2;
+
+public class TileEntityPneumoStorageClutter extends TileEntityMachineBase implements IFluidStandardReceiverMK2 {
+
+ public FluidTank compair;
+
+ public TileEntityPneumoStorageClutter() {
+ super(6 * 9);
+ this.compair = new FluidTank(Fluids.AIR, 4_000).withPressure(1);
+ }
+
+ @Override
+ public String getName() {
+ return "container.pneumoStorageClutter";
+ }
+
+ @Override
+ public void updateEntity() {
+
+ }
+
+ @Override public FluidTank[] getAllTanks() { return new FluidTank[] {compair}; }
+ @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {compair}; }
+}
diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPneumoTube.java b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoTube.java
similarity index 99%
rename from src/main/java/com/hbm/tileentity/network/TileEntityPneumoTube.java
rename to src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoTube.java
index 1123bac7a..fcdbebc25 100644
--- a/src/main/java/com/hbm/tileentity/network/TileEntityPneumoTube.java
+++ b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoTube.java
@@ -1,4 +1,4 @@
-package com.hbm.tileentity.network;
+package com.hbm.tileentity.network.pneumatic;
import com.hbm.inventory.container.ContainerPneumoTube;
import com.hbm.inventory.fluid.FluidType;
diff --git a/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java b/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java
index aac5d52a7..66e0e4561 100644
--- a/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java
+++ b/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java
@@ -10,7 +10,7 @@ import java.util.Map.Entry;
import java.util.Random;
import com.hbm.tileentity.machine.TileEntityMachineAutocrafter;
-import com.hbm.tileentity.network.TileEntityPneumoTube;
+import com.hbm.tileentity.network.pneumatic.TileEntityPneumoTube;
import com.hbm.uninos.NodeNet;
import com.hbm.util.BobMathUtil;
import com.hbm.util.ItemStackUtil;
diff --git a/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_access.png b/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_access.png
new file mode 100644
index 000000000..7f8c02732
Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_access.png differ
diff --git a/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_access_front.png b/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_access_front.png
new file mode 100644
index 000000000..4a5f55317
Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_access_front.png differ
diff --git a/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_clutter.png b/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_clutter.png
new file mode 100644
index 000000000..9f14c454d
Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_clutter.png differ
diff --git a/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_mono.png b/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_mono.png
new file mode 100644
index 000000000..3766a8aaf
Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pneumatic_storage_mono.png differ
diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_pneumatic_access.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_pneumatic_access.png
new file mode 100644
index 000000000..f8c4929a4
Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/storage/gui_pneumatic_access.png differ
diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_pneumatic_clutter.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_pneumatic_clutter.png
new file mode 100644
index 000000000..d587a9c5a
Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/storage/gui_pneumatic_clutter.png differ