比如让
res tp a 可以延迟5分钟
res tp b 可以延迟10分钟
res tp a 可以延迟5分钟
res tp b 可以延迟10分钟
延时任务
复制代码
- Bukkit.getScheduler().scheduleSyncDelayedTask(main.getPlugin(main.class), new Runnable(){
 
-                     //@Override
 
-                     public void run() {
 
-                     //运行
 
-                     }
 
- }, 20L); //20L在Minecraft是1秒
你写一个依赖领地插件的附属
然后:
复制代码
什么原理自己琢磨琢磨
然后:
 
- PluginCommand respc = Bukkit.getPluginCommand("res");
 
- CommandExecutor res = respc.getExecutor();
 
- respc.setExecutor(new CommandExecutor() {
 
-     @Override
 
-     public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
 
-          if (args.length == 2 && args[0].equalsIgnoreCase("tp")) {
 
-             new BukkitRunnable() {
 
-                @Override
 
-                public void run() {
 
-                   res.onCommand(sender,cmd,s,args);
 
-                   }
 
-                }.runTaskLater(插件主类,延迟秒数*20);
 
-                return true;
 
-          }else {
 
-             return res.onCommand(sender,cmd,s,args);
 
-          }
 
-     }
 
- });
什么原理自己琢磨琢磨
 本帖最后由 耗子 于 2018-2-17 22:43 编辑 
我想楼主想要的是,执行该指令后,一段时间内不能再次执行该指令的功能复制代码
我想楼主想要的是,执行该指令后,一段时间内不能再次执行该指令的功能
- import java.util.HashMap;
 
- import java.util.Map;
 
 
- import org.bukkit.command.Command;
 
- import org.bukkit.command.CommandSender;
 
- import org.bukkit.entity.Player;
 
- import org.bukkit.plugin.java.JavaPlugin;
 
 
- public class Plugin extends JavaPlugin {
 
-         
 
-         private Map<Player, Long> playerLastExecutionTime = new HashMap<>();
 
-         private long limitTime = 1000 * 60 * 5; // 5分钟
 
 
-         @Override
 
-         public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
 
-                 if(sender instanceof Player) {
 
-                         Player player = (Player) sender;
 
-                         long currentTime = System.currentTimeMillis();
 
-                         if(!playerLastExecutionTime.containsKey(player) || playerLastExecutionTime.get(player) <= currentTime) {
 
-                                 playerLastExecutionTime.put(player, currentTime + limitTime);
 
-                                 //do something...
 
-                         }
 
-                 }
 
-                 return false;
 
-         }
 
- }
监听执行事件
主类添加Map<String,String>
玩家执行时检测Map里面是否含有符合用户名与命令对应的键和值
如果有则拦截
没有就添加
添加同时建立一个线程倒计时,时间到了以后就从Map里面移除对应的键和值
主类添加Map<String,String>
玩家执行时检测Map里面是否含有符合用户名与命令对应的键和值
如果有则拦截
没有就添加
添加同时建立一个线程倒计时,时间到了以后就从Map里面移除对应的键和值