A guide that should kickstart your usage of Proton. Prefer to go through an example? Check out the global chat walkthrough.
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories><dependency>
<groupId>com.github.mcgrizzz</groupId>
<artifactId>Proton</artifactId>
<version>v1.3.2</version>
<scope>provided</scope>
</dependency>config.yml ProtonManagerrepositories {
...
maven { url 'https://jitpack.io' }
}dependencies {
implementation 'com.github.mcgrizzz:Proton:v1.3.0'
}rabbitMQ:
useRabbitMQ: true
host: "localhost"
virtualHost: '/'
port: 5672
authorization:
useAuthorization: true
username: guest
password: guest
redis:
useRedis: false
host: "localhost"
port: 6379
usePassword: true
password: "password"
identification:
clientName: "client1"
groups: []
checkForUpdates: truerabbitMQ:
useRabbitMQ: true
host: "localhost"
virtualHost: '/'
port: 5672
authorization:
useAuthorization: true
username: guest
password: guestredis:
useRedis: false
host: "localhost"
port: 6379
usePassword: true
password: "password"identification:
clientName: "client1"
groups: []main: org.test.Test
name: TestPlugin
version: 1.0
depend:
- Protonmain: org.test.Test
name: TestPlugin
author: Me
version: 1.0
depends: ["Proton"]private ProtonManager protonManager;
@Override
public void onEnable() {
this.protonManager = ProtonProvider.get();
}String namespace = "namespace";
String subject = "subject";
String recipient = "recipient";
Object data = new Object();
protonManager.send(namespace, subject, data, recipient);String namespace = "myPluginOrOrganization";
String subject = "subjectOfMyMessage";
Object data = new Object();
protonManager.broadcast(namespace, subject, data);class MyClass {
...
@MessageHandler(namespace="namespace", subject="subject")
public void anyMethodName(Object data){
//do something with the data received
}
...
}class MyClass {
...
@MessageHandler(namespace="namespace", subject="subject")
public void anyMethodName(Object data, MessageAttributes attr){
String senderName = attr.getSenderName();
UUID senderID = attr.getSenderID();
}
...
}@MessageHandler(namespace="namespace", subject="subject", async=true)@Override
public void onEnable() {
this.protonManager = ProtonProvider.get();
this.protonManager.registerMessageHandlers(this, new MyClass());
}this.protonManager.registerMessageHandlers(handler1, handler2, handler3...);@EventHandler
public void onPlayerChat(AsyncPlayerChatEvent event){
PlayerMessage message = new PlayerMessage(event.getPlayer().getName(), event.getMessage());
protonManager.broadcast("networkchat", "chatMessage", message);
}@MessageHandler(namespace = "networkchat", subject="chatMessage")
public void onChatReceived(PlayerMessage message){
getServer().broadcastMessage(String.format("<%s> %s", message.getPlayer(), message.getMessage()));
}public void onEnable(){
this.protonManager = ProtonProvider.get();
this.protonManager.registerMessageHandlers(this);
}public class NetworkChat extends JavaPlugin implements Listener {
ProtonManager manager;
public void onEnable(){
manager = Proton.getProtonManager();
if(manager != null){
manager.registerMessageHandlers(this, this);
}
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerChat(AsyncPlayerChatEvent event){
PlayerMessage message = new PlayerMessage(event.getPlayer().getName(), event.getMessage());
manager.broadcast("networkchat", "chatMessage", message);
}
@MessageHandler(namespace = "networkchat", subject="chatMessage")
public void onChatReceived(PlayerMessage message){
getServer().broadcastMessage(String.format("<%s> %s", message.getPlayer(), message.getMessage()));
}
public class PlayerMessage {
String player;
String message;
public PlayerMessage(String player, String message) {
this.player = player;
this.message = message;
}
public String getPlayer() {
return player;
}
public String getMessage() {
return message;
}
}
}