diff --git a/pom.xml b/pom.xml
index 97785db..8025f37 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
pw.yumc
TeleportRandom
- 1.3.2
+ 1.4
TeleportRandom
${project.name}
@@ -59,6 +59,7 @@
&a代码重构版本
+ &b1.4 - &a添加命令CD...;
&b1.3.2 - &c修复上个版本的空指针错误...;
&b1.3.1 - &c修复上个版本一个逻辑错误...;
&b1.3 - &c修复传送世界限制(区分大小写)...;
diff --git a/src/main/java/pw/yumc/TeleportRandom/TeleportRandom.java b/src/main/java/pw/yumc/TeleportRandom/TeleportRandom.java
index a7e913b..41b1391 100644
--- a/src/main/java/pw/yumc/TeleportRandom/TeleportRandom.java
+++ b/src/main/java/pw/yumc/TeleportRandom/TeleportRandom.java
@@ -1,6 +1,8 @@
package pw.yumc.TeleportRandom;
+import java.util.HashSet;
import java.util.Random;
+import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@@ -20,20 +22,27 @@ public class TeleportRandom extends JavaPlugin implements CommandExecutor {
public final static Random rr = new Random();
public static FileConfig config;
+ private final Set cd = new HashSet<>();
+
@Override
public boolean onCommand(final CommandSender sender, final Command cmd, final String string, final String[] args) {
- if (args.length == 1 && args[0].equalsIgnoreCase("reload")) {
+ if (args[0].equalsIgnoreCase("reload")) {
config.reload();
sender.sendMessage(getPrefix() + config.getMessage("Message.Reload"));
return true;
}
- if (sender instanceof Player) {
- final Player p = (Player) sender;
- if (!p.hasPermission("tpr.use")) {
- sender.sendMessage(getPrefix() + config.getMessage("Message.NoPerm"));
- return true;
- }
- try {
+ if (args[0].equalsIgnoreCase("help")) {
+ sender.sendMessage("玩家: /tpr [范围] [世界]");
+ sender.sendMessage("控制台: /tpr <玩家> [范围] [世界]");
+ return true;
+ }
+ try {
+ if (sender instanceof Player) {
+ final Player p = (Player) sender;
+ if (!p.hasPermission("tpr.use")) {
+ sender.sendMessage(getPrefix() + config.getMessage("Message.NoPerm"));
+ return true;
+ }
switch (args.length) {
case 0:
randomTP(0, p.getWorld(), p);
@@ -45,13 +54,24 @@ public class TeleportRandom extends JavaPlugin implements CommandExecutor {
randomTP(Integer.parseInt(args[0]), Bukkit.getWorld(args[1]), p);
break;
}
- } catch (final IllegalArgumentException e) {
- sender.sendMessage(getPrefix() + "§c非法的参数或不存在的世界!");
+
+ return true;
+ } else if (args.length > 1) {
+ final Player p = Bukkit.getPlayer(args[0]);
+ switch (args.length) {
+ case 2:
+ randomTP(Integer.parseInt(args[1]), p.getWorld(), p);
+ break;
+ case 3:
+ randomTP(Integer.parseInt(args[1]), Bukkit.getWorld(args[2]), p);
+ break;
+ default:
+ break;
+ }
}
return true;
- } else if (args.length > 2) {
- randomTP(Integer.parseInt(args[1]), Bukkit.getWorld(args[2]), Bukkit.getPlayer(args[0]));
- return true;
+ } catch (final IllegalArgumentException e) {
+ sender.sendMessage(getPrefix() + "§c非法的参数或不存在的世界!");
}
return false;
}
@@ -71,6 +91,9 @@ public class TeleportRandom extends JavaPlugin implements CommandExecutor {
if (world == null || p == null) {
throw new IllegalArgumentException();
}
+ if (!p.hasPermission("tpr.nocd") && cd.contains(p.getName())) {
+ p.sendMessage(getPrefix() + config.getMessage("Message.CD"));
+ }
if (!config.getStringList("AllowWorld").contains(world.getName())) {
p.sendMessage(getPrefix() + config.getMessage("Message.NoPermWorld"));
}
@@ -89,6 +112,13 @@ public class TeleportRandom extends JavaPlugin implements CommandExecutor {
final Point point = new Point(lr, world);
checkBlock(point, p);
point.tp(p);
+ cd.add(p.getName());
+ getServer().getScheduler().runTaskLater(this, new Runnable() {
+ @Override
+ public void run() {
+ cd.remove(p.getName());
+ }
+ }, config.getLong("CD"));
}
private void checkBlock(final Point point, final Player p) {
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index f0ec0df..093bc44 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -1,5 +1,5 @@
#本文件为随机传送插件的主配置文件
-version: 1.0
+version: 1.1
#服务器名称
servername: ''
#插件名称
@@ -24,6 +24,8 @@ Message:
NoPerm: '&c当前没有使用随机传送的权限!'
#当前世界不允许传送
NoPermWorld: '&c当前世界不允许使用随机传送!'
+ #当前世界不允许传送
+ CD: '&c随机传送冷却中!'
#允许传送的世界(区分大小写)
AllowWorld:
- world
@@ -31,9 +33,11 @@ AllowWorld:
- world_the_end
#默认传送距离
-default: 10000
+default: 1000
#最大传送距离
Limit: 10000
+#命令CD时间(单位Tick 1秒=20Tick)
+CD: 60
#传送保护列表(不区分大小写)
ProtectBlock:
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 7faaa5c..c6fa8e7 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -18,6 +18,9 @@ permissions:
tpr.use:
description: 允许使用随机传送!
default: true
+ tpr.nocd:
+ description: 允许无CD传送!
+ default: op
tpr.reload:
description: 允许重载随机传送!
default: op
\ No newline at end of file