java - 只有当物体进入范围时才触发接近检测器,而不是当他在范围内移动时

标签 java minecraft

我正在为 Minecraft 制作基于文本的雷达。如果一个玩家来到你 20 个街区以内,它会在聊天中说。截至目前,它会向聊天发送垃圾邮件。我怎样才能让它只写一次关于那个玩家的聊天?即使您不玩游戏,也应该很容易理解。

if (Camb.radar)
{
  for (Entity e: (List < Entity > ) mc.theWorld.loadedEntityList)
  {
    if (e instanceof EntityPlayer)
    {
      EntityPlayer player = (EntityPlayer) e;
      if (player == mc.thePlayer || mc.thePlayer.getDistanceToEntity(e) > 20.0)
        continue;
      mc.thePlayer.addChatMessage("\2479[CAMB] \247e" + player.getEntityName() + " has entered your 20 block radius!"); //Write to chat, only want this line done once for every player
    }
  }
}

最佳答案

您需要跟踪玩家何时离开范围并设置标志,以便您知道他们何时从“超出范围”过渡到“在范围内”。可能还想添加一个计时器,以便您只能每 N 秒提醒一次。

关于java - 只有当物体进入范围时才触发接近检测器,而不是当他在范围内移动时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18002144/

相关文章:

java - 静态全局对象

java - 重写java中使用的文件

java - 检测 .app 和 .exe 文件位置的最佳方法

java - retrofit Minecraft 错误

java - Spring Boot 将事务(和数据库连接)传播到 @Async 方法

Java 运行 .jar 时出错,但 Eclipse 中没有任何内容

java - Git diff 参数可以改善源代码更改对齐吗?

java - root 和其他帐户使用的文件描述多于 ulimit 配置的文件描述

c# - 新流程不再捕获输出

java - 有没有办法将数据附加到 Bukkit ItemStack?