跳到正文
烈焰甘蔗Wiki

Cloud in a Bottle

云瓶物品,投掷后在目标位置生成云方块。

基本属性

属性 值
父类 BaseItem
注册名 chisel:cloudinabottle
本地化名 cloudBottle(ItemCloudInABottle.java:13)
最大堆叠 64(未调用 setMaxStackSize,取 Item 默认值)
耐久 无(未调用 setMaxDamage)
使用方式 右键投掷

已订正(注册名取错来源):原文"注册名 | cloudBottle"——错误。 cloudBottle 是 setUnlocalizedName("cloudBottle") 设的本地化名 (ItemCloudInABottle.java:13),不是注册名。真正的注册名是 chisel:cloudinabottle,来自 GameRegistry.registerItem(itemCloudInABottle, "cloudinabottle") (Features.java:746)。证据:Features.java:746、ItemCloudInABottle.java:13。

功能

onItemRightClick 行为:

  1. 消耗 1 个物品(非创造模式)
  2. 播放 “random.bow” 音效
  3. 生成 EntityCloudInABottle 实体

投掷实体

EntityCloudInABottle (EntityThrowable):

  • 碰撞时调用 generate(world, rand, x, y, z, 40)
  • 生成 40 个云方块
  • 使用随机扩散算法分布

云生成算法

  • 9 个方向向量定义扩散模式
  • 循环生成方块直到达到数量或无法生成

音效

  • 投掷:random.bow,音量 0.5F,音调 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F) ——音调是随机值,不是固定 0.4F 偏移(ItemCloudInABottle.java:24-25)

粒子效果

命中时服务端调用 worldObj.playAuxSFX(2002, x, y, z, 2) 播放粒子特效 (EntityCloudInABottle.java:50-51)。

注意 onImpact 开头有 if (worldObj.isRemote) return; (EntityCloudInABottle.java:28),故坐标修正、云生成、粒子全部在服务端执行, 客户端直接返回。

浏览全部模组