版本更新至 3.65

新增:版本更新检测
新增:Language2Value 对象新增 broadcast() 方法来发送给所有玩家
新增:/language2 send 命令现在可以使用 ALL 代替所有玩家
删除:FileUtils 工具的三个文本读取方法的异常打印
This commit is contained in:
坏黑
2018-02-23 23:49:53 +08:00
parent 06f6340863
commit 1d0219ed50
8 changed files with 158 additions and 28 deletions

View File

@@ -38,6 +38,7 @@ import me.skymc.taboolib.fileutils.ConfigUtils;
import me.skymc.taboolib.inventory.ItemUtils; import me.skymc.taboolib.inventory.ItemUtils;
import me.skymc.taboolib.inventory.speciaitem.SpecialItem; import me.skymc.taboolib.inventory.speciaitem.SpecialItem;
import me.skymc.taboolib.javashell.JavaShell; import me.skymc.taboolib.javashell.JavaShell;
import me.skymc.taboolib.listener.ListenerNetWork;
import me.skymc.taboolib.listener.ListenerPlayerCommand; import me.skymc.taboolib.listener.ListenerPlayerCommand;
import me.skymc.taboolib.listener.ListenerPlayerQuit; import me.skymc.taboolib.listener.ListenerPlayerQuit;
import me.skymc.taboolib.listener.ListenerPlayerJump; import me.skymc.taboolib.listener.ListenerPlayerJump;
@@ -51,6 +52,7 @@ import me.skymc.taboolib.string.language2.Language2;
import me.skymc.taboolib.support.SupportPlaceholder; import me.skymc.taboolib.support.SupportPlaceholder;
import me.skymc.taboolib.team.TagUtils; import me.skymc.taboolib.team.TagUtils;
import me.skymc.taboolib.timecycle.TimeCycleManager; import me.skymc.taboolib.timecycle.TimeCycleManager;
import me.skymc.taboolib.update.UpdateTask;
import me.skymc.tlm.TLM; import me.skymc.tlm.TLM;
import me.skymc.tlm.command.TLMCommands; import me.skymc.tlm.command.TLMCommands;
import me.skymc.tlm.module.TabooLibraryModule; import me.skymc.tlm.module.TabooLibraryModule;
@@ -223,6 +225,9 @@ public class Main extends JavaPlugin implements Listener {
} }
}.runTask(this); }.runTask(this);
// 更新检测
new UpdateTask();
// 启动 // 启动
started = true; started = true;
} }
@@ -316,6 +321,11 @@ public class Main extends JavaPlugin implements Listener {
getServer().getPluginManager().registerEvents(new EntityUtils(), this); getServer().getPluginManager().registerEvents(new EntityUtils(), this);
getServer().getPluginManager().registerEvents(new SignUtils(), this); getServer().getPluginManager().registerEvents(new SignUtils(), this);
} }
// 如果 YUM 插件存在
if (Bukkit.getPluginManager().getPlugin("YUM") != null) {
getServer().getPluginManager().registerEvents(new ListenerNetWork(), this);
}
} }
public static enum StorageType { public static enum StorageType {

View File

@@ -11,6 +11,20 @@ import net.md_5.bungee.api.ChatColor;
public class TabooLib { public class TabooLib {
/**
* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>
*
* @return
*/
public static double getPluginVersion() {
try {
return Double.valueOf(Main.getInst().getDescription().getVersion());
}
catch (Exception e) {
return 0D;
}
}
/** /**
* <20><>ȡ NMS <20> * <20><>ȡ NMS <20>
* *

View File

@@ -23,7 +23,7 @@ public class Language2Command implements CommandExecutor {
sender.sendMessage("<EFBFBD><EFBFBD>f"); sender.sendMessage("<EFBFBD><EFBFBD>f");
sender.sendMessage("<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>l----- <20><>3<EFBFBD><33>lLanguage2 Commands <20><>b<EFBFBD><62>l-----"); sender.sendMessage("<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>l----- <20><>3<EFBFBD><33>lLanguage2 Commands <20><>b<EFBFBD><62>l-----");
sender.sendMessage("<EFBFBD><EFBFBD>f"); sender.sendMessage("<EFBFBD><EFBFBD>f");
sender.sendMessage("<EFBFBD><EFBFBD>f /language2 send <20><>8[<5B><>7<EFBFBD><37><EFBFBD>ҡ<EFBFBD>8] <20><>8[<5B><>7<EFBFBD><37><EFBFBD>ԡ<EFBFBD>8] <20><>8<<3C><>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8> <20><>6- <20><>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ"); sender.sendMessage("<EFBFBD><EFBFBD>f /language2 send <20><>8[<5B><>7<EFBFBD><37><EFBFBD><EFBFBD>/ALL<4C><EFBFBD>8] <20><>8[<5B><>7<EFBFBD><37><EFBFBD>ԡ<EFBFBD>8] <20><>8<<3C><>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8> <20><>6- <20><>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
sender.sendMessage("<EFBFBD><EFBFBD>f /language2 reload <20><>6- <20><>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>"); sender.sendMessage("<EFBFBD><EFBFBD>f /language2 reload <20><>6- <20><>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>");
sender.sendMessage("<EFBFBD><EFBFBD>f"); sender.sendMessage("<EFBFBD><EFBFBD>f");
} }
@@ -37,19 +37,12 @@ public class Language2Command implements CommandExecutor {
if (args.length < 3) { if (args.length < 3) {
MsgUtils.send(sender, "<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"); MsgUtils.send(sender, "<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
} }
else {
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
Player player = Bukkit.getPlayerExact(args[1]);
if (player == null) {
MsgUtils.send(sender, "<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
else { else {
// ʱ<><CAB1> // ʱ<><CAB1>
long time = System.currentTimeMillis(); long time = System.currentTimeMillis();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
Language2Value value = Main.getExampleLangauge2().get(args[2]); Language2Value value = Main.getExampleLangauge2().get(args[2]);
// <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (args.length > 3) { if (args.length > 3) {
int i = 0; int i = 0;
@@ -59,8 +52,22 @@ public class Language2Command implements CommandExecutor {
} }
} }
// <20><><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD>
if (args[1].equals("ALL")) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
value.broadcast();
}
else {
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
Player player = Bukkit.getPlayerExact(args[1]);
if (player == null) {
MsgUtils.send(sender, "<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
else {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
value.send(player); value.send(player);
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (sender instanceof Player && ((Player) sender).getItemInHand().getType().equals(Material.COMMAND)) { if (sender instanceof Player && ((Player) sender).getItemInHand().getType().equals(Material.COMMAND)) {
@@ -68,7 +75,6 @@ public class Language2Command implements CommandExecutor {
} }
} }
} }
}
return true; return true;
} }
} }

View File

@@ -12,6 +12,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder; import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
import me.skymc.taboolib.client.LogClient; import me.skymc.taboolib.client.LogClient;
import me.skymc.taboolib.message.MsgUtils;
import me.skymc.taboolib.methods.MethodsUtils; import me.skymc.taboolib.methods.MethodsUtils;
public class FileUtils { public class FileUtils {
@@ -78,7 +79,7 @@ public class FileUtils {
bos.close(); bos.close();
return new String(bos.toByteArray(), encode); return new String(bos.toByteArray(), encode);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); MsgUtils.warn("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: &4" + e.getMessage());
} }
return null; return null;
} }
@@ -101,7 +102,7 @@ public class FileUtils {
fin.close(); fin.close();
return new String(bos.toByteArray(), encode); return new String(bos.toByteArray(), encode);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); MsgUtils.warn("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: &4" + e.getMessage());
} }
return null; return null;
} }
@@ -123,7 +124,7 @@ public class FileUtils {
bin.close(); bin.close();
return new String(bos.toByteArray(), conn.getContentEncoding() == null ? "UTF-8" : conn.getContentEncoding()); return new String(bos.toByteArray(), conn.getContentEncoding() == null ? "UTF-8" : conn.getContentEncoding());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); MsgUtils.warn("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʳ<EFBFBD><EFBFBD><EFBFBD>: &4" + e.getMessage());
} }
return null; return null;
} }

View File

@@ -0,0 +1,28 @@
package me.skymc.taboolib.listener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import me.skymc.taboolib.Main;
import me.skymc.taboolib.message.MsgUtils;
import pw.yumc.Yum.events.PluginNetworkEvent;
/**
* @author sky
* @since 2018<31><38>2<EFBFBD><32>23<32><33> <20><><EFBFBD><EFBFBD>11:10:03
*/
public class ListenerNetWork implements Listener {
public static final String GG = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>Ϊ<EFBFBD>˷<EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>ⱻ YUM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>";
@EventHandler (priority = EventPriority.HIGHEST)
public void onNetWork(PluginNetworkEvent e) {
if (e.getPlugin() != null && e.getPlugin().equals(Main.getInst())) {
// ȡ<><C8A1><EFBFBD><EFBFBD>ֹ
e.setCancelled(false);
// <20><>̨<EFBFBD><CCA8>ʾ
MsgUtils.warn("<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD> &4YUM &c<>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ֹ!");
}
}
}

View File

@@ -1,5 +1,6 @@
package me.skymc.taboolib.string.language2; package me.skymc.taboolib.string.language2;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
@@ -199,6 +200,17 @@ public class Language2Value {
} }
} }
/**
* ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
public void broadcast() {
List<Player> players = new ArrayList<>();
for (Player player : Bukkit.getOnlinePlayers()) {
players.add(player);
}
send(players);
}
/** /**
* <20><>ȡ<EFBFBD>ı<EFBFBD> * <20><>ȡ<EFBFBD>ı<EFBFBD>
* *

View File

@@ -0,0 +1,56 @@
package me.skymc.taboolib.update;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.bukkit.scheduler.BukkitRunnable;
import me.skymc.taboolib.Main;
import me.skymc.taboolib.TabooLib;
import me.skymc.taboolib.fileutils.FileUtils;
import me.skymc.taboolib.message.MsgUtils;
/**
* @author sky
* @since 2018<31><38>2<EFBFBD><32>23<32><33> <20><><EFBFBD><EFBFBD>10:39:14
*/
public class UpdateTask {
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
public UpdateTask() {
new BukkitRunnable() {
@Override
public void run() {
// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if (!Main.getInst().getConfig().getBoolean("UPDATE-CHECK")) {
return;
}
String value = FileUtils.getStringFromURL("https://github.com/Bkm016/TabooLib/releases", 1024);
Pattern pattern = Pattern.compile("<a href=\"/Bkm016/TabooLib/releases/tag/(\\S+)\">");
Matcher matcher = pattern.matcher(value);
if (matcher.find()) {
// <20><><EFBFBD>°汾
double newVersion = Double.valueOf(matcher.group(1));
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD>
if (TabooLib.getPluginVersion() == newVersion) {
MsgUtils.send("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
}
else {
MsgUtils.send("&8####################################################");
MsgUtils.send("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µİ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
MsgUtils.send("<EFBFBD><EFBFBD>ǰ<EFBFBD>汾: &f" + TabooLib.getPluginVersion());
MsgUtils.send("<EFBFBD><EFBFBD><EFBFBD>°汾: &f" + newVersion);
MsgUtils.send("<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ַ: &fhttp://www.mcbbs.net/thread-773065-1-1.html");
MsgUtils.send("<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ַ: &fhttps://github.com/Bkm016/TabooLib/");
MsgUtils.send("&8####################################################");
}
}
}
}.runTaskLaterAsynchronously(Main.getInst(), 100);
}
}

View File

@@ -17,6 +17,9 @@ DATAURL:
# 启用后将收到来自其他插件的调试信息 # 启用后将收到来自其他插件的调试信息
DEBUG: false DEBUG: false
# 是否启用更新检测
UPDATE-CHECK: true
# 是否在关闭服务器时清理玩家数据 # 是否在关闭服务器时清理玩家数据
# 该配置将在启用数据库储存时失效 # 该配置将在启用数据库储存时失效
DELETE-DATA: false DELETE-DATA: false