Code Monkey home page Code Monkey logo

tridentsdk's Introduction

TridentSDK Build Status Coverage Status

The TridentSDK project. The API for the new generation of multithreaded, high-performance, cleanroom Minecraft servers.

Latest Release

Not released

Getting a JAR

One would need a TridentSDK JAR to debug plugins, use the plugin API, or otherwise any application that isn't evil.

Method one: Build it yourself

If you have decided that our forms of distribution are questionable, or you would like to modify something before getting a JAR file, you want to build from the source directly.

Prerequisites

  1. A computer
  2. Git
  3. Maven

Directions

Type in the following into the command line:

git clone -b [master|bleeding-edge] https://github.com/TridentSDK/TridentSDK.git
cd TridentSDK
mvn clean install

One would use master to ensure compatibility with the latest build of Trident. Otherwise, for the most up-to-date (and potentially breaking) build of TridentSDK, one would use bleeding-edge. If you are building the JAR yourself, it is your responsibility to know which one is right for you.

The built JAR will ./TridentSDK/target/tridentsdk-*.jar

Method two: Download from Sonatype Nexus

For a precompiled solution, one which has passed the tests we have wrote, as well as if you are too lazy to download 2 files and install the Method one prerequeisites, you can download one yourself.

Prerequisites

  1. A mouse
  2. A web browser
  3. A computer

Directions

  1. Click
  2. Click "Keep"

Method three: Get one from us

If we've released a JAR for you to use, it usually comes with a nice read. So if you like nice reads or the look of our official website, you can go rummage around the releases forum and look for a download link.

Prerequisites

  1. A mouse
  2. A web browser
  3. A computer

Directions

Fortunately, because there are no releases yet, you don't need to do that quite yet.

Tools

None yet

API

TridentSDK provides an extensive API which allows both high and low level control over the Trident server.

A jar placed in the plugins folder is a valid plugin, if it has a class that does not have the same descriptor as an existing Trident or TridentSDK class. It must also have one and only one class whose superclass is net.tridentsdk.plugin.Plugin, annotated with net.tridentsdk.plugin.annotation.PluginDesc with a non-empty name field.

Example:

package com.example;

import net.tridentsdk.plugin.Plugin;

@PluginDesc(name = "Plugin")
public class ExamplePlugin extends Plugin {
}

This is the minimal requirements to have a plugin loaded by the server.

For more information on how to use the API, visit the Wiki page.

tridentsdk's People

Contributors

garris0n- avatar hfoxy avatar hintss avatar jshh avatar nickforall avatar nickrobson avatar pizzacrust avatar rowtn avatar stuntguy3000 avatar tigerreborn avatar ultimatebudgie avatar vilsol avatar walshydev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tridentsdk's Issues

Should plugins have access to ops.json

Rather than wrapping with Player and using a list obtained from Server, should plugins be able to be trusted to have access to the Config, or should they break consistency by having to create their own config object for ops.json?

Create Inventory API

As we gradually continue to rewrite the server, an item/stack of items class will need to be created. The only user so far of this class will be HoverEvent.java.

Some features in this API might include:

  • Item.java
  • Inventory.java
  • Creating custom inventories
  • Inventories with specific functions such as crafting or hopper inventories

Expose UUID API

There needs to be a quick way to associate names with UUID values or using Server#getPlayers() to map names to UUIDs for commands.

I'm interested in helping out

Hello Trident team!

I'm really interested in this project and I'd love to help out. Although I'm not much of a Java programmer, I'm familiar with web design and forum management, both of which you'll be needing fairly soon.

I couldn't figure out a better way to contact you, but if you're interested, my email is [email protected]

Thanks, Luke.

Permission API

Should implement a basic, low level Permissions API for use with commands.

Write a Scheduler

Not necessarily for scheduling tasks per se, but for accessing the plugin thread.

Event API

Create a multi-purpose, extendable API for handling events sent not only by the server, but also by plugins looking to hook into the event system, and provide the proper utilities for doing so.

Must support multithreading (e.g. async) events, also must incur the least runtime overhead at the cost of registration if possible. This can be achieved using a mapping of events to their listeners, but how to unregister listeners of a particular plugin may be difficult this way.

Meta API

Metadatable classes such as items, entities, and players should need an API to modify internal data stored in these objects.

Need Documentation

There is a laundry list of classes that are not documented/incompletely documented found in MULTIPLE classes. These are not even implementation classes, and thus full documentation is required. Please document all new classes as soon as possible.

See packages:

Add more Substances

As of the current moment, due to the lack of need for a large set of substances because the only current user of Substance.java are the world generators, it is not needed to expend needless hours adding and perhaps documenting any further substances.

However, it will be in our best interest to get to this at some point in the future. This has been marked TODO in the class header of Substance.java.

Command API

Write a Command API for handling commands dispatched by the server and the players.

Entity implementations

Move work on entities and the meta API related to entities to the next release (0.6-alpha).

Plugin API

Plugin API is needed for loading and managing plugins.

If possible, the implementations for the plugin API should probably be placed in TridentSDK/Trident instead.

Move entity n.t.base.* classes to n.t.entity.base.*?

NBT API

Write an NBT API for saving world data and item data.

Refactor Plugin API into lower level Module API

The Plugin API should be refactored into a Module API which will allow plugins to also use the same system used by the server to load plugins for their own purposes. Uses can include reducing runtime overhead of unneeded features of a plugin, dynamic functionality, and allowing mods themselves to be modded.

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.