From 955a34979336971d5cdc6c031566386ff559bfc2 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 7 Apr 2025 23:09:09 +0200 Subject: [PATCH] pfft --- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../com/hbm/blocks/network/PneumoTube.java | 12 +- .../hbm/inventory/fluid/tank/FluidTank.java | 2 - .../com/hbm/inventory/gui/GUIPneumoTube.java | 43 ++++++- .../hbm/render/block/RenderPneumoTube.java | 16 +-- .../network/TileEntityCraneRouter.java | 2 + .../network/TileEntityPneumoTube.java | 110 +++++++++++++++++- .../networkproviders/PneumaticNetwork.java | 11 ++ .../PneumaticNetworkProvider.java | 13 +++ src/main/resources/assets/hbm/lang/de_DE.lang | 3 + src/main/resources/assets/hbm/lang/en_US.lang | 3 + 11 files changed, 198 insertions(+), 19 deletions(-) create mode 100644 src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java create mode 100644 src/main/java/com/hbm/uninos/networkproviders/PneumaticNetworkProvider.java diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 8df4ed6e4..7a1cb4f90 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1962,7 +1962,7 @@ public class ModBlocks { drone_crate_provider = new DroneDock().setBlockName("drone_crate_provider").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_provider"); drone_crate_requester = new DroneDock().setBlockName("drone_crate_requester").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_requester"); - pneumatic_tube = new PneumoTube().setBlockName("pneumatic_tube").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_tube"); + pneumatic_tube = new PneumoTube().setBlockName("pneumatic_tube").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_tube"); chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); diff --git a/src/main/java/com/hbm/blocks/network/PneumoTube.java b/src/main/java/com/hbm/blocks/network/PneumoTube.java index 5b93dbb38..afe29c665 100644 --- a/src/main/java/com/hbm/blocks/network/PneumoTube.java +++ b/src/main/java/com/hbm/blocks/network/PneumoTube.java @@ -119,7 +119,8 @@ public class PneumoTube extends BlockContainer implements IToolable, IFluidConne if(rot == ForgeDirection.UNKNOWN) break; //unknown is always valid, simply disables this part if(rot == oth) continue; //skip if both positions collide TileEntity tile = Compat.getTileStandard(world, x + rot.offsetX, y + rot.offsetY, z + rot.offsetZ); - if(tile instanceof IInventory && !(tile instanceof TileEntityPneumoTube)) break; //valid if connected to an IInventory + if(tile instanceof TileEntityPneumoTube) continue; + if(tile instanceof IInventory) break; //valid if connected to an IInventory } if(player.isSneaking()) tube.ejectionDir = rot; else tube.insertionDir = rot; @@ -207,8 +208,13 @@ public class PneumoTube extends BlockContainer implements IToolable, IFluidConne public boolean canConnectToAir(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { TileEntityPneumoTube tube = (TileEntityPneumoTube) world.getTileEntity(x, y, z); - if(tube != null && !tube.isCompressor()) return false; - return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.AIR) && !(world.getTileEntity(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) instanceof TileEntityPneumoTube); + if(tube != null) { + if(!tube.isCompressor()) return false; + if(tube.ejectionDir == dir || tube.insertionDir == dir) return false; + } + TileEntity tile = world.getTileEntity(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); + if(tile instanceof TileEntityPneumoTube) return false; + return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.AIR); } @Override public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index c85d58e74..bfad1ec11 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -49,9 +49,7 @@ public class FluidTank { } public FluidTank withPressure(int pressure) { - if(this.pressure != pressure) this.setFill(0); - this.pressure = pressure; return this; } diff --git a/src/main/java/com/hbm/inventory/gui/GUIPneumoTube.java b/src/main/java/com/hbm/inventory/gui/GUIPneumoTube.java index 5aa546860..0247ffeb6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPneumoTube.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPneumoTube.java @@ -7,13 +7,17 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerPneumoTube; import com.hbm.lib.RefStrings; 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 net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; @@ -35,6 +39,9 @@ public class GUIPneumoTube extends GuiInfoContainer { super.drawScreen(x, y, interp); tube.compair.renderTankInfo(this, x, y, guiLeft + 7, guiTop + 16, 18, 18); + + this.drawCustomInfoStat(x, y, guiLeft + 7, guiTop + 52, 18, 18, x, y, (tube.redstone ? (EnumChatFormatting.GREEN + "ON ") : (EnumChatFormatting.RED + "OFF ")) + EnumChatFormatting.RESET + "with Redstone"); + this.drawCustomInfoStat(x, y, guiLeft + 6, guiTop + 36, 20, 8, x, y, "Compressor: " + tube.compair.getPressure() + " PU"); if(this.mc.thePlayer.inventory.getItemStack() == null) { for(int i = 0; i < 15; ++i) { @@ -46,12 +53,38 @@ public class GUIPneumoTube extends GuiInfoContainer { } } } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(checkClick(x, y, 7, 52, 18, 18)) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("redstone", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, tube.xCoord, tube.yCoord, tube.zCoord)); + } + + if(checkClick(x, y, 6, 36, 20, 8)) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("pressure", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, tube.xCoord, tube.yCoord, tube.zCoord)); + } + + if(checkClick(x, y, 128, 30, 14, 26)) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("whitelist", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, tube.xCoord, tube.yCoord, tube.zCoord)); + } + } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.tube.hasCustomInventoryName() ? this.tube.getInventoryName() : I18n.format(this.tube.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 5, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } @@ -61,6 +94,14 @@ public class GUIPneumoTube extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + if(tube.redstone) drawTexturedModalRect(guiLeft + 7, guiTop + 52, 179, 0, 18, 18); + + if(tube.whitelist) { + drawTexturedModalRect(guiLeft + 139, guiTop + 33, 176, 0, 3, 6); + } else { + drawTexturedModalRect(guiLeft + 139, guiTop + 47, 176, 0, 3, 6); + } + drawTexturedModalRect(guiLeft + 6 + 4 * (tube.compair.getPressure() - 1), guiTop + 36, 179, 18, 4, 8); GaugeUtil.drawSmoothGauge(guiLeft + 16, guiTop + 25, this.zLevel, (double) tube.compair.getFill() / (double) tube.compair.getMaxFill(), 5, 2, 1, 0xCA6C43, 0xAB4223); } diff --git a/src/main/java/com/hbm/render/block/RenderPneumoTube.java b/src/main/java/com/hbm/render/block/RenderPneumoTube.java index fac248013..119231e08 100644 --- a/src/main/java/com/hbm/render/block/RenderPneumoTube.java +++ b/src/main/java/com/hbm/render/block/RenderPneumoTube.java @@ -70,8 +70,10 @@ public class RenderPneumoTube implements ISimpleBlockRenderingHandler { double lower = 0.3125D; double upper = 0.6875D; + boolean hasConnections = tile != null && (tile.isCompressor() || tile.isEndpoint()); + //Straight along X - if(mask == 0b110000) { + if(mask == 0b110000 && !hasConnections) { renderer.setRenderBounds(0.0D, lower, lower, 1.0D, upper, upper); duct.renderSides[4] = false; duct.renderSides[5] = false; @@ -80,7 +82,7 @@ public class RenderPneumoTube implements ISimpleBlockRenderingHandler { duct.resetRenderSides(); // Straight along Z - } else if(mask == 0b000011) { + } else if(mask == 0b000011 && !hasConnections) { renderer.setRenderBounds(lower, lower, 0.0D, upper, upper, 1.0D); duct.renderSides[2] = false; duct.renderSides[3] = false; @@ -93,7 +95,7 @@ public class RenderPneumoTube implements ISimpleBlockRenderingHandler { renderer.uvRotateBottom = 0; //Straight along Y - } else if(mask == 0b001100) { + } else if(mask == 0b001100 && !hasConnections) { renderer.setRenderBounds(lower, 0.0D, lower, upper, 1.0D, upper); duct.renderSides[0] = false; duct.renderSides[1] = false; @@ -180,10 +182,10 @@ public class RenderPneumoTube implements ISimpleBlockRenderingHandler { if(dir == Library.NEG_Y) { duct.renderSides[1] = false; duct.renderSides[0] = false; - renderer.setRenderBounds(lower, upper, lower, upper, cUpper, upper); + renderer.setRenderBounds(lower, cLower, lower, upper, lower, upper); renderer.renderStandardBlock(duct, x, y, z); duct.resetRenderSides(); duct.activeIcon = newIcon; - renderer.setRenderBounds(nLower, cUpper, nLower, nUpper, 1, nUpper); + renderer.setRenderBounds(nLower, 0, nLower, nUpper, nLower, nUpper); renderer.renderStandardBlock(duct, x, y, z); } @@ -199,10 +201,10 @@ public class RenderPneumoTube implements ISimpleBlockRenderingHandler { if(dir == Library.NEG_Z) { duct.renderSides[3] = false; duct.renderSides[2] = false; - renderer.setRenderBounds(lower, lower, upper, upper, upper, cUpper); + renderer.setRenderBounds(lower, lower, cLower, upper, upper, lower); renderer.renderStandardBlock(duct, x, y, z); duct.resetRenderSides(); duct.activeIcon = newIcon; - renderer.setRenderBounds(nLower, nLower, cUpper, nUpper, nUpper, 1); + renderer.setRenderBounds(nLower, nLower, 0, nUpper, nUpper, cLower); renderer.renderStandardBlock(duct, x, y, z); } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java index c8e624b3b..45f8dc05d 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java @@ -126,10 +126,12 @@ public class TileEntityCraneRouter extends TileEntityMachineBase implements IGUI public boolean hasPermission(EntityPlayer player) { return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; } + @Override public int[] getFilterSlots() { return new int[]{0, slots.length}; } + @Override public void receiveControl(NBTTagCompound data) { if(data.hasKey("toggle")) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPneumoTube.java b/src/main/java/com/hbm/tileentity/network/TileEntityPneumoTube.java index 7b2952544..b6f89b8f4 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPneumoTube.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPneumoTube.java @@ -1,13 +1,22 @@ package com.hbm.tileentity.network; import com.hbm.inventory.container.ContainerPneumoTube; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIPneumoTube; +import com.hbm.lib.Library; import com.hbm.module.ModulePatternMatcher; +import com.hbm.tileentity.IControlReceiverFilter; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.uninos.GenNode; +import com.hbm.uninos.UniNodespace; +import com.hbm.uninos.networkproviders.PneumaticNetworkProvider; +import com.hbm.util.Compat; import com.hbm.util.EnumUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluidmk2.IFluidStandardReceiverMK2; import cpw.mods.fml.relauncher.Side; @@ -15,22 +24,30 @@ import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIProvider, IFluidStandardReceiverMK2 { +public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIProvider, IFluidStandardReceiverMK2, IControlReceiverFilter { public ModulePatternMatcher pattern = new ModulePatternMatcher(15); public ForgeDirection insertionDir = ForgeDirection.UNKNOWN; public ForgeDirection ejectionDir = ForgeDirection.UNKNOWN; + public boolean whitelist = false; + public boolean redstone = false; + public FluidTank compair; + protected PneumaticNode node; + public TileEntityPneumoTube() { super(17); this.compair = new FluidTank(Fluids.AIR, 4_000).withPressure(1); @@ -46,25 +63,73 @@ public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIP if(!worldObj.isRemote) { + if(this.node == null || this.node.expired) { + this.node = (PneumaticNode) UniNodespace.getNode(worldObj, xCoord, yCoord, zCoord, PneumaticNetworkProvider.THE_PROVIDER); + + if(this.node == null || this.node.expired) { + this.node = (PneumaticNode) new PneumaticNode(new BlockPos(xCoord, yCoord, zCoord)).setConnections( + new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 1, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord + 1, zCoord, Library.POS_Y), + new DirPos(xCoord, yCoord - 1, zCoord, Library.NEG_Y), + new DirPos(xCoord, yCoord, zCoord + 1, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z) + ); + UniNodespace.createNode(worldObj, this.node); + } + } + if(this.isCompressor()) { - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(worldObj.getTotalWorldTime() % 10 == 0) for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { if(dir != this.insertionDir && dir != this.ejectionDir) { this.trySubscribe(compair.getTankType(), worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } } + + if(worldObj.getTotalWorldTime() % 40 == 0 && this.compair.getFill() > 0) { + //this.compair.setFill(0); + //worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:weapon.reload.tubeFwoomp", 1.0F, 1.0F); + } + } + + if(this.isEndpoint() && this.node != null && this.node.net != null && worldObj.getTotalWorldTime() % 10 == 0) { + TileEntity tile = Compat.getTileStandard(worldObj, xCoord + this.ejectionDir.offsetX, yCoord + this.ejectionDir.offsetY, zCoord + this.ejectionDir.offsetZ); + if(tile instanceof IInventory) this.node.net.addReceiver((IInventory) tile); } this.networkPackNT(15); } } - - public boolean isCompressor() { - return this.insertionDir != ForgeDirection.UNKNOWN; + + @Override + public long getReceiverSpeed(FluidType type, int pressure) { + return MathHelper.clamp_int((this.compair.getMaxFill() - this.compair.getFill()) / 25, 1, 100); } + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return dir != this.insertionDir && dir != this.ejectionDir && type == Fluids.AIR; + } + + @Override + public void invalidate() { + super.invalidate(); + + if(!worldObj.isRemote) { + if(this.node != null) { + UniNodespace.destroyNode(worldObj, xCoord, yCoord, zCoord, PneumaticNetworkProvider.THE_PROVIDER); + } + } + } + + public boolean isCompressor() { return this.insertionDir != ForgeDirection.UNKNOWN; } + public boolean isEndpoint() { return this.ejectionDir != ForgeDirection.UNKNOWN; } + @Override public void serialize(ByteBuf buf) { super.serialize(buf); + buf.writeBoolean(redstone); + buf.writeBoolean(whitelist); pattern.serialize(buf); compair.serialize(buf); } @@ -72,6 +137,8 @@ public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIP @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); + this.redstone = buf.readBoolean(); + this.whitelist = buf.readBoolean(); pattern.deserialize(buf); compair.deserialize(buf); } @@ -107,6 +174,9 @@ public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIP this.ejectionDir = EnumUtil.grabEnumSafely(ForgeDirection.class, nbt.getByte("ejectionDir")); this.compair.readFromNBT(nbt, "tank"); this.pattern.readFromNBT(nbt); + + this.whitelist = nbt.getBoolean("whitelist"); + this.redstone = nbt.getBoolean("redstone"); } @Override @@ -116,6 +186,9 @@ public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIP nbt.setByte("ejectionDir", (byte) ejectionDir.ordinal()); this.compair.writeToNBT(nbt, "tank"); this.pattern.writeToNBT(nbt); + + nbt.setBoolean("whitelist", whitelist); + nbt.setBoolean("redstone", redstone); } @Override @@ -128,7 +201,34 @@ public class TileEntityPneumoTube extends TileEntityMachineBase implements IGUIP public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIPneumoTube(player.inventory, this); } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("whitelist")) { + this.whitelist = !this.whitelist; + } + if(data.hasKey("redstone")) { + this.redstone = !this.redstone; + } + if(data.hasKey("pressure")) { + int pressure = this.compair.getPressure() + 1; + if(pressure > 5) pressure = 1; + this.compair.withPressure(pressure); + } + + this.markDirty(); + } + + @Override public boolean hasPermission(EntityPlayer player) { return this.isUseableByPlayer(player); } + @Override public int[] getFilterSlots() { return new int[] {0, 15}; } @Override public FluidTank[] getAllTanks() { return new FluidTank[] {compair}; } @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {compair}; } + + public static class PneumaticNode extends GenNode { + + public PneumaticNode(BlockPos... positions) { + super(PneumaticNetworkProvider.THE_PROVIDER, positions); + } + } } diff --git a/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java b/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java new file mode 100644 index 000000000..4fdc5bb81 --- /dev/null +++ b/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetwork.java @@ -0,0 +1,11 @@ +package com.hbm.uninos.networkproviders; + +import com.hbm.tileentity.network.TileEntityPneumoTube.PneumaticNode; +import com.hbm.uninos.NodeNet; + +import net.minecraft.inventory.IInventory; + +public class PneumaticNetwork extends NodeNet { + + @Override public void update() { } +} diff --git a/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetworkProvider.java b/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetworkProvider.java new file mode 100644 index 000000000..330db1821 --- /dev/null +++ b/src/main/java/com/hbm/uninos/networkproviders/PneumaticNetworkProvider.java @@ -0,0 +1,13 @@ +package com.hbm.uninos.networkproviders; + +import com.hbm.uninos.INetworkProvider; + +public class PneumaticNetworkProvider implements INetworkProvider{ + + public static PneumaticNetworkProvider THE_PROVIDER = new PneumaticNetworkProvider(); + + @Override + public PneumaticNetwork provideNetwork() { + return new PneumaticNetwork(); + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index cbfd72c49..724b02f75 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -410,6 +410,7 @@ container.paDipole=Dipol container.paQuadrupole=Quad. container.paSource=Teilchenquelle container.plasmaHeater=Plasmaerhitzer +container.pneumoTube=Rohrpost container.press=Befeuerte Presse container.puf6_tank=PuF6 Tank container.pumpjack=Pferdekopfpumpe @@ -702,6 +703,7 @@ hbm.key.toggleHUD=HUD umschalten hbm.key.trainInv=Zug-Inventar hbm.key.reload=Nachladen +hbmfluid.air=Druckluft hbmfluid.amat=Antimaterie hbmfluid.aromatics=Aromatische Kohlenwasserstoffe hbmfluid.aschrab=Antischrabidium @@ -4755,6 +4757,7 @@ tile.plant_tall.weed.name=Hanf tile.plasma.name=Plasma tile.plasma_heater.name=Plasmaerhitzer tile.plushie.name=%s Plüschfigur +tile.pneumatic_tube.name=Rohrpost tile.pole_satellite_receiver.name=Satellitenschüssel tile.pole_top.name=Antennenspitze tile.press_preheater.name=Presse-Vorheizer diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 4dc821bd9..0a4423320 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -813,6 +813,7 @@ container.paDipole=Dipole container.paQuadrupole=Quad. container.paSource=Particle Source container.plasmaHeater=Plasma Heater +container.pneumoTube=Pneumatic Tube container.press=Burner Press container.puf6_tank=PuF6 Tank container.pumpjack=Pumpjack @@ -1410,6 +1411,7 @@ hbm.key.toggleHUD=Toggle HUD hbm.key.trainInv=Train Inventory hbm.key.reload=Reload +hbmfluid.air=Compressed Air hbmfluid.alumina=Alumina hbmfluid.amat=Antimatter hbmfluid.aromatics=Aromatic Hydrocarbons @@ -5901,6 +5903,7 @@ tile.plant_tall.weed.name=Hemp tile.plasma.name=Plasma tile.plasma_heater.name=Plasma Heater tile.plushie.name=%s Plushie +tile.pneumatic_tube.name=Pneumatic Tube tile.pole_satellite_receiver.name=Satellite Dish tile.pole_top.name=Antenna Top tile.press_preheater.name=Burner Press Preheater