okay after looking at it, here is my advice
-> use Maven (scrap ./dependencies/)
-> don’t upload binary files to git (./dependencies/ , ./bin/)
-> split up your project into different modules, examples should not be in the main source code
-> know when to handle exceptions and when to throw them up in order to let the user handle them
-> the whole “module” thing, essentially just Java plugins, with the way it’s currently designed doesn’t really seem all that useful. take for example, the Event API within Bukkit
public final class MyPlayerListener implements Listener {
@EventHandler
public void onLogin(PlayerLoginEvent event) {
// Your code here...
}
}
it follows a somewhat similar design to your module system but the key difference is you can forward various events to these plugins. so you can have something like
[code=java]public final class FiremakingPlugin implements Module {
public void onEvent(ItemOnItemEvent evt) {
// handle using tinderbox on inventory logs...
}
public void onEvent(ItemOnFloorItemEvent evt) {
// handle using tinderbox on floor logs
}
public void onEvent(ClickFloorItemEvent evt) {
// handle right click "light" logs option
}
...
}[/code]
and it becomes really nice because all of the code for firemaking is in one place, all of the code for fishing is in one place, etc. etc. event-driven content is the best content
i also don’t really think module is a good name for plugins, the two words aren’t interchangeable. when someone says “module” you usually think of something much larger than a small plugin
-> you dumped the whole snakeyaml library into this instead of just adding three lines to a Maven pom.xml file? even if you don’t want to use Maven, why didn’t you just download the snakeyaml JAR?
-> this is unnecessary, just use a logging framework like log4j2
-> this is unnecessary as implementations vary greatly across different servers
-> this multithreaded action system design really isn’t ideal imo, even with fibers. dunno why anyone would want to write some super complex system when you can write a synchronous action system that runs on the game thread and uses virtually no resources. there was a small dicsussion about it on rs if you’re interested http://www.rune-server.org/runescape-development/rs2-server/projects/619478-build-103-a-2.html#post5067641
-> https://github.com/tehnewb/RSPS-Library/tree/master/src/com/core/tickable not thread safe, whoever wrote that isn’t properly synchronizing over the collection. just use ConcurrentLinkedQueue