[WIP] Sensible Toolbox: new items, blocks, energy system, machines & more

Discussion in 'WIP and Development Status' started by desht, Mar 25, 2014.

Thread Status:
Not open for further replies.
  1. Offline


    Update: there's now a project page: http://dev.bukkit.org/bukkit-plugins/sensible-toolbox/

    Been working on this for a while now, and I've got a video together with a demo of what Sensible Toolbox is about. Basically, this plugin will add:
    • New & useful items (more efficient farming, painting, general utilities)
    • Item & block attribute persistence (thanks Comphenix :) )
    • New blocks (redstone clocks, elevators, block update detectors...)
    • Item routing system (without any pipes)
    • Machines (ore processing & doubling)
    • An energy system with cabling, storage and generators
    • An API for other plugins to easily create their own items & blocks
    It's heavily inspired by some of the Forge mods (in particular, Extra Utilities, Open Blocks, Thermal Expansion & IC2), but it's all original code, and all done with just Bukkit. OK, NMS code is used in a couple of places, and ProtocolLib is an optional but strongly recommended dependency, but neither are mandatory - Sensible Toolbox is usable with reduced functionality with nothing but plain Bukkit calls.

    There's no release yet, but I will be uploading the source to github soon (under a GPL licence). There's still a fair bit of work to do before an actual plugin release on dev.bukkit.org.

    Anyway, on to the video. It's around 30 minutes long, but there's quite a lot to demo. Apologies in advance for the low video quality - I'm a plugin dev, not a video maker :)

  2. Offline


    Wow! Looks really cool and very promising!
  3. Offline


    Very nice!
  4. Offline


    This is awesome :D

    If I may, a bit of a suggestion:
    The "north/south/east/west" stuff is a bit too confusing IMO. People have to figure out which way they're facing, etc. I would suggest switching all blocks that can be configured like that to directional blocks (furnace, dispenser, etc) and then having them be configured as "left, right, up, down, back". It would be way easier to understand and use.
    desht likes this.
  5. Offline


    Yeah, that has occurred to me too. The blocks all do have a internal concept of a facing direction, the big problem being that very few vanilla blocks actually have a facing texture (most blocks having the same texture on all six sides). And I'd really rather not use directional blocks for everything if I can avoid it - since there are quite a few machines that I'd still like to add, I don't want them all using furnace/dispenser/dropper textures. It is something I need to think about, for sure...
  6. Offline


    Good point, everything being the same block would get pretty confusing pretty fast. Perhaps instead of the sign being a label you add, it could be automatically placed as part of a multi-block structure to indicate the front of the machine?
  7. Offline


    I've considered that too, but I don't want to require the presence of the sign - it prevents any block (including little ones like torches & carpets) being placed in front of the machine.
  8. Offline



    Perhaps something with entities or particles? Could lead to lag or hitting the particle cap, though...
  9. Offline


    Yeah, I'd rather avoid extra entities or particles, exactly for lag reasons.

    I suspect absolute directions may end up being the way to go. Not sure it's too much of a hardship; to configure an item router module for a particular direction, you just face that direction and click a block face facing you - no need to even know the direction in that case. The energy in/out configuration of the battery box does require knowledge of the compass points, but it's easy enough to hit F3 :)
    Garris0n likes this.
  10. Offline

    Codex Arcanum

    If you want to simplify the direction finding process, you could have left click change the in/out state of the device, and right click create a particle effect on the correct side of the block. That way, you could stand a bit away from the block, open up the GUI, and then use right click on the directional indicators to figure out which way is which without resorting to F3.

    Edit: Oh, and I should mention that I think this project is great. I look forward to its full release so that I can immediately start using it as an API :).
    desht likes this.
  11. Offline


    When you say left & right click here, you mean on the GUI buttons? Only problem there is the GUI window will completely obscure the block when it's open, regardless of how near or far you are. I guess the right-click-particle effect could persist for a few seconds after closing the GUI, but I'm not convinced that will be more usable than using F3...

    Another option I've considered is some kind of wrench item, where you can click on the side of the block to cycle it through none/in/out, but that a) requires you to carry another item around, and b) makes it trickier to get to a concealed side of a block (in particular getting underneath the block is likely to mean digging out the floor. Configuring the sides from the GUI still seems simpler...

    I have a fair bit of work to do first, including a ton of docs to write :rolleyes:

    On the plus side, I have just uploaded the source to github - https://github.com/desht/sensibletoolbox - so as long as you have Maven you can start playing with it now, but I must stress this is very much an unstable developer-oriented pre-alpha. Use github issues if you need to report problems, even better if they're accompanied by a PR ;)
    Garris0n likes this.
  12. Offline

    Codex Arcanum

    Yes, I mean the direction buttons. Ah, hadn't thought about the fact that the toolbox GUI is much bigger than a normal chest GUI. You could have the right click close the gui, play the effect, and open it up again half a second later? I dunno.
    Yeah, a wrench item seems like a pain to deal with.
  13. Offline


    This is absolutely incredible. I was in awe throughout the entire video. Nice job man, I hope to see what else you come up with. :)
  14. Offline


    Awesome !
  15. Offline


    Garris0n and Stealth2800 like this.
  16. Offline


    First public release! http://dev.bukkit.org/bukkit-plugins/sensible-toolbox/files/

    Note this is very much an alpha, and I'd strongly advise playing with on a test server before putting on a production server. And I'd very much appreciate feedback on:
    • How well it plays with other plugins (protection plugins, for example)
    • Any way you can find to break it (in particular any item duping exploits)
    • And suggestions on improvement, of course :)
    At this point, I'd suggest any conversation about the plugin is moved to the DBO project page. The Tickets tab is active for reporting specific problems or making specific enhancement requests.
    Garris0n likes this.
  17. Offline


    Garris0n likes this.
  18. Offline


    This is really cool. :)

    However, I've seen a large number of recurring tasks own the server tick rate before... is it much of a concern when you've got a large load of players using redstone clocks, machines, the energy system, etc? Have you done any testing with a full server? How does the server load compare to that of compilation mods like Tekkit/FTB?
  19. Offline


    I LOVE IT!
  20. Offline


    No, I haven't had any reports from really big servers yet. But I am fairly mindful of potential performance problems (and always thinking about ways to mitigate them).

    The most likely cause of any performance issues will be item routers, given that they need to frequently scan inventories; however they shouldn't be any worse than vanilla hoppers (and perhaps better, since they tick less often).

    Energy shouldn't be much of an issue - it only ticks twice/second by default, and the calculations are fairly straightforward arithmetic; it's way simpler than IC2's EU system, for example, closer to TE3's RF system.

    So far with just me on a fairly modest dev server and 20-30 ticking blocks, I've not seen any problems, and the server hasn't spent more than a 5% of a tick handling STB block ticking. I would be very interested to hear of reports from larger servers, of course.
    Skye likes this.
  21. Offline


    desht Without any serious impact on server resources, I can see this plugin becoming a staple to a large percentage of servers. ;) After watching the video, my favorites are the simple things like the improvements to farming—especially the watering can—and the angelic block. Kudos for making such a well-designed plugin public. :)
    desht likes this.
  22. Offline


    Just loving it :D.
  23. Offline


    This is totally amazing! I was planning something like this too. If you need help, i can try and it would be great to have an api for that so you can create your own extensions for the plugin! :)

    Edit: Something like this would be great for the bigger recipes later: http://feed-the-beast.wikia.com/wiki/Project_Table
    desht likes this.
  24. Offline


    Yep, allowing other plugins to create their own items is very much part of the plugin: http://dev.bukkit.org/bukkit-plugins/sensible-toolbox/pages/api/overview/ - I'd just say that I don't guarantee it to be stable just yet. A lot of stuff is going on behind the scenes.

    As for the Project Table, the Advanced Recipe Book is already in the v0.0.3 release and can do similar stuff, albeit in quite a different way. If you click on it a crafting table to open the recipe list, it will also try to pull ingredients from any inventory adjacent to the crafting table (assuming you have access top those inventories). So you can load a chest up with ingredients for your more complex recipes and not have to worry about carrying them around.

    I also intend to add an auto-crafting table with its own mini-inventory, which will auto-craft items based on the selected recipe. It will likely require SCU to work, though...
  25. Offline


    The advantage of the project table is that you can work with 2 or more people on really big crafting recipes! It's diffrent from the Advanced Recipe Book ^^
    desht likes this.
  26. Offline


    Tried a couple things with it, will definitely use it.

    However - I didn't look so deep in your code - I'm asking, what happens if I have a huge amount of custom blocks per chunk/world.
    I'm talking here about 99-100% of non-air blocks in a world are custom ones (derived from BaseSTBBlock).
    They won't do anything, they just exist to drop custom items.

    Is this possible (and a good idea?) or will this use too much memory?
  27. Offline


    It's possible, but it would certainly use a lot of memory, since each custom block will be a reference to a BaseSTBBlock object. And those references currently don't go away for unloaded chunks (although ticking blocks shouldn't tick if the chunk is unloaded). Chunk/memory management is something I'll be addressing at some point.

    It's probably not the best way of achieving what you're trying to do...
  28. Offline


    Is there a way to add a recipe to the masher?
    And to make an ItemStack unstackable? (if I remember right, items become unstackable if they have differnt nbt tags, so setting a random nbt value would be a solution.)
  29. Offline


    Adding recipes - only via API right now. Configurable custom recipes for machines can go on the TODO list, but I have a bit more recipe work to do first (in particular: custom recipes which can take more than one ingredient and produce more than one resulting item).

    What item do you want to be unstackable?
Thread Status:
Not open for further replies.

Share This Page