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
You should update this to 1.10
Nuuuuuuuuu update!!!!!!!!!!!!!
@mushroomhostage
plz,update it to 1.4.5!!!=.= This is really a helpful plugins even better than buildcraft and redpower!
I'm looking for someone to continue this plugin, keep it updated, etc.
If anyone is interested in developing this plugin further, or if you're a user interested in seeing it updated, please see this thread here: http://forums.bukkit.org/threads/takeover-silkspawners-enchantmore-chestpack-pickuparrows-radiobeacon-quickbench-potionsplus-more.91593/
with dat plugin dispensers can do many thing dat mods often do....cool
i cant dispense anything with this plugin on. i really like it and wish to use the fixed one on 1.3.1 thanks :)
I really like this plugin do you think you could make it compatible with 1.3.1 PLZ!
Hey, this plugin does exactly what i need (vertical water dispense)
But is there a way so it has infinite water?
Would be awesome :)
I tried putting chest cart in but it doesn't work please fix this I really like this plugin. :)
There is a dupe bug. When you fill a dispenser (doesn't matter what it is as long as all slots are filled) players can drop a block or several and it will dupe it
@mushroomhostage
Ice beside a dispenser makes it's projectiles slow who they hit? just an idea or something to give mobs that are shot from a dispenser a power up(like a potion power?) Oh, and fix it so dispensers that have water or lava in them only trigger once, not when they are turned on and when they are turned off...(just when they have lava or water in them)..just ideas
It would be cool if it would use the Interactor with shears to shear sheep or milk cows if a bucket
@mushroomhostage
lol awesome, looking forward to to new 2.1 and will add it as soon as i can. http://i77.photobucket.com/albums/j49/cena6665/other/2012-05-20_012358.png the 3 with sighs in-front of sings is the ones that are broken apparenlty
@cena6665
Added support for multiple containers connected to conduits in 2.1, check it out :). It follows the conduit up to the maximum length as usual, but will now skip empty containers, so you can augment the dispenser storage even further.
For the interactor/breaker/storage via conduit problem can you post a screenshot of how you have it setup?
@mushroomhostage
lol thanks but no i mean my Interactor, Breaker and Storage through Conduit don't want to work, all i have is the lapis lazuli block next to a dispenser for the Interactor but it does not seem to so anything when i flick the switch, I have a iron block next to a dispenser for the breaker but when i flick switch to power, noting is broken. Lastly have a chest with glass blocks linking it to a dispenser, but once again, turn on power an noting happens, it does not take the arrows fro the chest. and reasons why this may not work? The Boolean btw is the best idea have not knowing much abut java, but having it check all chests placed along the Conduit (maybe a max of five?) to see what empty or not seems like a working idea in theory.
@cena6665
Cool, look forward to the spotlight. Unfortunately, as you're seeing the conduit system is very primitive at the moment, currently it can only take items, not use items, so it won't work with interactors or breakers (I guess the tool would have to logically "reach through" the conduit?).
Maybe it could change in the future, but isn't possible right now due to how it's designed. The idea of having the conduit check for another container if the first one is encounters is empty sounds feasible though.
@blair2000bukkit I've heard of this problem before but have yet to see it myself or isolate it. Could you set "verbose: true" in config.yml and post the console log to http://dev.bukkit.org/server-mods/betterdispensers/tickets/3-interactor-and-breaker-issue/ along with screenshots and any additional helpful information?
my Interactor, Breaker and Storage through Conduit don't want to work... reasons?
Btw, it would help to know soon, We are wanting o do a Mod Spotlight on the Plug-in.
Thanx
Hey, my breakers dont want to work Any reason why?
@mushroomhostage
Hmmmm, maybe run a Boolean? Make the dispenser check form multiple chests, If arrows are found, Boolean is true and pull arrows for the dispensers. Once the found chest is empty, Boolean returns false and runs check for another chest with projectiles inside it. I know a little code, but not how to code for bukkit as much as i want to learn XD
@cena6665
Yes, vacuum dispensers can suck up arrows shot by another dispensers. Any suggestions on how to support multiple container sources. Would be a cool feature to add but I'm not sure how exactly it would be best implemented.