BetterDispensers
Important: this plugin has been developed for Minecraft 1.2.5 and may or may not work with newer versions!
If you are a developer and want to continue and update this plugin, feel free to – full source is available under a permissive license.
If you're a user or an interested developer, please see this post for further information.
BetterDispensers - vertical dispensers, automatic crafting, block breakers, conduits, and more!
Dispensers, reinvented. Featuring:
- Vertical dispensers
- TNT, liquid, boat, minecart dispensing
- Conduits for transporting items to and from dispensers
- New dispenser functions: crafter, interactor, breaker, vacuum, accelerator, storage, filler, turret
- New dispenser functions can be combined with each other
- No client mods required
- Highly configurable
Download BetterDispensers 2.1 - released 2012/05/19 for 1.2.5
Basic Usage
First and foremost, BetterDispensers lets you orient dispensers vertically:
- Look down or up and place a dispenser
- Add items (including projectiles) to the dispenser inventory
- Activate the dispenser
When placing the dispenser, you will receive a message saying what direction it is facing. Items dispensed from the dispenser will shoot in this direction.
Plugin Showcase video from WoopaGaming (v1.1)
But that's just the beginning.
Advanced Usage
Regular dispensers have been enhanced:
- Use the "/dispenser [direction]" while looking at a dispenser to change or view its direction
- Hold shift while placing a dispenser to face it away from you
- Add TNT, it will be primed
- Add liquids or buckets, they will be emptied out
- Add boats or minecarts, they will be placed
- Configure any of the velocities, force, spreads, allowed projectiles etc. in config.yml
New kinds of dispenser can be created by placing specific blocks directly adjacent. Multiple blocks can be placed to combine their functionality. The new dispensers are:
Crafter
The crafter is created by placing a crafting table next to a dispenser. It is both an automatic crafting table and persistent crafting table.
- You can access the dispenser's inventory through the crafting table
- The crafting table inventory persists, no more items falling on the floor
- When activated, dispenses items crafted from its internal crafting grid
- Will not dispense if the recipe is invalid
- Works great when combined with Storage
Interactor
The interactor is created by placing a lapis lazuli block next to a dispenser.
- When activated, will "use" the item on a block
- Plant saplings, grow crops with bonemeal, till dirt with hoes, light fire with flint & steel, place blocks, etc.
- Helpful to automate your farming
- Acts as if you right-clicked the item on the top of the block
- Reaches up to 7 blocks, staggering directly in front of the dispenser and one block below
- Uses up tool durability
- Will not dispense if item cannot interact with the block
Breaker
The breaker is created by placing an iron block next to a dispenser.
- When activated, breaks blocks and dispenses its drops
- Requires a tool in the dispenser, and its durability will be used up
- Blocks are broken instantly
- Reaches up to 7 blocks in a straight line from the dispenser
- Sends a BlockBreakEvent to other plugins (with user "[BetterDispensers]") and respects modifications
- Modified tools from plugins like EnchantMore are supported (e.g., Shovel + Flame on sand = glass; drops only)
- Bedrock and portal blocks cannot be broken
- Useful for making an automated tree farm, automated cobble generator, etc.
- Will not dispense if no tool is present or block cannot be broken
- Works great when combined with Filler
Vacuum
The vacuum is created by placing an obsidian block next a dispenser.
- When activated, sucks up item drops within 8 blocks into the dispenser inventory before dispensing
- Items dropped from players automatically vacuumed up within 2 blocks, no need to activate
- Player arrows hitting the dispenser will be added as well
- Arrows hitting the dispenser from skeletons will not be added by default, but can be enabled
- Important: will not vacuum if the dispenser is empty - fill it with something
Accelerator
The accelerator is created by placing a gold block next to a dispenser.
- Doubles Y velocity of dispensed item
Storage
Any container block placed either directly adjacent to a dispenser, or at the end of a glass conduit connected to the dispenser, will augment its storage capabilities. The dispenser inventory specifies what items to take, and still must be filled.
- A random item will be first chosen from dispenser in all cases
- If the other container has an item of the same type, it will be taken from the container instead of the dispenser
- If the other container does not have the item, it will be taken from the dispenser as usual
- If the container is empty, the next one (if any) along the conduit will be chosen
- Containers include: chests, furnaces, brewing stands, other dispensers, custom container types (including Iron Chests)
- Important: will not dispense if the dispenser is empty - fill it with what you want to pull
Conduit
Conduits form BetterDispenser's primitive transport networks. Built out of glass, they can stretch up to 1000 contiguous blocks and can instantly move items between dispensers and other containers.
- When directly connected to a dispenser, the dispenser pulls items out of the container at the end of the conduit (see Storage)
- When connected via wooden plank to a dispenser, the dispenser dispenses items into the conduit (see Filler)
- Only can follow one route
Filler
The filler is created by placing a wooden plank next to a dispenser, optionally connected to a conduit. They override dispenser's normal dispensing as items in the world, and instead dispense items into a conduit.
- Fillers insert items into a conduit, taken from the dispenser
- If the end of the conduit is connected to a container, items will be placed within it
- If not, items will be dropped on the ground at the end of the conduit
- If the container overflows, excess items will be dropped on the ground
Turret
The turret is created by placing a brick block next to a dispenser.
- After each dispense, the orientation will rotate
- Try it with TNT
Permissions
betterdispensers.command (op): Allows you to use the /dispenser command
Configuration
Features can be turned off or tweaked as desired. Default configuration:
verbose: false # log debugging information to the server console
tellPlayer: true # send a player a message about the dispenser orientation when placed
dispenser:
sneakReverseOrientation: true # shift-click when placing dispenser to orient away from you
overrideHorizontal: true # handle horizontal dispensing ourselves, disable to defer to Minecraft)
overrideVertical: true # handle vertical dispensing
velocityHorizontal: 0.1 # small default velocity
velocityDown: -0.05 # velocity when dispensing downward
velocityUp: 0.4 # larger velocity when dispensing upward
dispenseOnPlayerArrows: true # when hit by player arrows, activate dispenser
dispenseOnNonPlayerArrows: true # when hit by skeleton arrows, activate dispenser
arrowEnable: true # shoot arrows
arrowForce: 1.1 # force of shot arrows
arrowSpread: 6.0 # random variation; set to 0 for precision
eggEnable: true # throw eggs
eggForce: 1.1
eggSpread: 6.0
snowballForce: 1.1 # throw snowballs
snowballSpread: 6.0
snowballEnable: true
potionEnable: true # throw splash potions
potionForce: 1.375 # more forceful in vanilla for some reason
potionSpread: 6.0
expbottleEnable: true # throw experience bottles
expbottleForce: 1.1
expbottleSpread: 6.0
spawnEggEnable: true # hatch spawn eggs
fireballEnable: true # ignite fire charges
fireballRandomMotionX: 0.05
fireballRandomMotionY: 0.05
fireballRandomMotionZ: 0.05
tntEnable: true # prime TNT
tntVelocityFactorY: 3.0 # multiply Y velocity for dispensing primed TNT
tntVelocityFactorHorizontal: 5.0 # multiple X and Z velocity
tntFuzz: 0.1 # random X/Y motion Gaussian maximum, less than item
tntVelocityBaseX: 1.0 # fixed velocity offset
tntVelocityBaseY: 0.0
tntVelocityBaseZ: 1.0
tntRandomMotionX: 0.045 # additional random Gaussian motion
tntRandomMotionY: 0.045
tntRandomMotionZ: 0.045
tntFuseTicks: 15 # time in ticks before exploding
liquidsEnable: true # dispense liquid _blocks_ (or any block)
liquids: # liquids to flow from dispenser (blocks, not buckets)
- 8 # water source
- 9 # water flow
- 10 # lava source
- 11 # lava flow
- 162 # Buildcraft oil source
- 163 # Buildcraft oil flow
bucketsEnable: true # empty liquids from buckets
bucketsKeep: true # keep the empty bucket, rather than removing it
buckets:
- 326 # water bucket
- 327 # lava bucket
- 4063 # Buildcraft oil bucket
bucketLiquids:
326: 8 # water bucket -> water source
327: 10 # lava bucket -> lava source
4063: 162 # Buildcraft oil bucket -> oil source
boatEnable: true # drop boats
cartEnable: true # drop minecarts
itemEnable: true # all other items dispense as item drops
itemVelocityFactorY: 2.0 # multiply Y velocity for dispensing non-projectile items (Minecraft default)
itemFuzz: 0.3 # random X/Y motion Gaussian maximum
itemRandomMotionX: 0.045 # additional random Gaussian motion
itemRandomMotionY: 0.045
itemRandomMotionZ: 0.045
crafter:
enable: true
blockID: 58 # crafting table
interactor:
enable: true
blockID: 22 # lapis block
reachLimit: 7
breaker:
enable: true
blockID: 42 # iron block
reachLimit: 7
unbreakableBlockIDs:
- 7 # bedrock
- 90 # nether portal
- 119 # end portal
- 120 # end portal frame
vacuum:
enable: true
blockID: 49 # obsidian
enablePlayerArrows: true # accept arrows into dispenser if hit, from player or dispenser
enableNonPlayerArrows: false # accept arrows from skeletons or infinity bows (see also: http://dev.bukkit.org/server-mods/pickuparrows/)
reachLimit: 8.0 # before dispensing, vacuum up entities with this distance
itemDropRange: 2 # vacuum up player item drops within this many blocks
itemDropDelayTicks: 10 # delay before vacuuming player item drops
accelerator:
enable: true
blockID: 41 # gold block
velocityFactorY: 2.0 # multiply Y velocity when accelerated
storage:
# any container block
conduit:
blockID: 20 # glass
enableDirectConnection: true # glass can connect directly to dispensers to pull from storage (vs through fillers)
maxLength: 1000
filler:
enable: true
blockID: 5 # plank
unconnectedDrop: true # if left unconnected, drop items on ground, otherwise discard
overflowDrop: true # if destination overflows, drop items on ground, otherwise discard
turret:
enable: true
blockID: 45 # bricks
See also
- Buildcraft - client/server mod with pipes, automatic crafting, mining
- RedPower - client/server mod with pneumatic tubes, block breaker, deployer, project table
- MineFactory - client/server mod with conveyor belts
- MachinaCraft - server plugin framework, MachinaFactory module includes pipelines, fabricator, item relays
- Plugin Request: Buildcraft for bukkit? - idea of transferring items through glass
- Sure, I'll mod that for you: dispensers can face upward and downward! For shooting arrows, splash potions, snowballs, or even eggs (perfect for traps). Also: dispensers accept arrows and dispense when hit (BetterDispensers v1.0). - initial release
- Request: Dispensers should be able to point straight up and straight down. - initial inspiration
@mushroomhostage <<reply 701428>>
Only one per? tat kinda sucks, hope to get more addable in the future. Also, do arrows shot by other dispensers get sucked int a vacuum?
@cena6665
To create a conduit, place glass blocks continuously and touching both the dispenser and the container (chest or otherwise) you want to pull from. Currently only one container is supported per conduit.
How do i make a conduit? like, how do i set it up so the dispenser takes items out of a chest or a bunch of chests through a conduit to shoot?
@BEQOsNtDi6xRDGzqIAT7
Added config documentation.
Unfortunately, since BukkitDev removed the markup type I was using, since I edited it the formatting is now all messed up, sorry about that.
I can't help but notice that the section describing the config file is empty. Is that intended? Because i'd really like to know what some of these options do. ;)
THANKS FOR THE F*CKING UPDATE!
This is really awesome! Keep it up
Unfortunately, it isn't compatible with 1.2, but I'd love to see it since now you can also place stairs upside down! It would fit right in.
Please PM me when a 1.2.3 compatible version is out!
I saw your plugin om Woopagaming :) It would be cool if you could use spout to make the dispensers actually face down or up, so the output hole is on top or on the bottom of the dispenser.