/okaeri-platform

Whole ecosystems built on top of the best okaeri packages

Primary LanguageJavaMIT LicenseMIT

Okaeri Platform (WIP)

License Total lines Repo size Contributors Discord

Whole ecosystems built on top of the best okaeri packages.

  • Based on dependency injection/beans/components schema:

    • @Component registration with @Register or @Scan
    • automatic field/constructor injection and bean creation
  • Lots of platform specific utilities:

    • register platform specific services as components
    • use commons for the most boring tasks and cleaner code

Real-life use cases

  • okaeri-poly: Minecraft scripting plugin with the support for Groovy, JavaScript, and Python — a great addition to traditional plugins and a rapid prototyping tool
  • okaeri-minecraft: Minecraft plugins built for various okaeri services, based around integrating Minecraft servers with the WEB APIs

Supported platforms

# platform
─ core
  └─ minecraft
     ├─ bukkit
     └─ bungee
  └─ standalone
     ├─ web
     └─ cli
# extensions
─ ext-scheduler-quartz
  • Minecraft
    • bukkit: your platform of choice for best Spigot/Paper development experience (beta - possible breaking changes)
    • bungee: your platform of choice for best BungeeCord development experience (beta - possible breaking changes)
  • Standalone
    • web: best used as web side of other platforms but can be used fully standalone (beta - basic features, possible breaking changes)
    • cli: allows access to platform features with minimal fuss, useful for bots or other standalone tools (beta - possible breaking changes)

Documentation

Okaeri Platform is a private use first project, not a public benefit project, and should be treated as such, the documentation might be non-existing or lacking. Feel free to explore README files of supported platforms for some basic guidance and Real-life use cases projects. You can search for or make any okaeri-platform related questions in discussions.

Recommendations

It is highly recommended to use -parameters compiler flag for better overall feature support.

Maven (Java)

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.1</version>
      <configuration>
        <compilerArgs>
          <arg>-parameters</arg>
        </compilerArgs>
      </configuration>
    </plugin>
  </plugins>
</build>

Maven (Kotlin)

 <build>
  <plugins>
    <plugin>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-maven-plugin</artifactId>
      <version>${kotlin.version}</version>
      <!-- ... -->
      <configuration>
        <!-- ... -->
        <args>
          <arg>-java-parameters</arg>
        </args>
      </configuration>
    </plugin>
  </plugins>
</build>

Gradle (Java)

compileJava {
    options.compilerArgs << '-parameters' 
}

Gradle (Kotlin)

compileKotlin {
    kotlinOptions {
        javaParameters = true
    }
}