From 6e52a180a087898dc6f3a3d5a780cac089c4e1be Mon Sep 17 00:00:00 2001 From: JH3Y50N Date: Wed, 21 Oct 2020 11:30:33 -0300 Subject: [PATCH] Some fixes in plugin message channel --- bin/JH_AuthMeBridge/bungee$1.class | Bin 1485 -> 1485 bytes bin/JH_AuthMeBridge/bungee.class | Bin 8510 -> 8404 bytes src/JH_AuthMeBridge/bungee.java | 362 +++++++++++++++-------------- src/JH_AuthMeBridge/spigot.java | 13 +- 4 files changed, 190 insertions(+), 185 deletions(-) diff --git a/bin/JH_AuthMeBridge/bungee$1.class b/bin/JH_AuthMeBridge/bungee$1.class index facc3cd509f6217328c9d771f99b5214305aa0c6..0d3333f0794f5e84df261d538d03ef065c0d5f79 100644 GIT binary patch delta 51 zcmX@heU^K}b{0m%$vapkDVi{FGng_+F_w4R_uI<|H+HJ7Gr0X^=Q*a2#rW?1-iG#5rU>P5?vURd{Ttuyk zctrtUWf=+a9=s4Ef*o^W^dDo4f2z?K6R(LT-eWZ0!1H~pm2KVmF3!CP0+ zLU=lLeVg!)#k+^EjwkgI7oOu)8n0%XTIgHoT)|a#t|UTgMld8WS96UT_pSCVW2Xi$ zdJKqN8n5Nr)4%zuX}jJiz$R7cpUW+(%Rke(838-D62gu?^A{6C- z#v9QivF{#MxuN3xRVJxN7URv zI48+bwJA{R*vZ`*_i(Q|7+7T6XO#9KR9*)AKefDfxt zg$~rB6A@g4Md%XIwOECS*aX-k`e6 z`n~-UoQ^VVMp12Zcg@yti8YPi$6-AcK7)!9tMx4YOcOmP;4t*fr%WtYNc4-bL~=1~ z4rYqCu;d5qgqA`=!bzeAqe5U87GSqX_lWowNq8TwLrOvgmcnKPDY{u=<%(A33hPP% z^A2s|s0OvP<2`Y(0L663l~s1I(urPq+b3%(k#inP?D*V{3HiGq_${g-RFHBpPbBY) z#3oyQAhu9GTjiNWY$#lprk18}9DXBD<8G1xBF)mCQzDp7$t@PxFWqoA%5jewb#Quv zY}6r%xdL2#WUS|hR4oeO;}L% zvM)pGqB5~118K}C(?%1L-QlOBW5pSeEIS zFnvJW6k;wPNID%;D8*q4-4GsVaSK|ceL5D*oxY}qI63smz zXUufxyUljb06TP2O;wd`b!WZ0&HBlglAJl8WmYc9taN4u<9wuWG1nGj+!JS@@{=|1lmFYn->s#LCaVS!ti) delta 2190 zcmZuyTX0iV6kV$cO`6`Oxk=MDEs)Ye3u)T&60k*}Ev-D-@}?9}N$Ir~+XR!8w+2NK z1Vuc8QhdNTisOuq^^sap2Y(#K(LeQv(Q*9p$MHGiD2ncT8*68DGP&p6bJp2=?X~wl z_p`c=rPU^Lc*QwLLHYcf#41Xp8ms8a+gn`cV%yHN|56MkLzc!XLQdz@LP^ zE3zk2*B^=Y)@3#|`~`#1y2r4aBmIMh;7N^Hv?-NWl|4ygHXZ6pUNdXe{q8C1^;})m zyAS1f=ygyh>XfccR?oS8g7mRK{p@ab6>9j6MMU#VrTc1wv)caSxgnPUmO5BMgjHjH zIG}Md-Xk2nMzSL^AS_BbRb!B4>Pr6noJqzWBbp@U2!%PS($ktflOYFZonBj{j(had zYBP-7zC?2*y3^?IH+o#0$r_EdtW$4$mMoshIU47hpd10k1_mNg3o>8hO{QCyxNSEQ ziAb;E!F_T@yS#Nk){ zKE2GzR>IR^7(J4bzUanSOEhW3U3i%*G_K?-^^LwTyNw+VwyU7G+_r{m)pGA@Z!_0x z(9vmXvr*$FZhrHkw}Lr4OsOM8wMbo}Ui0ZT2Y0ILzVhmB_#M2HD7FOdi`6ZUBqM7E zle-6#8W)3%TMmD6A4 z9OOZbhj_1A=wFnRGP8Yn3|6F0`8|9@ zI3H2J_~$wUJgMy^sY>o_TPOzvlxgQnXDkhaG*$ z$1arMZp=Wr`m|^;5E6VC9@L-!wJ64HnKj}jG`+d4_*t%O6~ni}i&ZE?8>-MQ;0`Rp z8Z=?8tggc)Y`|OCi1)DxA7L}TK_`BY@i%nQkFBhbF^ui1vE+T;q5dk_sdo#x9+bjB z5O<;icd10F;ny%pen4k+8ee#?rSauCw5#t*%TnQR8sFF3Ljijlzov2h9PGoPw=gwe zx4%QAY45xQXS;yvhpq6J3abVz6Q1U1L%CQDNgO~_g551%@4=WLHgb}a=*(Mjk%~&cEbGn62(KLuUTxE_pnvM`%_(UAclP=AbnO#iSsi8}Dx5}9y zY&Wn>U7b87l}EQMekP0AV&rofeeySCElb9-P<5L5Y5J|`3e4clg;5rp@lEL*7R*>2 zZW)1;D0o=RKVWe!9J66^l|8Y>X)G5nCIuT91evPfbU~T^b1nbmj3!o^B$zL<+hyaR zxU4d@l`;Gw14EhV6$aWv;eW_k+q2JMnxN+SxFF3%wz+AHb_nURno%y!f|Z}lfgw~@ z+tW-fz0Bq=Pi1HX7kz9=^VWB`dW7pb!g6Fo7XA%zfz&Q=6iz%W?2bv99G9|tL~8Sd zB;_Pl<54NZ$0Z-9u^mrH3Kb6Ej3vZ;tAGxU3vp0{=#+3vk=ns6G}E#KZf>=bmVkrX zxLp)7b&~3Hy8eLA!NBwy5$rbJp3!SUzSxqHYRJsj9sfwO{4%?{M%dGSnMPN5guNX# z-k;LkRbzt2a+u<-v6lhDdrh>tXOu~s^iHO3MZCZ`V3Y@lQQjxH$Ec;~5UMBYcmKG4 z?cq0gB+ZA-v*A&mFqNbfM=Ms2mwvsxryyBz<2(xSjMUAuQYp`2E}j?Q1?l38QvWYV zProRg@sfys38(O~oOoqIFAR;#IwZ0_CTx-4c{?Q13hcy&U#>*I8E zE4A{mk}K!;jLBsglUk;g7XF{P;R)unadR5CNPW=b lobbyes = new ArrayList<>(); - HashMap logados = new HashMap(); - List comandos = new ArrayList<>(); - @EventHandler - public void onPluginMessage(PluginMessageEvent e){ - if (e.getTag().equalsIgnoreCase("BungeeCord")) { - try { - DataInputStream in = new DataInputStream(new ByteArrayInputStream(e.getData())); - String channel = in.readUTF(); - if(channel.equals("JH_AuthMeBridge")){ - String input = in.readUTF(); - if(isLogged(input))return; - logados.put(input, true); - } - } catch (IOException e1) { - e1.printStackTrace(); - } - - } - } - @EventHandler - public void onPlayerLeave(PlayerDisconnectEvent event) { - if(isLogged(event.getPlayer())){ - logados.remove(event.getPlayer().getName()); - } - } - - @EventHandler(priority=EventPriority.LOWEST) - public void onChat(ChatEvent event){ - if (event.isCancelled())return; - if (!(event.getSender() instanceof ProxiedPlayer))return; - ProxiedPlayer player = (ProxiedPlayer)event.getSender(); - if(isLogged(player))return; - if(event.isCommand()){ - String command = event.getMessage().split(" ")[0].toLowerCase(); - if(comandos.contains(command)){ - return; - } - } - if(!isLogged(player)){ - event.setCancelled(true); - TextComponent message = new TextComponent(ChatColor.translateAlternateColorCodes('&', getConfig().getString("NeedLoginToEnter"))); - player.sendMessage(message); - } - } - - @EventHandler - public void onServerSwitch(ServerSwitchEvent event) { - if(isLogged(event.getPlayer())){ - try { - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - DataOutputStream out = new DataOutputStream(stream); - out.writeUTF("JH_AuthMeBridge"); - out.writeUTF(event.getPlayer().getName()); - event.getPlayer().getServer().sendData("BungeeCord", stream.toByteArray()); - } catch (IOException e) { - e.printStackTrace(); - } - return; - } - if(!lobbyes.contains(event.getPlayer().getServer().getInfo().getName().toLowerCase())) { - TextComponent kickReason = new TextComponent(ChatColor.translateAlternateColorCodes('&', getConfig().getString("KickMessageNeedLogged"))); - kickReason.setColor(ChatColor.RED); - event.getPlayer().disconnect(kickReason); - } - } - - public Boolean isLogged(ProxiedPlayer player){ - return logados.containsKey(player.getName()); - } - - public Boolean isLogged(String player){ - return logados.containsKey(player); - } -} +package JH_AuthMeBridge; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.google.common.io.ByteStreams; + +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.event.ChatEvent; +import net.md_5.bungee.api.event.PlayerDisconnectEvent; +import net.md_5.bungee.api.event.PluginMessageEvent; +import net.md_5.bungee.api.event.ServerDisconnectEvent; +import net.md_5.bungee.api.event.ServerSwitchEvent; +import net.md_5.bungee.api.plugin.Command; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.config.Configuration; +import net.md_5.bungee.config.YamlConfiguration; +import net.md_5.bungee.event.EventHandler; +import net.md_5.bungee.event.EventPriority; + +public class bungee extends Plugin implements Listener { + + /* + Made by Jheyson Henrique + */ + + @Override + public void onEnable() { + getProxy().getPluginManager().registerListener(this, this); + try { + loadConfig(); + } catch (IOException e) { + e.printStackTrace(); + } + getProxy().getPluginManager().registerCommand(this, new Command("jh_authmebridge") { + @Override + public void execute(CommandSender sender, String[] args) { + if(!sender.hasPermission("jh_authmebridge.reload")){ + sender.sendMessage(new TextComponent("§cYou do not have permission to run this command!")); + return; + } + try { + loadConfig(); + sender.sendMessage(new TextComponent("§aSuccessfully reloaded configuration")); + } catch (IOException e) { + sender.sendMessage(new TextComponent("§aError loading configuration errors were shown in console")); + e.printStackTrace(); + } + + } + }); + System.out.println("[JH_AuthMeBridge] It started successfully."); + } + + Configuration config; + private void loadConfig() throws IOException{ + if(!getDataFolder().exists()){ + getDataFolder().mkdir(); + } + + File file = new File(getDataFolder(), "config.yml"); + + if(!file.exists()){ + file.createNewFile(); + try (InputStream in = getResourceAsStream("config.yml"); + OutputStream out = new FileOutputStream(file)) { + ByteStreams.copy(in, out); + } + } + config = YamlConfiguration.getProvider(YamlConfiguration.class).load(file); + comandos.clear(); + lobbyes.clear(); + for(String s : getConfig().getStringList("CommandsAllowed")){ + comandos.add(s.toLowerCase()); + } + for(String s : getConfig().getStringList("Lobbyes")){ + lobbyes.add(s.toLowerCase()); + } + } + private Configuration getConfig() + { + return config; + } + public void saveConfig(String config){ + File file = new File(getDataFolder(), "config.yml"); + try { + YamlConfiguration.getProvider(YamlConfiguration.class).save(getConfig(), file); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private List lobbyes = new ArrayList<>(); + private HashMap logados = new HashMap(); + private List comandos = new ArrayList<>(); + + @EventHandler + public void onPluginMessage(PluginMessageEvent event){ + if (event.getTag().equalsIgnoreCase("BungeeCord")) { + try { + DataInputStream in = new DataInputStream(new ByteArrayInputStream(event.getData())); + String channel = in.readUTF(); + if(channel.equals("JH_AuthMeBridge")){ + String input = in.readUTF(); + if(isLogged(input))return; + logados.put(input, true); + } + } catch (IOException e1) { + e1.printStackTrace(); + } + + } + } + + @EventHandler + public void onPlayerLeave(PlayerDisconnectEvent event) { + if(isLogged(event.getPlayer())){ + logados.remove(event.getPlayer().getName()); + } + } + + @EventHandler(priority=EventPriority.LOWEST) + public void onChat(ChatEvent event){ + if (event.isCancelled())return; + if (!(event.getSender() instanceof ProxiedPlayer))return; + ProxiedPlayer player = (ProxiedPlayer)event.getSender(); + if(isLogged(player))return; + if(event.isCommand()){ + String command = event.getMessage().split(" ")[0].toLowerCase(); + if(comandos.contains(command)){ + return; + } + } + if(!isLogged(player)){ + event.setCancelled(true); + TextComponent message = new TextComponent(ChatColor.translateAlternateColorCodes('&', getConfig().getString("NeedLoginToEnter"))); + player.sendMessage(message); + } + } + + @EventHandler + public void onServerSwitch(ServerSwitchEvent event) { + if(isLogged(event.getPlayer())){ + try { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + DataOutputStream out = new DataOutputStream(stream); + out.writeUTF("JH_AuthMeBridge"); + out.writeUTF(event.getPlayer().getName()); + event.getPlayer().getServer().sendData("BungeeCord", stream.toByteArray()); + } catch (IOException e) { + e.printStackTrace(); + } + return; + } + if(!lobbyes.contains(event.getPlayer().getServer().getInfo().getName().toLowerCase())) { + TextComponent kickReason = new TextComponent(ChatColor.translateAlternateColorCodes('&', getConfig().getString("KickMessageNeedLogged"))); + kickReason.setColor(ChatColor.RED); + event.getPlayer().disconnect(kickReason); + } + } + + public boolean isLogged(ProxiedPlayer player){ + return logados.containsKey(player.getName()); + } + + public boolean isLogged(String player){ + return logados.containsKey(player); + } +} diff --git a/src/JH_AuthMeBridge/spigot.java b/src/JH_AuthMeBridge/spigot.java index cf9ce5f..da0ff19 100644 --- a/src/JH_AuthMeBridge/spigot.java +++ b/src/JH_AuthMeBridge/spigot.java @@ -33,13 +33,14 @@ public class spigot extends JavaPlugin implements Listener, PluginMessageListene } @EventHandler - public void onLogin(LoginEvent event){ + public void onLogin(LoginEvent event){ try { ByteArrayOutputStream b = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(b); out.writeUTF("JH_AuthMeBridge"); out.writeUTF(event.getPlayer().getName()); - Bukkit.getServer().sendPluginMessage(this, "BungeeCord", b.toByteArray()); + event.getPlayer().sendPluginMessage(this, "BungeeCord", b.toByteArray()); + //Bukkit.getServer().sendPluginMessage(this, "BungeeCord", b.toByteArray()); } catch (IOException e) { e.printStackTrace(); } @@ -54,12 +55,12 @@ public class spigot extends JavaPlugin implements Listener, PluginMessageListene @Override public void onPluginMessageReceived(String channel, Player p, byte[] message) { - + if(p == null || !p.isOnline() || channel == null || channel.isEmpty())return; try { DataInputStream in = new DataInputStream(new ByteArrayInputStream(message)); String subchannel = in.readUTF(); // debug - //System.out.println((p != null ? p.getName() : " not found ") + " received from channel" + channel + " and subchannel " + subchannel); + //System.out.println((p != null ? p.getName() : " not found ") + " received from channel " + channel + " and subchannel " + subchannel); if(subchannel.equals("JH_AuthMeBridge")){ String input = in.readUTF(); if(isLogged(input))return; @@ -92,11 +93,11 @@ public class spigot extends JavaPlugin implements Listener, PluginMessageListene List logados = new ArrayList<>(); - public Boolean isLogged(Player player){ + public boolean isLogged(Player player){ return logados.contains(player.getName()); } - public Boolean isLogged(String player){ + public boolean isLogged(String player){ return logados.contains(player); } }