Icicle Documentation
View on GitHubOur Discord
Icicle - Core
Icicle - Core
  • Home
  • Get Started
  • Icicle Basics
    • 🧠Overview
    • 🥜Beans & Dependency Injection
    • 🎓Advanced Beans/DI
    • 🔧Configurations
    • 🌐Localization
    • 🗃️Modules (addons)
  • Extending Icicle
    • 🧠Overview
  • Embedding Icicle
Powered by GitBook
On this page
  • Adding modules to your project
  • Modules in the Documentation
  • Choose your modules
Edit on GitHub
Export as PDF
  1. Icicle Basics

Modules (addons)

Module adding & reasons for the usage of them.

PreviousLocalizationNextOverview

Last updated 3 years ago

Icicle's functionalities are separated into their respective modules. We've done this, so you only get what you really need.

These addons can be accessed via a simple dependency notation in the dependency manager of your choice, but we highly recommend using our Gradle Plugin (you've learned about it ).

Adding modules to your project

First party addons

In the case of first party addons, you can add them to your project by extending your dependencies block in your build.gradle.kts, below is an example where we add the nms module.

repositories {
    igloo() // This is required for ALL first party addons,
            // as they are hosted on our m2.
}

dependencies {
    icicle("nms:1.0-SNAPSHOT") // This will add the NMS addon with the
                               // version 1.0-SNAPSHOT.

    // icicle() can also be called without any parameters.
    // In that case, it'll add the icicle-core dependency into your project.
    // Example: icicle()

    // icicle() can be called without a version provided.
    // In this case, it should fetch the latest version and download that.
    // Example: icicle("nms")
}

And... bam! You're done. That's all it takes to add a first party addon.

Third party modules

When you want to add a third party module/addon to your project, all you'll need to do is add the addon like you would any otherdependency, except that instead ofimplementation, you'll be using addon. Below this, you can find an example for such an addon.

dependencies {
    addon("com.example:real-addon:1.0-SNAPSHOT") // This will add the
                                                 // real-addon from the
                                                 // creator example.com with
                                                 // the version 1.0-SNAPSHOT.
}

Create an icicle.yml file in your resources folder if it does not already exist, and open it up.

If there wasn't already a dependencies in that file, then create a new list and add your addon in the following format:

dependencies:
    # If your addon is third party, then proceed as normal.
    - "com.example:real-addon:1.0-SNAPSHOT" # Everything is necessary here.
    
    # If your addon is first party, then the syntax is
    # "net.iceyleagons:icicle-addon-<addon name>:<addon version>
    - "net.iceyleagons:icicle-addon-nms:1.0-SNAPSHOT" # Once again,
                                                      # everything is
                                                      # necessary.

Modules in the Documentation

Modules are their own story, and most of them are so complex, they deserve their own sections in this documentation:

  1. Commands System

Choose your modules

List of First Party Modules
  • Icicle-Commands --> complete easy-to-use command system

  • Icicle-NMS --> interface-based NMS mappings (deobfuscated via DeFrost)

  • Icicle-Serialization --> stupidly fast lightweight serialization library

  • Icicle-Protocol --> our own, easy-to-use protocol library

  • Icicle-Kotlin --> juicy Kotlin utilities

List of Third Party Modules

🗃️
here