Skip to content

Commit e67f889

Browse files
committed
版本更新至 3.65
新增:版本更新检测 新增:Language2Value 对象新增 broadcast() 方法来发送给所有玩家 新增:/language2 send 命令现在可以使用 ALL 代替所有玩家 删除:FileUtils 工具的三个文本读取方法的异常打印
1 parent e89e8b8 commit e67f889

File tree

8 files changed

+158
-28
lines changed

8 files changed

+158
-28
lines changed

src/main/src/me/skymc/taboolib/Main.java

+10
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import me.skymc.taboolib.inventory.ItemUtils;
3939
import me.skymc.taboolib.inventory.speciaitem.SpecialItem;
4040
import me.skymc.taboolib.javashell.JavaShell;
41+
import me.skymc.taboolib.listener.ListenerNetWork;
4142
import me.skymc.taboolib.listener.ListenerPlayerCommand;
4243
import me.skymc.taboolib.listener.ListenerPlayerQuit;
4344
import me.skymc.taboolib.listener.ListenerPlayerJump;
@@ -51,6 +52,7 @@
5152
import me.skymc.taboolib.support.SupportPlaceholder;
5253
import me.skymc.taboolib.team.TagUtils;
5354
import me.skymc.taboolib.timecycle.TimeCycleManager;
55+
import me.skymc.taboolib.update.UpdateTask;
5456
import me.skymc.tlm.TLM;
5557
import me.skymc.tlm.command.TLMCommands;
5658
import me.skymc.tlm.module.TabooLibraryModule;
@@ -223,6 +225,9 @@ public void run() {
223225
}
224226
}.runTask(this);
225227

228+
// 更新检测
229+
new UpdateTask();
230+
226231
// 启动
227232
started = true;
228233
}
@@ -316,6 +321,11 @@ private void registerListener() {
316321
getServer().getPluginManager().registerEvents(new EntityUtils(), this);
317322
getServer().getPluginManager().registerEvents(new SignUtils(), this);
318323
}
324+
325+
// 如果 YUM 插件存在
326+
if (Bukkit.getPluginManager().getPlugin("YUM") != null) {
327+
getServer().getPluginManager().registerEvents(new ListenerNetWork(), this);
328+
}
319329
}
320330

321331
public static enum StorageType {

src/main/src/me/skymc/taboolib/TabooLib.java

+14
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,20 @@
1111

1212
public class TabooLib {
1313

14+
/**
15+
* 获取插件版本
16+
*
17+
* @return
18+
*/
19+
public static double getPluginVersion() {
20+
try {
21+
return Double.valueOf(Main.getInst().getDescription().getVersion());
22+
}
23+
catch (Exception e) {
24+
return 0D;
25+
}
26+
}
27+
1428
/**
1529
* 获取 NMS 版本
1630
*

src/main/src/me/skymc/taboolib/commands/language/Language2Command.java

+31-25
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
2323
sender.sendMessage("§f");
2424
sender.sendMessage("§b§l----- §3§lLanguage2 Commands §b§l-----");
2525
sender.sendMessage("§f");
26-
sender.sendMessage("§f /language2 send §8[§7玩家§8] §8[§7语言§8] §8<§7变量§8> §6- §e发送语言提示");
26+
sender.sendMessage("§f /language2 send §8[§7玩家/ALL§8] §8[§7语言§8] §8<§7变量§8> §6- §e发送语言提示");
2727
sender.sendMessage("§f /language2 reload §6- §e重载语言库");
2828
sender.sendMessage("§f");
2929
}
@@ -38,35 +38,41 @@ else if (args[0].equalsIgnoreCase("send")) {
3838
MsgUtils.send(sender, "§4参数错误");
3939
}
4040
else {
41-
// 获取玩家
42-
Player player = Bukkit.getPlayerExact(args[1]);
43-
if (player == null) {
44-
MsgUtils.send(sender, "§4玩家不在线");
41+
// 时间
42+
long time = System.currentTimeMillis();
43+
44+
// 获取语言文件
45+
Language2Value value = Main.getExampleLangauge2().get(args[2]);
46+
// 如果有变量参数
47+
if (args.length > 3) {
48+
int i = 0;
49+
for (String variable : args[3].split("\\|")) {
50+
value.addPlaceholder("$" + i, variable);
51+
i++;
52+
}
53+
}
54+
55+
// 如果是公告
56+
if (args[1].equals("ALL")) {
57+
// 发送信息
58+
value.broadcast();
4559
}
4660
else {
47-
// 时间
48-
long time = System.currentTimeMillis();
49-
50-
// 获取语言文件
51-
Language2Value value = Main.getExampleLangauge2().get(args[2]);
52-
53-
// 如果有变量参数
54-
if (args.length > 3) {
55-
int i = 0;
56-
for (String variable : args[3].split("\\|")) {
57-
value.addPlaceholder("$" + i, variable);
58-
i++;
59-
}
61+
// 获取玩家
62+
Player player = Bukkit.getPlayerExact(args[1]);
63+
if (player == null) {
64+
MsgUtils.send(sender, "§4玩家不在线");
6065
}
61-
62-
// 发送信息
63-
value.send(player);
64-
65-
// 如果发送者是玩家
66-
if (sender instanceof Player && ((Player) sender).getItemInHand().getType().equals(Material.COMMAND)) {
67-
MsgUtils.send(sender, "§7信息已发送, 本次计算耗时: &f" + (System.currentTimeMillis() - time) + "ms");
66+
else {
67+
// 发送信息
68+
value.send(player);
6869
}
6970
}
71+
72+
// 如果发送者是玩家
73+
if (sender instanceof Player && ((Player) sender).getItemInHand().getType().equals(Material.COMMAND)) {
74+
MsgUtils.send(sender, "§7信息已发送, 本次计算耗时: &f" + (System.currentTimeMillis() - time) + "ms");
75+
}
7076
}
7177
}
7278
return true;

src/main/src/me/skymc/taboolib/fileutils/FileUtils.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
1313

1414
import me.skymc.taboolib.client.LogClient;
15+
import me.skymc.taboolib.message.MsgUtils;
1516
import me.skymc.taboolib.methods.MethodsUtils;
1617

1718
public class FileUtils {
@@ -78,7 +79,7 @@ public static String getStringFromInputStream(InputStream in, int size, String e
7879
bos.close();
7980
return new String(bos.toByteArray(), encode);
8081
} catch (IOException e) {
81-
e.printStackTrace();
82+
MsgUtils.warn("输入流读取出错: &4" + e.getMessage());
8283
}
8384
return null;
8485
}
@@ -101,7 +102,7 @@ public static String getStringFromFile(File file, int size, String encode) {
101102
fin.close();
102103
return new String(bos.toByteArray(), encode);
103104
} catch (IOException e) {
104-
e.printStackTrace();
105+
MsgUtils.warn("文件读取出错: &4" + e.getMessage());
105106
}
106107
return null;
107108
}
@@ -123,7 +124,7 @@ public static String getStringFromURL(String url, int size) {
123124
bin.close();
124125
return new String(bos.toByteArray(), conn.getContentEncoding() == null ? "UTF-8" : conn.getContentEncoding());
125126
} catch (IOException e) {
126-
e.printStackTrace();
127+
MsgUtils.warn("网络访问出错: &4" + e.getMessage());
127128
}
128129
return null;
129130
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package me.skymc.taboolib.listener;
2+
3+
import org.bukkit.event.EventHandler;
4+
import org.bukkit.event.EventPriority;
5+
import org.bukkit.event.Listener;
6+
7+
import me.skymc.taboolib.Main;
8+
import me.skymc.taboolib.message.MsgUtils;
9+
import pw.yumc.Yum.events.PluginNetworkEvent;
10+
11+
/**
12+
* @author sky
13+
* @since 2018年2月23日 下午11:10:03
14+
*/
15+
public class ListenerNetWork implements Listener {
16+
17+
public static final String GG = "本监听只是为了防止本插件的更新检测被 YUM 插件阻止,别无它用。";
18+
19+
@EventHandler (priority = EventPriority.HIGHEST)
20+
public void onNetWork(PluginNetworkEvent e) {
21+
if (e.getPlugin() != null && e.getPlugin().equals(Main.getInst())) {
22+
// 取消阻止
23+
e.setCancelled(false);
24+
// 后台提示
25+
MsgUtils.warn("已取消 &4YUM &c对本插件网络访问的阻止!");
26+
}
27+
}
28+
}

src/main/src/me/skymc/taboolib/string/language2/Language2Value.java

+12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.skymc.taboolib.string.language2;
22

3+
import java.util.ArrayList;
34
import java.util.Arrays;
45
import java.util.HashMap;
56
import java.util.LinkedHashMap;
@@ -199,6 +200,17 @@ public void send(CommandSender sender) {
199200
}
200201
}
201202

203+
/**
204+
* 全服公告
205+
*/
206+
public void broadcast() {
207+
List<Player> players = new ArrayList<>();
208+
for (Player player : Bukkit.getOnlinePlayers()) {
209+
players.add(player);
210+
}
211+
send(players);
212+
}
213+
202214
/**
203215
* 获取文本
204216
*
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package me.skymc.taboolib.update;
2+
3+
import java.io.File;
4+
import java.util.regex.Matcher;
5+
import java.util.regex.Pattern;
6+
7+
import org.bukkit.scheduler.BukkitRunnable;
8+
9+
import me.skymc.taboolib.Main;
10+
import me.skymc.taboolib.TabooLib;
11+
import me.skymc.taboolib.fileutils.FileUtils;
12+
import me.skymc.taboolib.message.MsgUtils;
13+
14+
/**
15+
* @author sky
16+
* @since 2018年2月23日 下午10:39:14
17+
*/
18+
public class UpdateTask {
19+
20+
/**
21+
* 检测更新
22+
*/
23+
public UpdateTask() {
24+
new BukkitRunnable() {
25+
26+
@Override
27+
public void run() {
28+
// 是否禁用
29+
if (!Main.getInst().getConfig().getBoolean("UPDATE-CHECK")) {
30+
return;
31+
}
32+
33+
String value = FileUtils.getStringFromURL("https://github.com/Bkm016/TabooLib/releases", 1024);
34+
Pattern pattern = Pattern.compile("<a href=\"/Bkm016/TabooLib/releases/tag/(\\S+)\">");
35+
Matcher matcher = pattern.matcher(value);
36+
if (matcher.find()) {
37+
// 最新版本
38+
double newVersion = Double.valueOf(matcher.group(1));
39+
// 如果是最新版
40+
if (TabooLib.getPluginVersion() == newVersion) {
41+
MsgUtils.send("插件已是最新版, 无需更新!");
42+
}
43+
else {
44+
MsgUtils.send("&8####################################################");
45+
MsgUtils.send("检测到有新的版本更新!");
46+
MsgUtils.send("当前版本: &f" + TabooLib.getPluginVersion());
47+
MsgUtils.send("最新版本: &f" + newVersion);
48+
MsgUtils.send("下载地址: &fhttp://www.mcbbs.net/thread-773065-1-1.html");
49+
MsgUtils.send("开源地址: &fhttps://github.com/Bkm016/TabooLib/");
50+
MsgUtils.send("&8####################################################");
51+
}
52+
}
53+
}
54+
}.runTaskLaterAsynchronously(Main.getInst(), 100);
55+
}
56+
}

src/resources/config.yml

+3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ DATAURL:
1717
# 启用后将收到来自其他插件的调试信息
1818
DEBUG: false
1919

20+
# 是否启用更新检测
21+
UPDATE-CHECK: true
22+
2023
# 是否在关闭服务器时清理玩家数据
2124
# 该配置将在启用数据库储存时失效
2225
DELETE-DATA: false

0 commit comments

Comments
 (0)