# 🚰 洒水壶

让我们以 `watering_can_1` 为例来配置洒水壶的设置

**你的洒水壶的唯一标识符**：\
首先，给你的洒水壶命名一个唯一标识符，例如 `watering_can_1`。这使得以后引用和自定义变得容易。

**分配唯一标识符**：\
首先使用 ItemsAdder 或 Oraxen 为你的洒水壶设置一个唯一的 `item` 标识符。例如，`watering_can_1` 唯一标识了这个特定的洒水壶，使其在游戏中易于引用。

```yaml
# ItemsAdder/Oraxen 的唯一物品标识符
item: watering_can_1
```

**自定义洒水壶的外观**：\
你可以选择自定义洒水壶在不同水位时的外观。取消注释 `appearance` 部分并分配 `CustomModelData` 值，以便在视觉上区分空的、部分填充的或完全填充的洒水壶。这是为玩家提供洒水壶状态的视觉反馈的好方法。

```yaml
# 基于水容量的洒水壶外观的可选设置
# 如果希望为不同水位设置不同的外观，请取消注释并自定义 CustomModelData
#appearance:
#  0: 1000 # 空壶的 CustomModelData
#  1: 1001 # 部分填充壶的 CustomModelData
#  2: 1002 # 更多填充壶的 CustomModelData
#  3: 1003 # 完全填充壶的 CustomModelData
```

**设置水容量**：\
使用 `capacity` 参数定义你的洒水壶可以容纳的最大水量。这里设置为 `3`，意味着洒水壶一次最多可以存储三个单位的水。这个容量控制了洒水壶在需要补充之前可以使用的时间。

```yaml
# 洒水壶可以存储的最大水量
capacity: 3
```

**确定每次使用的水量**：\
`water` 参数指定每次使用洒水壶时分配的水量。将其设置为 `1` 意味着每次使用洒水壶将消耗一个单位的水，并向种植盆添加 `1` 单位的水。

```yaml
# 添加到种植盆的水量
water: 1
```

**定义有效的浇水范围**：\
通过设置 `effective-range` 参数来自定义使用时水的覆盖范围。`width` 和 `length` 定义了玩家周围的一个矩形区域，在这个区域内水将有效。在这种情况下，是玩家正前方的 1x1 区域。

```yaml
# 洒水壶使用时的有效范围
effective-range:
  width: 1  # 受影响区域的宽度
  length: 1 # 受影响区域的长度
```

**设置补水方法**：\
通过配置 `fill-method` 定义玩家如何补充洒水壶的水。在 `method_1` 中，玩家可以通过与 `WATER` 方块（如水源或井）互动来补充洒水壶。`amount` 指定每次互动添加 `1` 单位的水。这一特性允许你在游戏世界中创建互动水源。

```yaml
fill-method:
  # 自定义补水方法配置
  method_1:
    target: WATER  # 提供水的方块或物体（例如，minecraft:block_id）
    amount: 1      # 每次补水添加的水量
```

**指定兼容的种植种植盆**：\
使用 `pot-whitelist` 指定洒水壶可以使用的种植种植盆类型。通过列出 `default`，你确保洒水壶与基本种植盆类型兼容，但你可以添加更多种植盆类型以增加多样性。

```yaml
# 指定洒水壶可以使用的种植种植盆类型
pot-whitelist:
  - default  # 允许的默认种植盆类型
```

**允许与洒水器互动**：\
如果你希望你的洒水壶用于填充洒水器，请在 `sprinkler-whitelist` 下列出兼容的洒水器ID。在此配置中，洒水壶可以填充 `sprinkler_1`、`sprinkler_2` 和 `sprinkler_3`，扩展了其功能。

```yaml
# 允许洒水壶填充兼容的洒水器
sprinkler-whitelist:
  - sprinkler_1
  - sprinkler_2
  - sprinkler_3
```

**启用动态描述**：\
动态描述通过显示洒水壶状态的实时信息增加了一层沉浸感。通过启用 `dynamic-lore`，描述将根据水位变化。使用 `{water_bar}` 等占位符来直观地表示水位，使用 `{current}` 表示当前水量，使用 `{storage}` 表示最大容量。这确保了玩家始终能一眼看出洒水壶的状态。

```yaml
# 洒水壶描述的动态描述设置
dynamic-lore:
  enable: true  # 启用或禁用基于水位的动态描述
  # 将动态显示的描述文本
  # 可用占位符：
  # {water_bar}：水位的视觉表示
  # {current}：当前水量
  # {storage}：最大储水容量
  lore:
    - '<italic:false><white><font:customcrops:default>{water_bar}</font>'
    - '<italic:false><gray>右键点击水源以补充洒水壶的水。'
```

**自定义水位显示条**：\
`water-bar` 配置允许你使用自定义字符创建独特的水位指示器。此显示提供了一种快速且视觉上吸引人的方式来检查洒水壶中剩余的水量。

```yaml
# 水位显示条的配置
water-bar:
  left: '뀂'   # 水位条的左端
  full: '뀁뀃' # 表示水位满的段
  empty: '뀁뀄' # 表示水位空的段
  right: '뀁뀅' # 水位条的右端
```

**设置事件**：\
`events` 部分是游戏真正发挥作用的地方。在这里，你可以定义游戏如何响应与洒水壶的不同互动。可用事件：`full`/`add_water`/`no_water`/`consume_water`/`wrong_pot`/`wrong_sprinkler`

```yaml
# 处理与洒水壶相关的各种动作的事件设置
events:
  # 当洒水壶中没有水时触发的事件
  no_water:
    sound_action:
      type: sound
      value:
        key: "minecraft:item.bundle.insert"  # 播放的声音
        source: 'player'                     # 声音来源
        volume: 1
        pitch: 1
    actionbar_action:
      type: actionbar
      value: '<red><bold>[X] 水已用完'  # 在动作栏显示的消息
  # 当洒水壶中的水被消耗时触发的事件
  consume_water:
    sound_action:
      type: sound
      value:
        key: "minecraft:block.water.ambient"  # 水被消耗时的声音
        source: 'player'
        volume: 1
        pitch: 1
    actionbar_action:
      type: actionbar
      value: '<font:customcrops:default>{water_bar}</font>' # 显示更新后的水位条
  # 当洒水壶中添加水时触发的事件
  add_water:
    particle_action:
      type: particle
      value:
        particle: WATER_SPLASH  # 添加水时的粒子效果
        x: 0.5
        y: 1.3
        z: 0.5
        count: 5
    sound_action:
      type: sound
      value:
        key: "minecraft:item.bucket.empty"  # 补水时播放的声音
        source: 'player'
        volume: 1
        pitch: 1
    actionbar_action:
      type: actionbar
      value: '<font:customcrops:default>{water_bar}</font>' # 更新水位条显示
```

**设置要求**：\
在 `requirements` 下，你可以配置玩家在使用洒水壶之前必须满足的条件。

```yaml
requirements:
  requirement_1:
    type: permission
    value: xxx.xxx
```
