package ee.lunasqu.interaqqt; import ee.lunasqu.interaqqt.events.ConnectionEstablishedEvent; import ee.lunasqu.interaqqt.events.DisconnectedEvent; import org.bukkit.Bukkit; import org.eclipse.paho.client.mqttv3.*; public class MQTTConnection { IMqttClient publisher; public MQTTConnection (String host, String id) { MqttConnectOptions opts = new MqttConnectOptions(); opts.setAutomaticReconnect(true); opts.setCleanSession(true); opts.setConnectionTimeout(10); try { this.publisher = new MqttClient(host, id); this.publisher.connect(); } catch (MqttException e) { Bukkit.getPluginManager().callEvent(new DisconnectedEvent()); e.printStackTrace(); } Bukkit.getPluginManager().callEvent(new ConnectionEstablishedEvent()); } public boolean sendStateChange(String key, String value) { if (!this.isAlive()) return false; MqttMessage msg = new MqttMessage(value.getBytes()); msg.setQos(1); msg.setRetained(true); try { this.publisher.publish(key, msg); } catch (MqttException e) { e.printStackTrace(); return false; } return true; } public boolean isAlive() { return this.publisher.isConnected(); } public void die() { if (this.publisher != null && this.publisher.isConnected()) { try { this.publisher.disconnect(); } catch (MqttException e) { e.printStackTrace(); } } Bukkit.getPluginManager().callEvent(new DisconnectedEvent()); } }