Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.bringholm.queryblocker;
- import com.bringholm.queryblocker.bukkitutils.BukkitReflectionUtils;
- import com.comphenix.protocol.PacketType;
- import com.comphenix.protocol.ProtocolLibrary;
- import com.comphenix.protocol.events.PacketAdapter;
- import com.comphenix.protocol.events.PacketEvent;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.plugin.java.JavaPlugin;
- public class QueryBlocker extends JavaPlugin {
- private String queryResponse = "";
- private String serverSoftware = this.getServerSoftware();
- private String serverVersion = this.getServerVersion();
- @Override
- public void onEnable() {
- this.updateConfig();
- if (!this.getServer().getPluginManager().isPluginEnabled("ProtocolLib")) {
- this.getLogger().severe("ProtocolLib not found! Please install a working version of ProtocolLib, otherwise this plugin will not work!");
- this.setEnabled(false);
- return;
- }
- ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(this, PacketType.Status.Server.SERVER_INFO) {
- @Override
- public void onPacketSending(PacketEvent event) {
- /* Field field = PacketStatusOutServerInfo.class.getDeclaredField("b");
- field.setAccessible(true);
- ServerPing serverPing = (ServerPing) field.get(event.getPacket().getHandle());
- ServerPing.ServerData serverData = serverPing.getServerData();
- serverPing.setServerInfo(new ServerPing.ServerData(queryResponse, serverData.getProtocolVersion())); */
- Object serverPing = BukkitReflectionUtils.getDeclaredField(event.getPacket().getHandle(), "b");
- Object serverData = BukkitReflectionUtils.invokeMethod(serverPing, "getServerData");
- Object newServerData = BukkitReflectionUtils.getAndInvokeNMSConstructor("ServerPing$ServerData", queryResponse, BukkitReflectionUtils.invokeMethod(serverData, "getProtocolVersion"));
- BukkitReflectionUtils.invokeMethod(serverPing, "setServerInfo", newServerData);
- }
- });
- }
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (args.length == 1) {
- if (sender.hasPermission("queryblocker.reload")) {
- this.updateConfig();
- sender.sendMessage(ChatColor.GOLD + "Successfully reloaded the config file!");
- } else {
- sender.sendMessage(ChatColor.RED + "You don't have permission to do this!");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "Invalid arguments!");
- }
- return true;
- }
- private void updateConfig() {
- this.saveDefaultConfig();
- this.reloadConfig();
- queryResponse = !this.getConfig().getString("software").isEmpty() ? this.getConfig().getString("software").replace("%current%", serverSoftware) + " " : "";
- queryResponse += !this.getConfig().getString("version").isEmpty() ? this.getConfig().getString("version").replace("%current%", serverVersion) : "";
- }
- private String getServerSoftware() {
- String software = "";
- /* software = ((CraftServer) Bukkit.getServer()).getServer().getServerModName(); */
- Object minecraftServer = BukkitReflectionUtils.invokeMethod(Bukkit.getServer(), "getServer");
- software = (String) BukkitReflectionUtils.invokeMethod(minecraftServer, "getServerModName");
- return software;
- }
- private String getServerVersion() {
- String version = "";
- /* version = ((CraftServer) Bukkit.getServer()).getServer().getVersion(); */
- Object minecraftServer = BukkitReflectionUtils.invokeMethod(Bukkit.getServer(), "getServer");
- version = (String) BukkitReflectionUtils.invokeMethod(minecraftServer, "getVersion");
- return version;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement