Inactive [MECH] DropChest v0.8.3 - Chests that absorb dropped items [1.1-R3]

Discussion in 'Inactive/Unsupported Plugins' started by narrowtux, Feb 9, 2011.

  1. Offline

    narrowtux

    DropChest - Chests that absorb dropped items
    Version 0.8.2
    [​IMG]
    Important! When migrating from 0.6 to any above version, you have to move the DropChest.txt from server/plugins/DropChest.txt to server/plugins/DropChest/DropChest.txt
    This is because I have to follow the Bukkit plugin saves guidelines.

    This plugin automatically adds dropped items to near chests. That is very useful for automatic farming and monster traps that gather loot.
    Features
    • automatically suck dropped items that are near a chest to that chest
    • customizable warning if the chest is nearly full
    • list your DropChests and watch how much percent is still free
    • Permissions
    • Filter
    • Storage Minecart support
    • Dispenser and Furnace support
    • Item information
    • Chest protection
    • Automatic Owner tracking
    • Double-Chest support
    Download

    DropChest.jar
    GitHub Project (Source Download)
    Download development version

    Donate, if you want to support me ;)

    Video



    Usage
    Commands
    Show commands (open)

    To add a chest to the "watchlist", type
    Code:
    /dropchest add [radius]
    After that, rightclick the chest that you want to add. Radius is the radius in which the Chest should suck items. Default value is 2.

    To remove a chest from the "watchlist", just type
    Code:
    /dropchest remove chestid
    where chestid is the number of the chest that you get when you call /dropchest list

    You can list the chests that are on the watchlist via
    Code:
    /dropchest list
    You can adjust the radius of a chest via
    Code:
    /dropchest setradius chestid radius
    You can check which id and radius the Chest in front of you has:
    Code:
    /dropchest which
    after that, rightclick on the Chest to get information about it.
    If you are sitting in front of the console, or don't want to rightclick, you can use
    Code:
    /dropchest info chest
    It will generate the same output as /dc which.

    You can teleport to a chest via
    Code:
    /dropchest tp chestid
    where chestid is the ID of the dropchest

    You can set the name of a DropChest via
    Code:
    /dropchest setname {chestid} {newname}
    The name is displayed in chest is full warnings, and in the DropChest list!

    If you migrate from 0.6 to 0.7, you can set the owner of a dropchest by typing:
    Code:
    /dropchest setowner {chest} {newowner}
    You can protect a chest by typing
    Code:
    /dropchest protect {chest} {on|off}
    You can always use /dc instead of /dropchest if you are lazy.

    Another very helpful command is /dcitem:
    Code:
    /dcitem [NAME|id]
    
    This can be used to obtain the name of an item by it's id or get an id of the item-name.
    This doesn't work with all names, though.

    Use the new command /chestinfo {name|id} to get info about what's inside the chest.
    Omit the argument and rightclick on any chest to get info about that.
    Example:
    Code:
    >/dcitem 4
    4 is COBBLESTONE
    >/dcitem cobblestone
    COBBLESTONE is 4
    

    Show Configuration (open)

    You can configure DropChest by pasting the contents of the following block to plugins/DropChest/dropchest.cfg
    Code:
    #Should the dropchest drop items when it gets a redstone signal?
    droponredstone=true
    #How long should the dropchest not suck items after it has dropped them
    waitafterdrop=10
    #Should users be able to protect chests like in LWC?
    usercanprotectchest=true
    #Which is the default radius if you omit the radius argument in /dropchest add?
    defaultradius=2
    #Which should be the maximum radius for players that have not dropchest.setBig and aren't ops?
    fallbackradius=15
    #At which fill-status should the chest warn you?
    warnfillstatus=90
    #Which message should appear as warning?
    #You can use this variables (example):
    # $owner : the owner of the chest (narrowtux)
    # $name  : the name of the chest (my superduper mobtower chest/#42)
    # $fill  : The fill status, in percent (81)
    warnmessage=$owner, your chest $name is nearly full($fill%).
    

    Filter / Storage Minecarts
    Show Filter/Storage Minecarts (open)

    Filters have changed in version 0.6. There are now 3 seperate filters that are for sucking items, pulling items from passing minecarts and pushing them to passing minecarts.
    You can now set the filters by either using commands or using the interactive mode. Let me show you the interactive mode first:
    to begin, type
    Code:
    /dropchest filter {suck|push|pull}
    Note: choose one of suck, push or pull, please (for example /dropchest filter suck)
    Then you will enter the interactive mode. In this mode you can edit the selected filter by hitting the chest with the desired item in your hand.
    To edit another filter, type the above command again.
    To finish your filter, type
    Code:
    /dropchest filter finish
    Commands mode:
    Code:
    /dropchest filter {suck|push|pull} {chestid} {itemid|itemtype|clear}
    Call the filter-command like above, as second argument, use the chest-ID, and as third argument, either type the item-ID, the name of the item (as they appear here: org.bukkit.Material) or type clear to clear this filter.
    Please note! The suck filter acts different from the Pull/Push-Filter when it's empty. When the suck-filter is empty, the chest will suck every item. When a Pull/Push filter is empty, it won't take or give any items to a passing minecart.

    Show Permissions nodes (open)

    You can use these nodes:
    • dropchest - To get the right to use DropChest
    • dropchest.create - To call /dropchest add
    • dropchest.remove - To call /dropchest remove chestid
    • dropchest.radius.set - To set the radius of a Chest to something else than 2
    • dropchest.radius.setBig - To have unlimited radius
    • dropchest.which - To have access to the /dropchest which command
    • dropchest.teleport - To be able to teleport via /dropchest tp chestid
    • dropchest.filter - To set or reset filters
    • dropchest.filter.set - To set filters in interactive mode
    • dropchest.filter.reset - To reset filters in interactive mode (click with nothing in hand)
    • dropchest.list - To have access to /dc list and /dc info
    • dropchest.destroy - To be able to break a dropchest without removing it before.
    • dropchest.protect - To be able to protect a chest
    • dropchest.moderator - To be able to modify a dropchests properties even if you're not the owner. Also, ops and the console can do that.
    You can use these variables:

    • dropchestmaxradius - To adjust the maximum radius for a group or a user
    How to use variables:

    Code:
    users:
      narrowtux:
        info:
          dropchestmaxradius: 1000
    
    This is just an example and this also works with groups!

    Changelog
    Version 0.8.2
    • Fixed the loading issue.
    Version 0.8.1
    • Supports SuperPermissions (when no Permissions plugin was found)
    • Fixed show stopping bugs.
    • Use YAML as persistence storage. You can find the new file at plugins/DropChest/dropchests.yml
    Show Changelog (open)

    Version 0.8
    • Performance improvements
    • Fixed a bug that caused dropchest to eat stacks in storage minecarts (thanks @Tenebria )
    • Implemented per-chest delay (thanks @Gibbers )
    • Made /dc list per player. Use /dc list {pagenum} all to see all showcases (works without all in the console)
    Version 0.7.9
    • Fixed bug where items were lost when a chest/minecart was full on pushing/pulling
    • Little code cleanup
    Version 0.7.8
    • Fixed a bug where, for example, if you had several ItemStacks of 1 block each, only 1 ItemStack would be pulled to the chest or pushed to the MineCart, the others would be deleted.
    • Minecarts can now be over/under DropChests to be handled
    Thanks M-Type!
    Version 0.7.7
    • Double Chest support
    Version 0.7.6

    • Fixed some issues when using a Permissions implementation that is not complete (in this case EssentialsGroupManager as reported by @Kartus )
    Version 0.7.5

    • you can add all items to a filter by using the keyword "all" instead of the material-type
    • you can obtain info about a dropchest without having to rightclick (/dc info {chest}). However, the output is the same as when you would have called /dc which
    Version 0.7.4

    • warnfillstatus=-1 now disables the "chest is full"-warning
    Version 0.7.3

    • Fixed a bug that came with a new Bukkit release
    Version 0.7.2

    • /dc which now says something again, thanks to @Liger_XT5.
    Version 0.7.1

    • Removed debug messages :D
    Version 0.7

    • Configuration added
    • DropChests can drop their contents when a redstone input is present
    • Now, only the owner of a dropchest can adjust it's properties
    • The owner of a dropchest can protect the chest. So other players can't open it.
    • Customizable warning message and fill threshold.
    • Warnings will now be displayed to the owner of a chest, if he is online.
    • And made compatible to Minecraft 1.5_01. Older versions of craftbukkit won't work!
    Version 0.6.9

    • /dc which even more fancy
    • Removed debug message reported by @Reterg
    • Implemented the /item command which tells you what item this id is or vice-versa.
    Version 0.6.8

    • /dc which now looks fancy and shows the filtered items, too.
    Version 0.6.7

    • Added dropchest-id to the /dc which output.
    Version 0.6.6

    • Fixed NullPointerException on startup
    Version 0.6.5

    • Fixed /dc which
    • Refactored some code
    • You can now also use names of dropchests in the commands.
    Version 0.6.4

    • Fixed chunk unload that results in crash
    Version 0.6.3

    • Updated to bukkit-version 602
    • Tried to fix Thread-Exceptions. Breaking DropChests still not fixed, maybe happens later this day ;)
    Version 0.6.2

    • Permissions not required anymore.
    • Thread-Safe. No more ConcurrentModificationCheck Exceptions!
    Version 0.6.1

    • Fixed loading issues. You have to move your old DropChest.txt to the folder DropChest/ in your plugin directory!
    Version 0.6

    • Seperate filters for sucking, pushing to minecarts, pulling from minecarts
    • Multiple users can add dropchests at the same time now!
    • Added a name to the DropChests
    • Fixed Minecraft 1.3-Bug (method net.minecraft.server.Entity.q() was not available any more)
    I'm working on extended furnace handling, that fuels automatically go to the fuel slot and so on. This is still buggy so I didn't released it, it comes in the next version.


    Version 0.5.1
    • Multiworld works now
    • Paginated /dc list
    • Persistent DropChest IDs
    Version 0.5

    • Added support for Storage Minecarts
    • Added support for Dispensers and Furnaces
    Version 0.4.2

    • Fixed bug that Tearlow described.
    Version 0.4.1

    • Fixed loading bug when migration from versions 0.3 or below
    Version 0.4

    • Added filters.
    Version 0.3.1

    • Multiple world support
    • Since the Craftbukkit version from feb, 13 at 12:00 CET, Chests that are destroyed by Players are rebuilt
    • Worked around NullPointerException when Permissions is not loaded properly
    • Files now hosted on github ;) that non-members also can download DropChest
    Version 0.3

    • Permissions support.
    • Configure the maximum radius for each single user or group (via Permissions)
    • Fixes bug with unhandled Exception in the EntityWatcher-Timer.
    • /dropchest can be called via /dc for short
    • /dropchest without arguments just lists the commands that the user can execute, as well as his maximum radius.
    • Oh, and I corrected the Pythagoras formula for radius calculation. Shame on me...
    Version 0.2.3


    This is quite a huge bugfix update. Permissions come next ;)
    • Broken DropChests are now automatically removed from the list
    • changed package name from com.bukkit.narrowtux.DropChest to com.narrowtux.DropChest to prevent not loading issues coming up next monday
    • Added command "which", that allows you to see which id a chest has and if it is already a dropchest.
    • Linked against the most recent versions of Bukkit and Craftbukkit. The Bukkit guys have fixed a lot of bugs that affected this plugin. In my tests, there were no more nullPointerExceptions or similar errors. Also, DropChest now also works on very fresh placed Chests
    • And a currently constant maximum radius of 20 blocks
    Version 0.2.2

    • DropChest are now removed when you call /dropchest remove chestid
    • DropChest now have a minimum radius of 2
    • Fixed some saving issues
    Version 0.2.1

    • Fixed a problem where the radius has not been saved
    Version 0.2

    • Added a radius
    Version 0.1

    • First Release of DropChest
     
  2. Offline

    pmx

    great idea! Could use this for loads of stuff!
     
  3. Offline

    Tahg

    Can you add an optional parameter for the radius a chest grabs from, and note the default in your OP?
     
  4. Offline

    narrowtux

    I'll do this next :)
    --- merged: Feb 9, 2011 5:07 PM ---
    I did it :D
    you can adjust the radius via
    Code:
    /dropchest setradius chestid radius
    If you create a new Chest you can also set the radius via
    Code:
    /dropchest add radius
     
  5. Offline

    Hellothere1990

    great plugin! so handy! only slight thing to report! if you destroy the chest you set as a dropchest, and then throw item on floor (within its radious when it existed) the items still dissapear but theres no way to recover them! replacing chest makes no difference, items still dissapear without them going into chest! only way to stop it is to delete the chests' coords in the txt file!

    could add something tht auto deletes/ removes the chestdrop when its destroyed!

    thanks for great plugin

    regards
     
  6. Offline

    Vilkacis

    Just started experimenting with this. Fantastic idea. Great for certain farm situations that use a water sluice, or monster traps and such. Behaving a little off in my tests though.

    If I do "/dropchest add" without a radius setting, it defaults to zero. Also, "/dropchest remove" does not seem to work when I right-click on the chest afterwords. Still shows up in the "/dropchest list". Not sure if they still absorb nearby items; I'm still experimenting.

    Also, you might consider making it work similarly for Dispensers? I'm not sure how you would use this. I suppose you could theoretically build some kind of incubator that duplicated chickens and absorbed the eggs to shoot them back out, or something. I'm sure the community would figure out a use for it.
     
  7. Offline

    narrowtux

    I'm on the way to fix the issues mentioned above.
    I already fixed remove which is now done vie the chestid (you call /dropchest remove 1, for example). the variant before didn't even remove a DropChest at all.
    the bug with radius 0 as default is also fixed.

    If you really want to have much items, set the radius to 1000 :D
    --- merged: Feb 9, 2011 11:14 PM ---
    You can also try a secret command, but you could die (really) when using it.
    You can teleport yourself to a DropChest, for example to maintain full chests by typing
    Code:
    /dropchest tp chestid
    Use at your own risk!
     
  8. Offline

    Kartus

    can you please make it compatible to plugin "permissions" and implement rightmanagement, that /tp chestid only certain usergroups can use. it would be also nice if the configfile would set a maximum radius.
     
  9. Offline

    Vilkacis

    Hmm. I may have found a bug. I'm out setting up new chests near existing monster spawners. If I activate a new chest, I get an error with "Timer-0" in the server status window, and it does not take in items.

    However, after creating that chest and starting it absorbing items, if I restart the server, that chest will begin working again.

    Am I doing something wrong in activating them? I put the chest down, do "/dropchest add 5", then right-click on the new chest. And then it won't take in items until I restart the server. Bug?
     
  10. Offline

    Tahg

    How do you find out the id of a chest you just created? Or for that matter, one you've created some time ago?
     
  11. Offline

    freman

    oh thank you!
     
  12. Offline

    Tearlow

    Love it! I would like to suggest something. It's as simple as an Item Filter, Say chest 1 should use filter one which only picks Porkchops for example. and chest 2 will pick everything but porkchops. Along that, Is it possible to "Catch" Fired arrows that has landed on ground? By the player obviously.

    Thanks again for a wicked plugin mate :)
     
  13. Offline

    narrowtux

    If you type /dropchest list, you get som ouput like this
    DropChests
    --------
    xx Dropchests total
    #1:1/12 stacks full
    #2:7/243 stacks full

    the number in bold is the chestid
    --- merged: Feb 10, 2011 7:01 AM ---
    I think this has to do with this Bukkit bug. It won't be possible to fix that myself.
     
  14. Offline

    zankioh

    Does this have a maximum you could set the radius to?
    I don't want to imagine people abusing 3000 blockmeters range autolooting chests.. maybe a configurable one?
    Mainly interested in this to maybe use it to collect loot at mob spawners.
     
  15. Offline

    narrowtux

    I'll definitely do a Max Range.
    --- merged: Feb 10, 2011 7:05 AM ---
    This command only works for OPs currently
     
  16. Offline

    Cosmic Break

    max range and permissions support please!
     
  17. Offline

    Tearlow

    Seems like it breaks, even with a small range of 5.

    Exception in thread "Timer-0" java.util.ConcurrentModificationException
    at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
    at java.util.AbstractList$Itr.next(Unknown Source)
    at org.bukkit.craftbukkit.CraftWorld.getEntities(CraftWorld.java:378)
    at com.bukkit.narrowtux.DropChest.EntityWatcher.run(EntityWatcher.java:32)
    at java.util.TimerThread.mainLoop(Unknown Source)
    at java.util.TimerThread.run(Unknown Source)
     
  18. Thanks, we've been wanting something like this for some time; I'll start using it as soon as there's a max range option ;)
     
  19. Nice plugin, just what I search for! [​IMG]
     
  20. Offline

    Hellothere1990

    can you fix so it works for double chests please? as treid every possible order in placing and commands and it never recognizes a double chest as 1 id! or even placing 2 together and having 2 ids still means when 1 is full the items dont get picked up!

    anyway round this?
     
  21. Offline

    narrowtux

    You can set both cests as DropChest and make the other have a bigger radius. If the first is full, the other will be filled up after that. It's very difficult to determine if the chest is a double chest or not. Because of that may try it later but no guarantee.
     
  22. Offline

    Hellothere1990

    tht doesnt work! as a test i put first chest down, set it as a dropchest with radious 4500, then placed other chest next to it (making it double) then adding that as a dropchest with range 5000! the second chest does not fill when other empty! both chest said activated properly!
     
  23. Offline

    narrowtux

    The other chest will fill when the other is full. Try it!
     
  24. Offline

    Vilkacis

    I am not so sure. That bug appears to be related to double chests; I was only using single chests.

    This appears to be the same error I was getting. Can't say for certain as I do not have it in front of me, but it was this sort of error.

    Tearlow, set it up like this and when you get this error, stop and start the server. Then see if that same chest starts working. If so, you're getting what I'm getting.
     
  25. Offline

    Tearlow

    I'm not totally sure what causes it, but since the timer stops it no longer picks anything up- And indeed, It does work once the server restarts that I did notice. But needing to restart every 5-6minute is not the best of solutions :) That's sadly usually how long It lasts *Sigh*
     
  26. Offline

    Hellothere1990

    it doesnt work, tell me your exact setup and order you do it in please then
     
  27. Offline

    fisherp

    I know that you are trying to sort out the bugs and all... and btw good idea... but could you please make an option that it would suck up only certain items... I have a mob tower and it would be pretty neat if I could have all the arrows in one chest, feathers in another (or not at all), bones in another, etc.

    And a max range would be a really good idea, maybe let the operator set it as an option with the default say 20... just so that people don't try and suck up all the drops from everywhere.
     
  28. Offline

    narrowtux

    I have a mob tower too and wrote this plugin for this scenario. Tomorrow (Here at CET) I have time to improve the plugin. Maybe I also implement item filter.
     
  29. Offline

    ambientmf

    What is the scale of the "radius" setting?
    I've had a few users complain about getting killed at the spawn point so I'm going to improve the spawn itself. I would also like to implement this plugin. I just wanted to know what the scale of the radius is. Is it chunks? Blocks? Thanks for your reply.
     
  30. Offline

    narrowtux

    It's in blocks. I calculate the distance between the item and the chest as this:
    d = sqrt( sqrt(dx^2+dy^2)^2+dz^2)
    where dx, dy and dz are the x1-x2, y1-y2, z1-z2. This is an extended form of the Pythagoras formula.
    The radius of block just decides wether a chest should suck an item or not. if the distance not exceeds the radius the chest sucks it.
    --- merged: Feb 10, 2011 11:58 PM ---
    NOTE: a smaller radius won't improve the cpu usage because still all items are checked if theire near a chest.
     

Share This Page