• Stars
    star
    202
  • Rank 193,691 (Top 4 %)
  • Language
    Java
  • License
    MIT License
  • Created about 8 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

TaskChain Control Flow framework. Helps facilitate running tasks on an application's "Main Thread" (such as a game), and tasks off the main (async).

TaskChain - Current Release Version: 3.7.2

What is TaskChain?

TaskChain is a Java Control Flow framework designed for Game Developers.

TaskChain helps facilitate running tasks on an application's "Main Thread", and parallel tasks off the main (async to main).

You define a series of tasks (a Task Pipeline) in the order that they should execute, and the registration of each task defines whether it should run on the main thread or not.

TaskChain then executes your task pipe line, switching thread context where needed, passing the result from the previous task to the next.

Documentation / Getting Started

  1. Why you should use TaskChain
  2. Learning TaskChain Terminology
  3. Using TaskChains & Examples
  4. Shared Task Chains

Supported Game Platforms

Currently Supported

Planned

  • Forge Minecraft Servers [#2]

3rd Party

  • Nukkit Minecraft Servers [#13]

Want to add your own game?

If you wish to add support for your own game, see Implementing a new game

JavaDocs

JavaDocs can be found at http://taskchain.aikar.co

Changelog

Please see CHANGELOG

Why does it require Java 8+?

Get off your dinosaur and get on this rocket ship!

On a serious note, Lambdas provided a much cleaner API and easier implementations.

Dinosaurs have been dead for a long time, so get off it before you start to smell.

Download Java 8

Using Kotlin 1.1 for Bukkit Plugins?

If you are a developing Bukkit plugins in Kotlin, we actually do not recommend using TaskChain. @okkero has created a vastly better experience using Coroutines in Kotlin.

We recommend using his framework, Skedule, which requires Kotlin 1.1.

Coroutines are a beautiful way to create this kind of behavior, but sadly we are not able to do that kind of stuff in Java Syntax.

Note that Skedule is only for Bukkit plugins. If you are working in a different platform, TaskChain does still work for Kotlin.

Older Versions

  • v2: Updated to a Java 8 Lambda API. Massive redesign and new features. Very close to v3 but uses a static registration and global state, so it can only be bound to a single Bukkit Plugin
    (note: some bugs were fixed in v3 with Shared chains done and error handlers)

  • v1: The original (ugly) API for Bukkit plugins, pre Java 8. Only version usable below java 8, but probably some bugs.

License

TaskChain (c) Daniel Ennis (Aikar) 2014-2017.

TaskChain is licensed MIT. See LICENSE

More Repositories

1

commands

Java Command Dispatch Framework - (Bukkit, Spigot, Paper, Sponge, Bungee, JDA, Velocity supported, generically usable anywhere)
Java
557
star
2

timings

Source to the Aikar's Minecraft Timings Viewer
JavaScript
197
star
3

wormhole

Wormwhole is a streaming message queue system for Node.JS focused on performance.
JavaScript
121
star
4

db

Aikar's Intuitive JDBC Database Wrapper - A clean and intuitive API for Java to remove JDBC boilerplate.
Java
65
star
5

autoloader

A Node.JS Module Autoloader
JavaScript
30
star
6

traceur

Traceur support for Node.JS
JavaScript
27
star
7

minecraft-timings

A Library to implement against Minecraft Timings - [V1 (Spigot), V2 (Paper)], and gracefully do nothing if no timings is supported.
Java
23
star
8

SigScan

Old project used for Final Fantasy XI Windower project. Allows you to use byte signatures to dynamically locate memory addresses during program runtime. Note: This is no longer maintained and is only here for reference. Please fork if you have improvements
C++
19
star
9

fastutil-lite

minimal fastutil classes
Java
16
star
10

paratask

Java Parallel Task Manager
Java
15
star
11

AdvancementCommand

Run commands (with potentially elevated permissions) on earning an advancement
Java
13
star
12

locales

A Java Locale Manager that supports managing multiple languages and contextual locale preference (IE: Different players on a multiplayer game server)
Java
12
star
13

magic

Magic is a utility library for Node.JS to provide V8 Interceptor objects in order to get the same functionality as PHP's __get and __set. Magic is designed to let developers write promise based functionality in a better syntax without function calls.
JavaScript
11
star
14

Bukkit

Java
10
star
15

nova

Nova templating engine for Node.JS
JavaScript
8
star
16

streamchat

Aikar's stream chat bridge - NGINX RTMP Split Stream conf: https://gist.github.com/aikar/937ae21ad9bc9600269cfbb4a1b1e96f
JavaScript
8
star
17

FairNaturalSpawns

Improves natural spawning behavior on Paper by also reducing spawns for farms to give everyone a fair shot at monsters.
Java
7
star
18

util

A collection of Java Classes and Utils I have wrote
Java
7
star
19

cosmos

A distributed event driven and RPC based application framework for Node.JS
6
star
20

objectsm

JS Object Serializer/Deserializer to convert raw JS objects back into class/constructor form
JavaScript
5
star
21

webpack-auto-clean-build-plugin

Automatically remove old assets after each build in webpack watch mode
JavaScript
5
star
22

nope

Node.JS OOP System
JavaScript
4
star
23

aurora

A beautiful JavaScript Environment... Traceur + Streamline. Aurora is a development tool to compile your Traceur and Streamline syntax quickly for you in an easy to manage way, and the users of your code do not depend on installing either module.
JavaScript
4
star
24

FixDoubleLogins

Should fix double login issues on Minecraft 1.8
Java
4
star
25

cleaner

Abstraction around sun.misc.Cleaner and java.lang.ref.Cleaner so you can support Java 8 and 9+ without worry.
Java
4
star
26

apatch

Apply Patch super script - uses git am -3 with wiggle fallback to best apply a patch file to source code
Shell
4
star
27

barenpm

An alternative npm modules installer that provides clean unsymlinked installations. Also is designed to target installing into a projects library folder instead of as a global module.
JavaScript
4
star
28

node-markov

Generate markov chains for chatbots in node
JavaScript
3
star
29

ProfileCache

Cache Mojang Profile API calls to a shared cache so multiple servers on same machine don't get rate limited
Java
3
star
30

ffxiv-tex-converter

Python
2
star
31

create-flow-pkg

Create a Facebook Flow ready skeleton library or application with Babel
JavaScript
2
star
32

bufferlog

Maintain a log of binary buffers to disk that can be replayed on demand. Similar technique used by MySQL BinLogs and Apache Kafka.
JavaScript
2
star
33

nodeib

Node.JS IRC Bot System
JavaScript
1
star
34

react-parent-context

Access the context of parent React Components
JavaScript
1
star
35

testrunner

Runs test...
JavaScript
1
star
36

postfix-manager

Web based admin panel for managing aliases, allowing domain level delegation.
PHP
1
star
37

node-beam

Fork of NPM node-beam - couldn't find a repo for this. Uses WS 0.8 for node 4. --- NOT AFFILIATED WITH IFDevelopment
JavaScript
1
star
38

aikar

1
star
39

inthashmap

place to store this minimal int hashmap incase i ever want to just publish an artifact
Java
1
star
40

objectproxy

Enables you to have a proxy object that lets you call an object/function over a TCP stream.
JavaScript
1
star