⛔ This framework is in heavy development, get ready for loads of bad code and heaps of bugs. ⛔
Until the framework's first release please do not contribute or create issues!
Icicle is loaded to the brim with features off-the-shelf, but for simplicity sake, here are some of the main features:
-
💨 Lightweight, easy-to-use design
Icicle was designed to be as easy to use as possible, meanwhile maintaining the least amount of code needed to be written. Exactly because of this, we have implemented an "annotation-first" style into Icicle to minimize on the number of lines needed to be written by the end-users, the developers. There ARE exceptions to this, especially when annotations don't suit a task, for instance calculations, or accessing somethings properties. In those instances, we use "normal object-style." -
➿ Auto-wiring and beans (or in other words: Spring features in Spigot)
Resolving one of the quirks of object-oriented programming languages, with yet another quirk of its own. Auto-wiring makes sure there is ONLY one instance of a given class, and that every class has access to it. No more bulky constructors and long argument lines. -
📖 Easy configuration management
Write configurations in a single class with a few annotations that have self-describing names. Currently only YAML is supported, but a rewrite of the configuration system is imminent and as such, will include support for most formats that make sense to be included. Few key features that make it worthwhile include, but are not limited to:
💬 Comments!
🛸 Object conversion out-of-the-box! -
🖨 Serialization
Instead of spending development time on saving the structure of an important class, and then loading it back in, you can instead focus on the logic of your project. Built on speed and size, rather than format support, our serialization module is extremely agile. Serialization handles most of the formats needed for a normal Minecraft developer, and probably some more on top of that. It is by no means a perfect module, though it should work in most, if not all cases. -
📋 Extending base classes
Reflections are good'n'all, but then again, wouldn't it be reaaaal good, if you could just edit parts of the source code? Icicle has many ways of doing such things, and as such should be a good starting point for those looking to fiddle with the source. -
♾️ and so on...
Many more are features yet to be explored, yet alone listed, so I'd advise you check out what we have at our repertoire!
Anything missing? Create an issue, or contribute.
Icicle is split into separate modules, which all add additional functionality to the core. These modules don't need to be downloaded: when the core reads the metadata of a project that is built around Icicle it will download and load the necessary Icicle modules for it automagically.
Icicle currently has the following official modules:
✅ | ☢️ | 📝 | 💀 | |
---|---|---|---|---|
RELEASE Ready for use. |
BETA Unstable. |
ALPHA Use with caution! |
PLANNED Stubs, or just plans. |
DROPPED Support is non-existent. |
Status | Name | Description | Recommended Version |
---|---|---|---|
✅ | icicle-core | This is the base of the operations, the almighty overlord of the whole project. | 1.0.0-beta |
✅ | icicle-serialization | This module contains everything you need for serializing objects. | 1.0.0-beta |
✅ | icicle-utilities | Utility classes containing useful methods for development. | 1.0.0 |
✅ | icicle-commands | Module containing all the stuff needed to create a good user-experience with just commands. | 1.0.0 |
icicle-gradle | Our Gradle plugin to assist in the creation of Icicle-based projects. | 1.0.0 | |
icicle-bukkit | Implementation of Icicle for Bukkit environments. | 1.0.0-beta | |
☢️ | icicle-nms | Wrapping of NMS and CraftBukkit. | 0.0.1-alpha |
☢️ | icicle-gui | Easy creation of complex and simple guis. | 0.1.0-alpha |
☢️ | icicle-protocol | Features for messing with the Minecraft protocol & packets. | 0.0.1-alpha |
📝 | icicle-kotlin | Utilities for Kotlin to speed up your workflow even more! | - |
📝 | icicle-database | This module is used to interact with many database engines with a common interface. | - |
📝 | icicle-intellij | Our IntelliJ Idea plugin to speed up development further, and to bring syntax highlighting. | - |
📝 | icicle-entity-ai | A library to simplify entity movement generation and traversing. | - |
📝 | icicle-ocl | OpenCL API implementation. A solution to problems that can be broken up into multiple smaller problems. | - |
💀 | icicle-addon-server | This module is responsible for serving the modules to the instance of Icicle. | 0.0.1 |
Please read our wiki on GitBook, here.
Everyone is welcome to contribute to Icicle. If you want to do so, please start, by reading our Contribution Guidelines.
Icicle is licensed under the permissive MIT License. You can read ours here.
GitBook happily hooked us up with their powerful documentation tool/service. Check them out here! |
|
This project is developed with the help of JetBrains' products. We have access to such tools with an open source license. Check them out here! |