API Steel - An Extensive Minigame Engine

Discussion in 'Resources' started by caseif, Oct 11, 2015.

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

    caseif

    After more than half a year in development, I'd like to finally present version 1.0.0 "Alduin" of Steel, a minigame engine designed to handle common tasks and functionalities of minigame plugins like Spleef, CtF, Survival Games, or anything you can imagine.

    It works by handling certain systems found in every (or almost every) minigame ever created such as arena, round, and player management, thereby saving you time by allowing you to use common code for all minigames.

    Furthermore, Steel includes some other useful features such as a fully-featured rollback engine and a lobby system. The rollback engine will automatically roll back any block changes in an arena once it ends, and the lobby system provides an interactive way for players to interface with rounds.

    You can find a tutorial for getting started with the API (Flint) along with a few other useful links below.

    Flint (API):
    Source Code
    Tutorial

    Documentation
    Maven repo (artifact: net.caseif.flint:flint:1.0)
    Original FBO thread

    Steel:

    BukkitDev Project
    Source code
    Release 1.0.0 "Alduin"
     
    ChipDev likes this.
  2. Offline

    ChipDev

    Half a year! Good job!
     
    caseif likes this.
  3. Offline

    CraftBang

    Wow, thanks for the release!
    I'm lovin it, projects are coded 10x times faster now haha

    Just one request if possible.. :)
    When you create a Minigame you put the max amount of players per game, but I would like to configure this for each Arena object.
     
  4. Offline

    caseif

    @CraftBang Thanks for the support! Regarding your request, it's already possible to configure max players on a per-round basis via Round#setConfigValue. However, I may consider allowing config values to be set for arenas as well in a future update.
     
    CraftBang likes this.
  5. Offline

    CraftBang

    Ahh thanks, didn't know that. Thanks for the fast response!
    This plugin really made my day/week/month haha!
     
  6. Offline

    caseif

    No problem, and glad to hear it!
     
    CraftBang likes this.
  7. Offline

    CraftBang

    @caseif Is it possible manipulate the signs? Like what's going to be on the signs?
     
    Last edited: Oct 17, 2015
  8. Offline

    caseif

    No, at the moment the engine uses a preset format. However, if you're able to suggest other metrics to display, I may consider adding an API for changing what the sign displays on each line in a future update.
     
  9. Offline

    CraftBang

    I would like to display the map name of the Arena. (Which I put in the MetaData of the round)
     
  10. Offline

    caseif

    Just to clarify, the name of the world it's in?
     
  11. Offline

    CraftBang

    No I have an ENUM for different maps. I have a map called CITY and CHAOS.
    I use one Arena, but randomize the maps (that's why I asked about the max players :) )

    Btw, about the rollback system:
    I'm using Block#setType in my plugin but it seems like that aint being rollbacked. I'll try calling the blockbreakevent maybe that will work.
     
  12. Offline

    caseif

    I'm not sure exactly what your setup is, but typically you should have an arena configured for each map. Regardless, I'll still consider expanding the lobby sign API, since I can definitely see how it could be useful.

    Regarding Block.setType, that's a shortcoming I realized after I released 1.0 of the API. I don't see a reasonable way I could have it automatically roll back blocks changed in this way, but I'm definitely going to ship a rollback API in 1.1 so you can manually flag it for rollback. If you don't want to wait that long (probably a month or so), there's a hack to do it via reflection in this repo (lines 427-435 as of writing). However, calling a BlockBreakEvent will definitely work as well.
     
    Last edited: Oct 17, 2015
  13. Offline

    CraftBang

    @caseif
    I'm using each arena as a Game.
    So I have 20 arenas, but in each arena I'm randomizing the Maps. (Between CITY and CHAOS and soon more)
     
  14. Offline

    caseif

    Hm, that's a use case I actually hadn't thought of. In that case, I can only offer the lobby sign API in 1.1 and possibly another map API to make situations like this easier in a later update (or maybe 1.1 as well).
     
    CraftBang likes this.
  15. Offline

    caseif

    @CraftBang I think I've come up with a solution to your problem. You can change the display name of the arena via the setName() method, and it will change the name displayed on lobby signs as well while keeping the same ID. It's not exactly elegant, but it should meet your needs for the time being.
     
  16. Offline

    CraftBang

    I think the method Arena#setName() is private, can't reach it :(
     
  17. Offline

    caseif

    Oh, uh... hm. My bad. I don't know why I didn't include that in the 1.0 API.
     
  18. Offline

    caseif

    Last edited: Nov 5, 2015
  19. Offline

    caseif

Thread Status:
Not open for further replies.

Share This Page