Skip to content

OkaeriPoland/okaeri-platform

Repository files navigation

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
     ├─ velocity
     └─ bungee
  └─ standalone
     ├─ web
     └─ cli
# extensions
─ ext-scheduler-quartz
  • Minecraft
    • bukkit: your platform of choice for best Spigot/Paper development experience (beta - possible breaking changes)
    • velocity: your platform of choice for unified Velocity development experience (alpha - missing features, 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
    }
}