{"id":16380196,"url":"https://github.com/felixklauke/caroline","last_synced_at":"2025-03-23T03:33:09.534Z","repository":{"id":45290027,"uuid":"118590815","full_name":"felixklauke/caroline","owner":"felixklauke","description":"Introduce RxJava into spigot and bungeecord on enterprise level. Also provides full feature binding adapters for spigot events, commands and protocollib packet adapters to bring spigot and bungeecord development with reactive pattern onto a new stage.","archived":false,"fork":false,"pushed_at":"2023-05-15T05:10:37.000Z","size":113,"stargazers_count":17,"open_issues_count":6,"forks_count":0,"subscribers_count":3,"default_branch":"dev","last_synced_at":"2025-03-18T17:14:38.626Z","etag":null,"topics":["adapter","binding","command","events","library","protocollib","rxjava","rxjava2","spigot"],"latest_commit_sha":null,"homepage":"http://felix-klauke.de","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/felixklauke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-23T09:52:04.000Z","updated_at":"2024-05-25T13:27:14.000Z","dependencies_parsed_at":"2024-10-28T15:24:02.394Z","dependency_job_id":"39872b23-d164-4e81-93c3-8a5c9bf928b2","html_url":"https://github.com/felixklauke/caroline","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixklauke%2Fcaroline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixklauke%2Fcaroline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixklauke%2Fcaroline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixklauke%2Fcaroline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felixklauke","download_url":"https://codeload.github.com/felixklauke/caroline/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245052656,"owners_count":20553162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adapter","binding","command","events","library","protocollib","rxjava","rxjava2","spigot"],"created_at":"2024-10-11T03:50:43.359Z","updated_at":"2025-03-23T03:33:09.266Z","avatar_url":"https://github.com/felixklauke.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# caroline\n\nEver tried using the java version of the reactive extensions ( https://github.com/ReactiveX/RxJava ) in a minecraft\nbukkit server? Yes? Then you may know what this is and why you need it. Without any modifications its very\nunlikely that your server will run very long. Using this pluginManager you can schedule rx javas internal thread architecture\non bukkit schedulers to make rxjava usable in general. Have fun using this.\n\n# Build Status\n|             \t| Build Status                                                                                                                                              \t| Test Code Coverage                                                                                                                                               \t|\n|-------------\t|-----------------------------------------------------------------------------------------------------------------------------------------------------------\t|------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|\n| Master      \t| [![Build Status](https://travis-ci.org/FelixKlauke/caroline.svg?branch=master)](https://travis-ci.org/FelixKlauke/caroline) \t| [![codecov](https://codecov.io/gh/FelixKlauke/caroline/branch/master/graph/badge.svg)](https://codecov.io/gh/FelixKlauke/caroline) \t|\n| Development \t| [![Build Status](https://travis-ci.org/FelixKlauke/caroline.svg?branch=dev)](https://travis-ci.org/FelixKlauke/caroline)    \t| [![codecov](https://codecov.io/gh/FelixKlauke/caroline/branch/dev/graph/badge.svg)](https://codecov.io/gh/FelixKlauke/caroline)    \t|\n\n# Usage\n- Install [Maven](http://maven.apache.org/download.cgi)\n- Clone this repo\n- Install: ```mvn clean install```\n\n**Maven repositories**\n```xml\n\u003crepositories\u003e\n    \u003c!-- Klauke Enterprises Releases --\u003e\n    \u003crepository\u003e\n        \u003cid\u003eklauke-enterprises-maven-releases\u003c/id\u003e\n        \u003cname\u003eKlauke Enterprises Maven Releases\u003c/name\u003e\n        \u003curl\u003ehttps://repository.klauke-enterprises.com/repository/maven-releases/\u003c/url\u003e\n    \u003c/repository\u003e\n\t\n    \u003c!-- Klauke Enterprises Snapshots --\u003e\n    \u003crepository\u003e\n        \u003cid\u003eklauke-enterprises-maven-snapshots\u003c/id\u003e\n        \u003cname\u003eKlauke Enterprises Maven Snapshots\u003c/name\u003e\n        \u003curl\u003ehttps://repository.klauke-enterprises.com/repository/maven-snapshots/\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n```\n\n**Maven dependencies**\n\n_Caroline Core:_\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ede.felixklauke.caroline\u003c/groupId\u003e\n    \u003cartifactId\u003ecaroline-core\u003c/artifactId\u003e\n    \u003cversion\u003e1.2.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n# Example\n\n## Event Example\n\n_Plain old listener:_\n```java\nRxCaroline.observeEvent(PlayerJoinEvent.class).subscribe(event -\u003e {\n        event.setJoinMessage(\"A new player joined: \" + event.getPlayer().getName());          \n    });\n```\n\n_Use a specific priority:_\n```java\nRxCaroline.observeEvent(PlayerJoinEvent.class, EventPriority.LOWEST).subscribe(event -\u003e {\n        event.setJoinMessage(\"A new player joined: \" + event.getPlayer().getName());          \n    });\n```\n\n_Ignore cancelled events:_\n```java\nRxCaroline.observeEvent(PlayerJoinEvent.class, true).subscribe(event -\u003e {\n        event.setJoinMessage(\"A new player joined: \" + event.getPlayer().getName());          \n    });\n```\n\n_Both at the same time:_\n```java\nRxCaroline.observeEvent(PlayerJoinEvent.class, EventPriority.LOWEST, true).subscribe(event -\u003e {\n        event.setJoinMessage(\"A new player joined: \" + event.getPlayer().getName());          \n    });\n```\n\n## Command Example\n\n## Packet Adapter example\n\n# Architecture\nWe use google guice ( https://github.com/google/guice )  for dependency injection. You should have a look at that\nbefore you consider touching our architecture. The guice dependencies are defined in the\n`CarolineModule`. The bukkit pluginManager will create an instance of the main\napplication using the guice injector. The main application will hook our schedulers into rx java. Currently\nwe support\n- Computation Scheduler (synchronous)\n- IO Scheduler (asynchronous)\n- New Thread Scheduler (asynchronous)\nand configure rx java to use them. The tasks executed by these scheduler will be mapped on bukkits internal\nscheduler architecture.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelixklauke%2Fcaroline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelixklauke%2Fcaroline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelixklauke%2Fcaroline/lists"}