- Native Minecraft Version:
- Legacy (< 1.13)
- Tested Minecraft Versions:
- Source Code:
This plugin is currently being rewritten, therefore I'd recommend not to use it on a live server but only to test it out and have fun with it.
The Transport-Pipes plugin adds several different pipes into Minecraft. At the moment there are colored pipes, golden pipes, iron pipes, extraction pipes, void pipes, ice pipes and crafting pipes. Similar to the BuildCraft mod, these pipes can transport any kind of item. In the following wiki you will learn how to craft and use this pipes and what the difference between those pipe types is. Also some basic information about the plugin's commands and config is described.
TransportPipes depends only on ProtocolLib. In order for this plugin to work, make sure a recent version of ProtocolLib is installed on your server. You can download ProtocolLib here:
As explained above, you have to use different pipe types in different situations. Every pipe type and their purpose is listed below:
In general, all pipes can put items into container blocks if they are connected to such but only extraction pipes can extract items from container blocks. Also as mentioned many times above, for some pipes you need a wrench. The crafting recipe for the wrench is given below. The wrench can be used simply by right-clicking the desired pipe.
- Extraction Pipe: This pipe is the only one which can extract items from container blocks. Container blocks are blocks which hold inventories: Chests, furnaces, hoppers, shulker boxes and much more. Extraction pipe don't connect to each other but they do connect with every other pipe and with container blocks of course. One extraction pipe only has one extract direction from where it extracts items. This direction is displayed by a different connection texture. You can change the extract direction as well as the extract condition by right-clicking the pipe with a wrench and choosing the desired option. The extract amount option gives you the opportunity to extract multiple items at once. You can filter which items get extracted by using the filter interface (explained at the Golden Pipe). Last but not least, the extract condition determines when to extract items. There are three extract conditions:
- needs redstone: the pipe only extracts items if it's powered with a redstone signal.
- always extract: the pipe always extracts items regardless of whether it's powered with redstone or not.
- never extract: the pipe never extracts items.
- Colored Pipe: This is the simplest pipe. Its only purpose is to transport items. Nevertheless you can dye this kind of pipe. Different colored pipes behave the same but don't connect to each other. Therefore you can create complex pipe system without issues of wrong connected pipes.
- Ice Pipe: The Ice Pipe transports items as well as any other pipe. The only difference is the transport speed. Ice Pipes transport items four times faster than other pipes.
- Iron Pipe: Iron Pipes can also be called "One-Way-Pipe". It's feature is that regardless of the direction an item comes from, it will always move into the desired output direction. You can change this output direction by right-clicking the pipe with a wrench.
- Void Pipe: Void Pipes simply destroy all items which are moving inside them.
- Crafting Pipe: The Crafting Pipe gives you the possibility to automate crafting processes. After specifying a crafting recipe, all items going into this Pipe will be cached and the result item is going to be crafted as soon as enough ingredients are cached. By right-clicking this Pipe with a wrench, first you can define the output direction in which the crafted items will go and second you can see the cached items, used to craft the result item. By shift-right-clicking this Pipe with a wrench, you can define the crafting recipe. Just place the ingredients in the given workbench matrix and save it by closing the inventory.
- Golden Pipe: A Golden Pipe can sort items. Every output direction on the Golden Pipe has a specific color. By right-clicking this pipe with a wrench, a sorting inventory opens. You can put items in there to determine which items should go where. Every row in this inventory is referring to an output direction of the Golden Pipe. The color indicates which row refers to which output direction. By clicking on a color indicator inside this inventory, you can change the filtering mode for this output direction row. The filtering mode determines which values to compare when calculating the desired output direction for an incoming item. In this context, type stands for the material of the item (e.g. the material of any colored wool is still wool). Damage stands for the durability of a tool item and in correlation to "non-tool" items, they determine the "damage" value (e.g. the damage value of wool is the color of the wool and the damage value of wood is the type of wood). Block all mode doesn't check any values, it blocks the hole direction. Therefore items can only move into the Golden Pipe through a blocked direction but never out this direction. The following filtering modes exist:
- filter by type, damage, itemmeta
- filter by type, damage
- filter by type, itemmeta
- filter by type
- block all
All crafting recipes can be changed in the config but the default ones are as follows:
- /tpipes tps - Shows some performance stats, e.g. the ticks per second of the TransportPipes thread or the amount of pipes and items currently ticking.
- /tpipes settings - Opens the player specific settings interface. Here you can change the render distance of the pipes and you can switch between Vanilla and Modelled Render System. Vanilla Render System uses Vanilla Minecraft textures and the Modelled Render System uses a custom resourcepack.
- /tpipes reload <config | pipes> - Reloads either the config files or destroys and recreates all pipes in all worlds.
- /tpipes delete <radius> - Destroys all pipes around you in the desired radius.
- /tpipes save - Saves all pipes in all worlds. Actually on every world save, the pipes get saved automatically but with this command you can save them manually.
- /tpipes creative - Opens an inventory where you get access to every pipe without crafting them manually. This only works in creative mode.
- /tpipes update - Updates the plugin to a more recent version automatically (if possible). The updated version will be available after the next restart.
There are three config files managed by the plugin. You can find them here: TransportPipes/config.yml, TransportPipes/localization.yml and TransportPipes/recipes.yml. Inside the localization.yml file you can change every text displayed to your desired language. The config.yml file has several different options:
By adjusting the recipes.yml, you can change the crafting recipes for all pipes and the wrench item. A recipe is specified by the following keys:
- max_items_per_pipe - If the amount of items in one pipe exceeds this value, the pipe explodes in order to prevent lag issues.
- crafting_enabled - Disable this option to disable all pipe crafting recipes.
- check_updates - Enable to allow for automatic update check.
- destroy_pipe_on_explosion - Whether to destroy pipes if a natural (TNT, Creeper) explosion occurs nearby.
- anticheat_plugins - List all AntiCheat plugins running on your server here. If not listed here, some players may not be able to place or break pipes due to AntiCheat prevention.
- default_rendersystemId - Specify which RenderSystem (Vanilla = 0, Modelled = 1) to use as default for new players.
- default_renderdistance - Specify the default render distance of pipes. (Can be changed individually by each player).
- default_showitems - Specify the default value for the player-specific option "show items". This option allows you to visually hide all items flowing through the pipes.
- force_default_rendersystem - By enabling this option you can force all players to use the render system given at default_renderdistance.
- resourcepack - This option can be one of four values: "default", "server", "none" or a custom URL. The option "default" automatically loads the default resourcepack for TransportPipes. "server" assumes that the resourcepack is handled by the server completely ("server-resourcepack" option in the server.properties). "none" means the resourcepack is disabled and therefore only the vanilla rendersystem can be used. Last but not least, by providing a custom (direct) URL to a resourcepack, you can replace the default one with your own resourcepack. You can download the TransportPipes resourcepack here.
- disabled_worlds - For every world contained in this list, the pipe system will be disabled.
- type - The recipe type: Either shaped or shapeless.
- amount - The amount of the crafted result item.
- shape - Only if type is shaped. Every entry in this list describes a row in the crafting table. Every char describes an item.
- ingredients - if type is shaped: For every char you have to specify the item to use. (<itemID>:<itemDamage>) if type is shapeless: Just list all items (<itemID>:<itemDamage>) that are needed to craft the desired item. Just write "pipe" instead of <itemID>:<itemDamage> to use a pipe item. If you just write <itemID> (without the damage value) this refers to all items with this ID, regardless of their damage value (e.g. just write 5 to refer to wood and ignore the type of wood).
If you're a developer and you want to create your custom pipe system from another plugin, you can use the following PipeAPI:
In addition to this methods, there are several events you can use to get notified about important things:Code (Java):
//Builds a pipe at the given location. Additionally you can determine which type and which color the pipe should have.
//The PipeColor is ignored if PipeType is not COLORED.
PipeAPI.buildPipe(Location blockLoc, PipeType pipeType, PipeColor pipeColor);
//Detroys the pipe at the given location.
//Returns the current ticks per second of the TransportPipes thread.
//Returns the max tps of the TransportPipes thread.
//If this value is reached with the real tps, the thread is running fine.
//Returns the amount of pipes in all worlds.
//Returns the amount of pipes in the given world.
//Checks whether at the given location is a pipe (just set ductType to DuctType.PIPE).
PipeAPI.isDuct(Location blockLoc, DuctType ductType);
//Returns the pipe object at the given location or null if there is no pipe.
//Destroys all pipes in this world.
//Puts "item" into the given pipe with a moving direction of "itemDirection".
PipeAPI.putItemInPipe(Pipe pipe, ItemStack item, WrappedDirection itemDirection);
//Registers a custom container block at the given location. Every pipe around this block will try to extract/insert items from/into this container.
//Create your own implementation of the TransportPipesContainer interface in order to specify which items to extract and where inserted items should go.
PipeAPI.registerTransportPipesContainer(Location blockLoc, TransportPipesContainer container);
//Unregisters a custom container block. See PipeAPI.registerTransportPipesContainer(Location blockLoc, TransportPipesContainer container).
A donation would help me a lot working on this plugin and keeping it up to date
- PlayerPlaceDuctEvent - when a player places a duct (you have to check for DuctType.PIPE).
- PlayerDestroyDuctEvent - when a player destroys a duct (you have to check for DuctType.PIPE).
- DuctConnectionsChangeEvent - gets called when a duct changes its connections amount. For example when a container block or another duct is placed next to it (you have to check for DuctType.PIPE).
- DuctRegistrationEvent - abstract level of PlayerPlaceDuctEvent. This event also gets called when another plugin registers a duct or a duct gets loaded from the save file.
- DuctUnregistrationEvent - abstract level of PlayerDestroyDuctEvent. This event also gets called when another plugin unregisters a duct.
Construction graphic by madebyoliver from Flaticon is licensed under CC BY 3.0. Logo and banners created with LogoMaker.com
This plugin adds Transport-Pipes to Minecraft