Straiker123

TheAPI - Sockets - Spigot/Bungee bridge

Dec 27th, 2020 (edited)
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.98 KB | None | 0 0
  1. //Spigot listener - Lobby
  2.  
  3. import java.util.Map;
  4. import java.util.Map.Entry;
  5.  
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.entity.Player;
  8.  
  9. import me.devtec.theapi.TheAPI;
  10. import me.devtec.theapi.apis.PluginManagerAPI;
  11. import me.devtec.theapi.placeholderapi.ThePlaceholder;
  12. import me.devtec.theapi.placeholderapi.ThePlaceholderAPI;
  13. import me.devtec.theapi.sockets.Client;
  14. import me.devtec.theapi.sockets.ClientHandler;
  15. import me.devtec.theapi.sockets.Reader;
  16. import me.devtec.theapi.utils.StringUtils;
  17. import me.devtec.theapi.utils.datakeeper.Data;
  18. import me.devtec.theapi.utils.datakeeper.DataType;
  19. import me.devtec.theapi.utils.datakeeper.maps.UnsortedMap;
  20.  
  21. public void onEnable() {
  22.     Map<String, Integer> online = new UnsortedMap<>();
  23.     Client bungee = TheAPI.getSocketClient("Bungee");
  24.    
  25.     Data data = new Data();
  26.     data.set("online-mode", Bukkit.getOnlineMode());
  27.     data.set("max-players", Bukkit.getMaxPlayers());
  28.     data.set("theapi-version", PluginManagerAPI.getVersion("TheAPI"));
  29.     data.set("super-duper-cool-info-here", "Straiker is cool");
  30.    
  31.     //Send info to Bungee
  32.     bungee.write("some-unused-info:"+data.toString(DataType.BYTE));
  33.     bungee.write("req-server-info:survival");
  34.     bungee.write("req-server-info:creative");
  35.    
  36.     //Listening Bungee
  37.     TheAPI.getSocketServer().register(new Reader() {
  38.         public void read(ClientHandler a, String b) {
  39.             if(a.getUser().equals("Bungee")) {
  40.                 if(b.startsWith("req-server-info:")) {
  41.                     b=b.replaceFirst("req\\-server\\-info:", "");
  42.                     String server = b.split(":")[0];
  43.                     online.put(server, StringUtils.getInt(b.replaceFirst(server+":", "")));
  44.                 }
  45.             }
  46.         }
  47.     });
  48.    
  49.     //Server placeholders
  50.     ThePlaceholderAPI.register(new ThePlaceholder("bungee-info") {
  51.         public String onRequest(Player player, String placeholder) {
  52.             for(Entry<String, Integer> e : online.entrySet())
  53.                 if(placeholder.equals("bungee_server_"+e.getKey()))
  54.                     return e.getValue()+"";
  55.             return null;
  56.         }
  57.     });
  58.    
  59.     //Example: %theapi_{bungee_server_survival}%
  60. }
  61.  
  62. //Bungee listener
  63.  
  64. import me.devtec.bungeetheapi.TheAPI;
  65. import me.devtec.bungeetheapi.sockets.Client;
  66. import me.devtec.bungeetheapi.sockets.ClientHandler;
  67. import me.devtec.bungeetheapi.sockets.Reader;
  68. import me.devtec.bungeetheapi.utils.datakeeper.Data;
  69. import net.md_5.bungee.BungeeCord;
  70.  
  71. public void onEnable() {
  72.     Client lobby = TheAPI.getSocketClient("Lobby");
  73.  
  74.     //Listenning lobby..
  75.     TheAPI.getSocketServer().register(new Reader() {
  76.         public void read(ClientHandler a, String b) {
  77.             if(a.getUser().equals("Lobby")) {
  78.                 if(b.startsWith("some-unused-info:")) {
  79.                     b=b.replaceFirst("some\\-unused\\-info:", "");
  80.                     Data data = new Data();
  81.                     data.reload(b);
  82.                     //Something with data here..
  83.                     //...
  84.                     //...
  85.                     return;
  86.                 }
  87.                 if(b.startsWith("req-server-info:")) {
  88.                     b=b.replaceFirst("req\\-server\\-info:", "");
  89.                     String server = b.split(":")[0];
  90.                     lobby.write(BungeeCord.getInstance().getServerInfo(server).getPlayers().size()+"");
  91.                 }
  92.             }
  93.         }
  94.     });
  95. }
Add Comment
Please, Sign In to add comment