805781737
比如让
  res tp a 可以延迟5分钟
  res tp b 可以延迟10分钟


狡诈师
延时任务
  1. Bukkit.getScheduler().scheduleSyncDelayedTask(main.getPlugin(main.class), new Runnable(){
  2.                     //@Override
  3.                     public void run() {
  4.                     //运行
  5.                     }
  6. }, 20L); //20L在Minecraft是1秒
复制代码



ddyy163
你写一个依赖领地插件的附属

然后:

  1. PluginCommand respc = Bukkit.getPluginCommand("res");
  2. CommandExecutor res = respc.getExecutor();
  3. respc.setExecutor(new CommandExecutor() {
  4.     @Override
  5.     public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
  6.          if (args.length == 2 && args[0].equalsIgnoreCase("tp")) {
  7.             new BukkitRunnable() {
  8.                @Override
  9.                public void run() {
  10.                   res.onCommand(sender,cmd,s,args);
  11.                   }
  12.                }.runTaskLater(插件主类,延迟秒数*20);
  13.                return true;
  14.          }else {
  15.             return res.onCommand(sender,cmd,s,args);
  16.          }
  17.     }
  18. });
复制代码


什么原理自己琢磨琢磨

耗子
本帖最后由 耗子 于 2018-2-17 22:43 编辑

我想楼主想要的是,执行该指令后,一段时间内不能再次执行该指令的功能
  1. import java.util.HashMap;
  2. import java.util.Map;

  3. import org.bukkit.command.Command;
  4. import org.bukkit.command.CommandSender;
  5. import org.bukkit.entity.Player;
  6. import org.bukkit.plugin.java.JavaPlugin;

  7. public class Plugin extends JavaPlugin {
  8.        
  9.         private Map<Player, Long> playerLastExecutionTime = new HashMap<>();
  10.         private long limitTime = 1000 * 60 * 5; // 5分钟

  11.         @Override
  12.         public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  13.                 if(sender instanceof Player) {
  14.                         Player player = (Player) sender;
  15.                         long currentTime = System.currentTimeMillis();
  16.                         if(!playerLastExecutionTime.containsKey(player) || playerLastExecutionTime.get(player) <= currentTime) {
  17.                                 playerLastExecutionTime.put(player, currentTime + limitTime);
  18.                                 //do something...
  19.                         }
  20.                 }
  21.                 return false;
  22.         }
  23. }
复制代码



HMTD
监听执行事件
主类添加Map<String,String>
玩家执行时检测Map里面是否含有符合用户名与命令对应的键和值
如果有则拦截
没有就添加
添加同时建立一个线程倒计时,时间到了以后就从Map里面移除对应的键和值