FindIt

[!INFO] Git Commit: 3b6d5fa | Updated: 2026-09-25

FindIt 是 GTNH 中的方块/物品搜索实用 mod。它本身不注册任何 Block / Item / Entity / TileEntity / Dimension / Biome / Enchantment / PotionEffect / Multiblock / Structure / Achievement,仅作为 NEI GUI 中的两个搜索快捷键:

  • 在任意容器/物品栏界面按下 Y 键 → 服务器在玩家坐标 ±SearchRadius 立方体范围内扫描所有 TileEntity,找出方块/Metadata 匹配的格子并通过红色高亮框标记。
  • 在任意容器/物品栏界面按下 T 键 → 服务器扫描同一立方体范围内的 TileEntity,并通过 IStackFilterProvider 插件链匹配物品/NBT/GT 盖板/GT 管道/EnderIO 导管/背包/Thaumcraft Essentia 容器等复杂位置;匹配项同时在客户端高亮玩家周围地面上的 EntityItem 与当前 GUI 中所有满足条件的槽位。

主类 FindIt(com.gtnh.findit.FindIt)通过 @Mod(modid="findit", dependencies="required-after:NotEnoughItems;after:gregtech") 注册 mod。preInit 阶段:

  1. 注册 GTNHLib @Config 配置 FindItConfig;
  2. 按 Side 实例化 BlockFindService / ItemFindService(服务端版本 BlockFindService / ItemFindService,客户端版本 ClientBlockFindService / ClientItemFindService);
  3. 实例化 SearchCooldownService 用于服务端冷却限速;
  4. 按 Loader.isModLoaded(...) 条件注册若干第三方 mod 集成 provider(详见 FindItem 查找服务)。

源码包:com.gtnh.findit。本 mod 完全通过 FML IMessage + SimpleNetworkWrapper 客户端-服务端消息交换搜索请求与命中坐标。

热键列表

  • 搜索附近方块 - 默认 Y 键,在 NEI GUI 内悬停目标方块触发方块搜索并以红色高亮标记
  • 搜索附近库存物品 - 默认 T 键,在 NEI GUI 内悬停目标物品触发物品/NBT/GT 盖板/EnderIO 导管/背包/Essentia 多维匹配并高亮 GUI 槽位与地面 EntityItem

设定列表

  • FindItConfig - GTNHLib @Config 配置类,11 项全局开关:搜索半径、冷却、最大响应数、视角旋转、粒子/线框模式、物品搜索、GT 管道搜索、EnderIO 导管搜索、物品/方块高亮时长、物品高亮颜色、是否忽略空 stack
  • 方块搜索服务 - BlockFindService 抽象基类 + ClientBlockFindService 客户端实现;服务端按 Block+Meta 匹配 TileEntity 后用 BlockFoundResponse 回传坐标,客户端按配置选 BlockHighlighter 或 ParticlePosition 渲染
  • 物品搜索服务 - ItemFindService 抽象基类 + ClientItemFindService 客户端实现;服务端通过 IStackFilterProvider 插件链匹配 ItemStack/NBT/FluidStack/Aspect/GT 盖板/GT 盖板箱子/DraconicEvolution 放置物品/各类背包/Thaumcraft Essentia 容器;客户端同时高亮地面 EntityItem 与当前 GUI 中非玩家槽位
  • 搜索冷却服务 - SearchCooldownService,基于 WeakHashMap 的服务端每玩家 tick 计数器限速,配合 FindItConfig.SEARCH_COOLDOWN 防止 spam