Skip to content

Harshvardhantomar/Chameleon

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

362 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cross-platform Minecraft plugin framework

Checks Stable version Latest version
License Code quality Code size Code lines

What is Chameleon?

Chameleon is a framework created to allow developers to easily create Minecraft plugins that work across multiple platforms.

Supported Platforms

Chameleon plans to support every platform in this list. If you have ideas for other platforms that we could support, please suggest them in our official Discord server.

  • Bukkit
  • BungeeCord
  • Minestom
  • Nukkit
  • Velocity
  • Fabric
  • Sponge

Getting started

Proper documentation is coming soon.
You can find an Example Chameleon project here.
If you have any questions, feel free to ask in our official Discord server.

Project structure

  • chameleon-core - Chameleon's core, most things happen here.
  • chameleon-annotations - Chameleon annotation-based platform class generator.
  • chameleon-feature-configuration - An easy-to-use configuration library, can be used without Chameleon.
  • chameleon-platform-<name> - Chameleon implementation for the named platform, supported:
    • bukkit
    • bungeecord
    • minestom
    • nukkit
    • velocity

Annotation-based platform class generator

chameleon-annotations can be used to automatically generate the main classes that each platform requires in-order to load the plugin then start Chameleon.
To use this, all you have to do is add the chameleon-annotations module as a compileOnly dependency and annotationProcessor (gradle) or provided dependency (maven) and add the @Plugin annotation to your ChameleonPlugin class.

@Plugin(
    id = "myplugin",
    name = "MyPlugin"
)

Dependencies

You can find the latest versions at the top of this file.

Gradle (Kotlin)

repositories {
    // Replace 'snapshots' with 'releases' to use a non-snapshot version.
    maven("https://repo.hypera.dev/snapshots/")
}

dependencies {
    val chameleonVersion = "<version>"
    implementation("dev.hypera:chameleon-core:$chameleonVersion")
    // Repeat the line below and replace <module> with the module you wish to use.
    implementation("dev.hypera:chameleon-<module>:$chameleonVersion")
   
   // If you wish to use the automatic platform main class generation:
   compileOnly("dev.hypera:chameleon-annotations:$chameleonVersion")
   annotationProcessor("dev.hypera:chameleon-annotations:$chameleonVersion")
}

Gradle (Groovy)

repositories {
    // Replace 'snapshots' with 'releases' to use a non-snapshot version.
    maven { url 'https://repo.hypera.dev/snapshots/' }
}

dependencies {
    def chameleonVersion = '<version>'
    implementation 'dev.hypera:chameleon-core:${chameleonVersion}'
    // Repeat the line below and replace <module> with the module you wish to use.
    implementation 'dev.hypera:chameleon-<module>:${chameleonVersion}'

   // If you wish to use the automatic platform main class generation:
   compileOnly 'dev.hypera:chameleon-annotations:${chameleonVersion}'
   annotationProcessor 'dev.hypera:chameleon-annotations:${chameleonVersion}'
}

Maven

<properties>
   <chameleon.version>VERSION</chameleon.version>
</properties>

<repositories>
    <!-- Replace 'snapshots' with 'releases' to use a non-snapshot version. -->
    <repository>
        <id>hypera-snapshots</id>
        <url>https://repo.hypera.dev/snapshots/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>dev.hypera</groupId>
        <artifactId>chameleon-core</artifactId>
        <version>${chameleon.version}</version>
    </dependency>

    <!-- Repeat the block below and replace 'MODULE' with the module you wish to use. -->
    <dependency>
       <groupId>dev.hypera</groupId>
       <artifactId>chameleon-MODULE</artifactId>
       <version>${chameleon.version}</version>
    </dependency>

    <!-- If you wish to use the automatic platform main class generation: -->
    <dependency>
       <groupId>dev.hypera</groupId>
       <artifactId>chameleon-annotations</artifactId>
       <version>${chameleon.version}</version>
       <scope>provided</scope>
    </dependency>
</dependencies>

Contributing

Please read CONTRIBUTING.

License

The contents of this repository is licensed under the MIT License.

About

Cross-platform Minecraft plugin framework

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Java 96.4%
  • Kotlin 3.6%