BungeeSwitchListener
Best synchronization system for your SQL system
What is this?
BungeeSwitchListener is cross-server synchronization for SQL system.
How it works?
BungeeSwitchListener injecting handler to Bungeecord to receive custom packets. If connection is localhost, and first 8 byte is equals to identify variable, connection will establish.
What do I need for this plugin?
You will need Java 8.
Cause Java 9 not supported private reflection, It will need patch.
I'll upload Java 9 bungeecord patch later.
You need to add BungeeSwitchListener to your bungeecord, and BukkitSwitchHandler to bukkit.
BungeeSwitchListener is bungee based repeater, and you need to add reciever to bukkit.
How I can use it?
Add BukkitSwitchListener to plugin dependency.
When server startup, use BukkitSwitchHandler#register(Consumer<UUID,DataInput> load,Consumer<UUID,DataInput> reload) to register reciever.
When player quit, save to SQL.
After save complete, use BukkitSwitchHandler#saveCompleteRequest(String task, UUID uid)
** Warning** On player join, plugin will load with null parameter.
Is there an example?
Sure. Look next line.
Deerializer / Reloader register
public class TestPlugin extends JavaPlugin implements Listener{
@Override
public void onEnable() {
if (Bukkit.getPluginManager().getPlugin("BukkitSwitchHandler") != null){
try{
PreparedStatement stmt = BukkitSwitchHandler.getSQL().prepareStatement("create table if not exists testTable(user varchar(50), dataName varchar(20),data varchar(200), primary key (user)) CHARACTER SET utf8 COLLATE utf8_general_ci;");
stmt.executeUpdate();
}catch (Exception ex){
ex.printStackTrace();
}
BukkitSwitchHandler.register("TestPlugin", (uid,di) -> {
// You can use DataInput for read external data
try {
PreparedStatement stmt = BukkitSwitchHandler.getSQL().prepareStatement("select * from EssQL where user = ?");
stmt.setString(1, uid.toString());
ResultSet rs = stmt.executeQuery();
if(rs.next()) {
// Print "data" column
System.out.println(rs.getString(3));
} else {
System.out.println("Data not exist: " + uid.toString());
}
} catch (Exception ex){
}
}, (uid, di) -> {
// Reload request here.
});
}
}
@EventHandler
public void ev(PlayerQuitEvent e){
try {
// Save.
PreparedStatement stmt = BukkitSwitchHandler.getSQL().prepareStatement("insert into testTable values(?, ?, ?)");
stmt.setString(1, e.getPlayer().getUniqueID().toString());
stmt.setString(2, "Test Data");
stmt.setString(3, "Hello, World");
stmt.executeUpdate();
BukkitSwitchHandler.saveCompleteRequest("TestPlugin", e.getPlayer().getUniqueId());
} catch (Exception ex){
}
}
}Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta