GithubHelp home page GithubHelp logo

projectsandstone / sandstoneapi Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 628 KB

Server Modding API for Minecraft.

License: MIT License

Shell 0.01% Kotlin 91.67% Java 8.32%
minecraft server-modding-api multi-platform sandstone

sandstoneapi's Introduction

SandstoneAPI

Server Modding API for Minecraft.

Sandstone is very inspired by SpongePowered (Some API characteristics is very similar (likely identical) to SpongePowered), and Bukkit API, but the Sandstone purpose is a bit different, Sandstone API aims to support all Minecraft Editions Platforms.

  • Mc Version: 1.12.2
  • SandstoneAPI Version: 1.0.0-SNAPSHOT (WIP)

What is Sandstone

Sandstone is a Server Modding API for Minecraft that aims to provide a common API to develop mods that works in multiple Minecraft Editions, Sandstone is designed to support Minecraft PE and Minecraft PC Edition. Sandstone is not a server, it's only a API, and the API is implemented by a Platform-Dependent plugin (like SandstoneBukkit, SandstoneSponge and SandstoneNukkit), Sandstone is written in Kotlin, and we plan to provide a LUA Plugin API to support non-JVM platforms like PocketMine-MP.

Supported Languages

  • Java
  • Kotlin (partial)
  • Scala (object plugins only)

Officially supported platforms

  • Bukkit
  • Sponge
  • Nukkit

How Sandstone works

It depends on implementation, but commonly we use Adapter pattern and weak cache some instances.

Attention

Does not compare Sandstone objects by identity (== in Java and === in Kotlin), use the equals method in Java and == in Kotlin to compare objects

Adapter delegates hashCode and equals methods to Adaptee instance.

Inconsistencies

Please report any inconsistency between platforms, Sandstone MUST be consistent between Platforms, if operation c() returns 9 in Platform A then the same operation MUST return 9 in Platform B, Platform C...

Inconsistencies MUST be reported and fixed in the implementation and not in the API or Common project.

Debug parameters

Sandstone provides debug parameters to save generated classes:

Project Parameter Description
EventSys kores.generation.dir.eventsys=/save/dir Defines class save directory
EventSys kores.generation.save.eventsys=true Enables global generated class save
EventSys kores.generation.save.eventsys.factorygen=true Enables save of factory generated class
EventSys kores.generation.save.eventsys.eventgen=true Enables save of event generated class
EventSys kores.generation.save.eventsys.listenergen=true Enables save of listener generated class
EventSys kores.generation.save.eventsys.directgen=true Enables save of listener generated class
KoresProxy koresproxy.saveproxies=true Enables save of proxy generated classes

Sandstone provides debug vm parameters to save all Sandstone generated classes: -Dsandstone.debug=true.

If you want to save only Event implementation generated classes: -Deventsys.debug=true

CodeProxy provides -Dcodeproxy.saveproxies=true to save Proxy classes

Obs: these parameters is for debug purposes only, saved classes help us to find bugs in the Code Generator, if you are not a advanced user trying to find the cause of a bug, does not use these parameters!!!

More

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.