mirror of
https://e.coding.net/circlecloud/Residence.git
synced 2025-11-24 21:46:16 +00:00
remove old file and use PluginHelper...
Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
@@ -55,11 +55,11 @@ import com.bekvon.bukkit.residence.text.Language;
|
|||||||
import com.bekvon.bukkit.residence.text.help.HelpEntry;
|
import com.bekvon.bukkit.residence.text.help.HelpEntry;
|
||||||
import com.bekvon.bukkit.residence.text.help.InformationPager;
|
import com.bekvon.bukkit.residence.text.help.InformationPager;
|
||||||
import com.bekvon.bukkit.residence.utils.DataBackup;
|
import com.bekvon.bukkit.residence.utils.DataBackup;
|
||||||
import com.bekvon.bukkit.residence.utils.VersionChecker;
|
|
||||||
import com.bekvon.bukkit.residence.vaultinterface.ResidenceVaultAdapter;
|
import com.bekvon.bukkit.residence.vaultinterface.ResidenceVaultAdapter;
|
||||||
import com.earth2me.essentials.Essentials;
|
import com.earth2me.essentials.Essentials;
|
||||||
|
|
||||||
import cn.citycraft.PluginHelper.config.FileConfig;
|
import cn.citycraft.PluginHelper.config.FileConfig;
|
||||||
|
import cn.citycraft.PluginHelper.utils.VersionChecker;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -44,9 +44,10 @@ import com.bekvon.bukkit.residence.event.ResidenceChangedEvent;
|
|||||||
import com.bekvon.bukkit.residence.permissions.PermissionGroup;
|
import com.bekvon.bukkit.residence.permissions.PermissionGroup;
|
||||||
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
||||||
import com.bekvon.bukkit.residence.protection.FlagPermissions;
|
import com.bekvon.bukkit.residence.protection.FlagPermissions;
|
||||||
import com.bekvon.bukkit.residence.utils.ActionBar;
|
|
||||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||||
|
|
||||||
|
import cn.citycraft.PluginHelper.utils.ActionBar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
|
|||||||
@@ -1,100 +0,0 @@
|
|||||||
package com.bekvon.bukkit.residence.utils;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.lang.reflect.Method;
|
|
||||||
import java.util.logging.Level;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.json.simple.JSONObject;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author hamzaxx
|
|
||||||
*/
|
|
||||||
public class ActionBar {
|
|
||||||
private static String version = "";
|
|
||||||
private static Object packet;
|
|
||||||
private static Method getHandle;
|
|
||||||
private static Method sendPacket;
|
|
||||||
private static Field playerConnection;
|
|
||||||
private static Class<?> nmsChatSerializer;
|
|
||||||
private static Class<?> nmsIChatBaseComponent;
|
|
||||||
private static Class<?> packetType;
|
|
||||||
|
|
||||||
static {
|
|
||||||
try {
|
|
||||||
version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
|
|
||||||
packetType = Class.forName(getPacketPlayOutChat());
|
|
||||||
Class<?> typeCraftPlayer = Class.forName(getCraftPlayerClasspath());
|
|
||||||
Class<?> typeNMSPlayer = Class.forName(getNMSPlayerClasspath());
|
|
||||||
Class<?> typePlayerConnection = Class.forName(getPlayerConnectionClasspath());
|
|
||||||
nmsChatSerializer = Class.forName(getChatSerializerClasspath());
|
|
||||||
nmsIChatBaseComponent = Class.forName(getIChatBaseComponentClasspath());
|
|
||||||
getHandle = typeCraftPlayer.getMethod("getHandle");
|
|
||||||
playerConnection = typeNMSPlayer.getField("playerConnection");
|
|
||||||
sendPacket = typePlayerConnection.getMethod("sendPacket", Class.forName(getPacketClasspath()));
|
|
||||||
} catch (ClassNotFoundException | NoSuchMethodException | SecurityException | NoSuchFieldException ex) {
|
|
||||||
Bukkit.getLogger().log(Level.SEVERE, "Error {0}", ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void send(Player receivingPacket, String msg) {
|
|
||||||
try {
|
|
||||||
Object serialized = nmsChatSerializer.getMethod("a", String.class).invoke(null, "{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', JSONObject.escape(msg)) + "\"}");
|
|
||||||
if (!version.contains("1_7")) {
|
|
||||||
packet = packetType.getConstructor(nmsIChatBaseComponent, byte.class).newInstance(serialized, (byte) 2);
|
|
||||||
} else {
|
|
||||||
packet = packetType.getConstructor(nmsIChatBaseComponent, int.class).newInstance(serialized, 2);
|
|
||||||
}
|
|
||||||
Object player = getHandle.invoke(receivingPacket);
|
|
||||||
Object connection = playerConnection.get(player);
|
|
||||||
sendPacket.invoke(connection, packet);
|
|
||||||
} catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | InstantiationException ex) {
|
|
||||||
Bukkit.getLogger().log(Level.SEVERE, "Error {0} " + version, ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
Object player = getHandle.invoke(receivingPacket);
|
|
||||||
Object connection = playerConnection.get(player);
|
|
||||||
sendPacket.invoke(connection, packet);
|
|
||||||
} catch (SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
|
|
||||||
Bukkit.getLogger().log(Level.SEVERE, "Error {0}", ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getCraftPlayerClasspath() {
|
|
||||||
return "org.bukkit.craftbukkit." + version + ".entity.CraftPlayer";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getPlayerConnectionClasspath() {
|
|
||||||
return "net.minecraft.server." + version + ".PlayerConnection";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getNMSPlayerClasspath() {
|
|
||||||
return "net.minecraft.server." + version + ".EntityPlayer";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getPacketClasspath() {
|
|
||||||
return "net.minecraft.server." + version + ".Packet";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getIChatBaseComponentClasspath() {
|
|
||||||
return "net.minecraft.server." + version + ".IChatBaseComponent";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getChatSerializerClasspath() {
|
|
||||||
if(version.equals("v1_8_R1") || version.contains("1_7")){
|
|
||||||
return "net.minecraft.server." + version + ".ChatSerializer";
|
|
||||||
} else {
|
|
||||||
return "net.minecraft.server." + version + ".IChatBaseComponent$ChatSerializer"; // 1_8_R2 moved to IChatBaseComponent
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getPacketPlayOutChat() {
|
|
||||||
return "net.minecraft.server." + version + ".PacketPlayOutChat";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
package com.bekvon.bukkit.residence.utils;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.net.URL;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
|
|
||||||
import com.google.common.base.Charsets;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author 蒋天蓓
|
|
||||||
* 2015年8月14日下午4:01:15
|
|
||||||
* 自动更新类
|
|
||||||
*/
|
|
||||||
public class VersionChecker implements Listener {
|
|
||||||
Plugin plugin;
|
|
||||||
public String checkurl = "https://coding.net/u/502647092/p/%s/git/raw/%s/src/plugin.yml";
|
|
||||||
public String branch = "master";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param plugin
|
|
||||||
* - 插件
|
|
||||||
*/
|
|
||||||
public VersionChecker(Plugin plugin) {
|
|
||||||
this.plugin = plugin;
|
|
||||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
|
||||||
this.versioncheck(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param plugin
|
|
||||||
* - 插件
|
|
||||||
* @param branch
|
|
||||||
* - 分支名称
|
|
||||||
*/
|
|
||||||
public VersionChecker(Plugin plugin, String branch) {
|
|
||||||
this.plugin = plugin;
|
|
||||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
|
||||||
this.branch = branch;
|
|
||||||
this.versioncheck(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取插件更新链接
|
|
||||||
*
|
|
||||||
* @param pluginName
|
|
||||||
* - 插件名称
|
|
||||||
* @param branch
|
|
||||||
* - 插件分支
|
|
||||||
* @return 更新链接
|
|
||||||
*/
|
|
||||||
public String getCheckUrl(String pluginName, String branch) {
|
|
||||||
return String.format(checkurl, pluginName, branch);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onPlayerJoin(PlayerJoinEvent e) {
|
|
||||||
if (e.getPlayer().isOp()) {
|
|
||||||
this.versioncheck(e.getPlayer());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 开始更新
|
|
||||||
*
|
|
||||||
* @param player
|
|
||||||
* - 获取更新的玩家(null则默认为控制台)
|
|
||||||
*/
|
|
||||||
public void versioncheck(final Player player) {
|
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
String readURL = getCheckUrl(plugin.getName(), branch);
|
|
||||||
FileConfiguration config;
|
|
||||||
String currentVersion = plugin.getDescription().getVersion();
|
|
||||||
try {
|
|
||||||
URL url = new URL(readURL);
|
|
||||||
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), Charsets.UTF_8));
|
|
||||||
config = YamlConfiguration.loadConfiguration(br);
|
|
||||||
String newVersion = config.getString("version");
|
|
||||||
br.close();
|
|
||||||
if (!newVersion.equals(currentVersion)) {
|
|
||||||
String[] msg = new String[] {
|
|
||||||
ChatColor.GREEN + plugin.getName() + " 插件最新版本 v" + newVersion,
|
|
||||||
ChatColor.RED + "服务器运行版本: v" + currentVersion,
|
|
||||||
ChatColor.GOLD + "插件更新网站: " + ChatColor.BLUE + plugin.getDescription().getWebsite()
|
|
||||||
};
|
|
||||||
if (player != null) {
|
|
||||||
player.sendMessage(msg);
|
|
||||||
} else {
|
|
||||||
plugin.getServer().getConsoleSender().sendMessage(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
plugin.getLogger().warning("版本更新检查失败!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user