JH_AuthMeBridge/src/JH_AuthMeBridge/spigot.java

92 lines
2.8 KiB
Java
Raw Normal View History

2018-08-26 12:56:17 +02:00
package JH_AuthMeBridge;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
2018-10-07 23:54:14 +02:00
import java.util.ArrayList;
import java.util.List;
2018-08-26 12:56:17 +02:00
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
2018-10-07 23:54:14 +02:00
import org.bukkit.event.player.PlayerQuitEvent;
2018-08-26 12:56:17 +02:00
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.messaging.PluginMessageListener;
import org.bukkit.scheduler.BukkitRunnable;
import fr.xephi.authme.events.LoginEvent;
public class spigot extends JavaPlugin implements Listener, PluginMessageListener {
2019-08-27 18:22:26 +02:00
/*
Made by Jheyson Henrique
*/
2018-08-26 12:56:17 +02:00
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
2018-10-07 23:54:14 +02:00
Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
2018-08-26 12:56:17 +02:00
Bukkit.getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
}
@EventHandler
2018-10-07 23:54:14 +02:00
public void onLogin(LoginEvent event){
2018-08-26 12:56:17 +02:00
try {
2018-10-07 23:54:14 +02:00
ByteArrayOutputStream b = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(b);
2018-08-26 12:56:17 +02:00
out.writeUTF("JH_AuthMeBridge");
out.writeUTF(event.getPlayer().getName());
2018-10-07 23:54:14 +02:00
Bukkit.getServer().sendPluginMessage(this, "BungeeCord", b.toByteArray());
2018-08-26 12:56:17 +02:00
} catch (IOException e) {
e.printStackTrace();
2018-10-07 23:54:14 +02:00
}
2018-08-26 12:56:17 +02:00
}
2018-10-07 23:54:14 +02:00
@EventHandler
public void onQuit(PlayerQuitEvent event){
if(isLogged(event.getPlayer())){
logados.remove(event.getPlayer().getName());
}
}
2018-08-26 12:56:17 +02:00
@Override
2018-10-07 23:54:14 +02:00
public void onPluginMessageReceived(String channel, Player p, byte[] message) {
2018-08-26 12:56:17 +02:00
try {
2018-10-07 23:54:14 +02:00
DataInputStream in = new DataInputStream(new ByteArrayInputStream(message));
2018-08-26 12:56:17 +02:00
String subchannel = in.readUTF();
if(subchannel.equals("JH_AuthMeBridge")){
2018-10-07 23:54:14 +02:00
String input = in.readUTF();
if(isLogged(input))return;
2018-08-26 12:56:17 +02:00
Player player = Bukkit.getPlayer(input);
2018-10-07 23:54:14 +02:00
if(player != null && player.isOnline()){
2018-08-26 12:56:17 +02:00
new BukkitRunnable()
{
public void run()
{
// For older versions of Authme
// fr.xephi.authme.api.API.forceLogin(player);
fr.xephi.authme.api.v3.AuthMeApi.getInstance().forceLogin(player);
2018-10-07 23:54:14 +02:00
logados.add(player.getName());
2018-08-26 12:56:17 +02:00
}
2019-08-27 18:22:26 +02:00
}.runTaskLater(this, 25L);
2018-08-26 12:56:17 +02:00
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
2018-10-07 23:54:14 +02:00
List<String> logados = new ArrayList<>();
public Boolean isLogged(Player player){
return logados.contains(player.getName());
}
public Boolean isLogged(String player){
return logados.contains(player);
}
2018-08-26 12:56:17 +02:00
}