Advertisement
Guest User

QueryBlocker

a guest
Oct 8th, 2016
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.03 KB | None | 0 0
  1. package com.bringholm.queryblocker;
  2.  
  3. import com.bringholm.queryblocker.bukkitutils.BukkitReflectionUtils;
  4. import com.comphenix.protocol.PacketType;
  5. import com.comphenix.protocol.ProtocolLibrary;
  6. import com.comphenix.protocol.events.PacketAdapter;
  7. import com.comphenix.protocol.events.PacketEvent;
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.ChatColor;
  10. import org.bukkit.command.Command;
  11. import org.bukkit.command.CommandSender;
  12. import org.bukkit.plugin.java.JavaPlugin;
  13.  
  14. public class QueryBlocker extends JavaPlugin {
  15.     private String queryResponse = "";
  16.     private String serverSoftware = this.getServerSoftware();
  17.     private String serverVersion = this.getServerVersion();
  18.  
  19.     @Override
  20.     public void onEnable() {
  21.         this.updateConfig();
  22.         if (!this.getServer().getPluginManager().isPluginEnabled("ProtocolLib")) {
  23.             this.getLogger().severe("ProtocolLib not found! Please install a working version of ProtocolLib, otherwise this plugin will not work!");
  24.             this.setEnabled(false);
  25.             return;
  26.         }
  27.         ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(this, PacketType.Status.Server.SERVER_INFO) {
  28.             @Override
  29.             public void onPacketSending(PacketEvent event) {
  30.  
  31.                 /* Field field = PacketStatusOutServerInfo.class.getDeclaredField("b");
  32.                    field.setAccessible(true);
  33.                    ServerPing serverPing = (ServerPing) field.get(event.getPacket().getHandle());
  34.                    ServerPing.ServerData serverData = serverPing.getServerData();
  35.                    serverPing.setServerInfo(new ServerPing.ServerData(queryResponse, serverData.getProtocolVersion())); */
  36.  
  37.                 Object serverPing = BukkitReflectionUtils.getDeclaredField(event.getPacket().getHandle(), "b");
  38.                 Object serverData = BukkitReflectionUtils.invokeMethod(serverPing, "getServerData");
  39.                 Object newServerData = BukkitReflectionUtils.getAndInvokeNMSConstructor("ServerPing$ServerData", queryResponse, BukkitReflectionUtils.invokeMethod(serverData, "getProtocolVersion"));
  40.                 BukkitReflectionUtils.invokeMethod(serverPing, "setServerInfo", newServerData);
  41.             }
  42.         });
  43.     }
  44.  
  45.     @Override
  46.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  47.         if (args.length == 1) {
  48.             if (sender.hasPermission("queryblocker.reload")) {
  49.                 this.updateConfig();
  50.                 sender.sendMessage(ChatColor.GOLD + "Successfully reloaded the config file!");
  51.             } else {
  52.                 sender.sendMessage(ChatColor.RED + "You don't have permission to do this!");
  53.             }
  54.         } else {
  55.             sender.sendMessage(ChatColor.RED + "Invalid arguments!");
  56.         }
  57.         return true;
  58.     }
  59.  
  60.     private void updateConfig() {
  61.         this.saveDefaultConfig();
  62.         this.reloadConfig();
  63.         queryResponse = !this.getConfig().getString("software").isEmpty() ? this.getConfig().getString("software").replace("%current%", serverSoftware) + " " : "";
  64.         queryResponse += !this.getConfig().getString("version").isEmpty() ? this.getConfig().getString("version").replace("%current%", serverVersion) : "";
  65.     }
  66.  
  67.     private String getServerSoftware() {
  68.         String software = "";
  69.  
  70.         /* software = ((CraftServer) Bukkit.getServer()).getServer().getServerModName(); */
  71.  
  72.         Object minecraftServer = BukkitReflectionUtils.invokeMethod(Bukkit.getServer(), "getServer");
  73.         software = (String) BukkitReflectionUtils.invokeMethod(minecraftServer, "getServerModName");
  74.         return software;
  75.     }
  76.  
  77.     private String getServerVersion() {
  78.         String version = "";
  79.  
  80.         /* version = ((CraftServer) Bukkit.getServer()).getServer().getVersion(); */
  81.  
  82.         Object minecraftServer = BukkitReflectionUtils.invokeMethod(Bukkit.getServer(), "getServer");
  83.         version = (String) BukkitReflectionUtils.invokeMethod(minecraftServer, "getVersion");
  84.         return version;
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement