# 💦 洒水器

让我们以 `sprinkler_1` 为例来配置洒水器的设置

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

**指定洒水器的类型**：\
`type` 参数定义洒水器为 `FURNITURE`，将其与基于方块的类型区分开来，并允许在放置时有更多的灵活性。

```yaml
# 洒水器的类型（BLOCK 或 FURNITURE）
type: FURNITURE
```

**选择喷洒模式并设置范围**：\
决定你的洒水器如何喷洒！`working-mode` 允许你设置喷洒模式：

* `1` 为方形模式
* `2` 为菱形模式（当前选择）
* `3` 为圆形模式 这为你的浇水策略增加了创意！

```yaml
# 喷洒模式：
# 1 = 方形, 2 = 菱形, 3 = 圆形
working-mode: 2
```

`range` 参数指定洒水器的覆盖范围。在此示例中，`1` 的范围覆盖一个紧凑的区域：

```yaml
# 洒水器的工作范围：
# □■□
# ■▼■
# □■□
range: 1
```

<figure><img src="https://content.gitbook.com/content/orsLN8iAxZurNZDMTgzR/blobs/ULId4tmR0RF5eqW1jieA/image.png" alt=""><figcaption><p>模式1</p></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/orsLN8iAxZurNZDMTgzR/blobs/v1o4S0YO5qtpY9PCJ07M/image.png" alt=""><figcaption><p>模式2</p></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/orsLN8iAxZurNZDMTgzR/blobs/LQzjZutfMIuCp7Sqqzhu/image.png" alt=""><figcaption><p>模式3</p></figcaption></figure>

**设置储水容量**：\
`storage` 参数决定了你的洒水器可以容纳多少水——在这个例子中是 `4`。这限制了洒水器在需要补水之前可以运行的时间。

```yaml
# 最大储水容量
storage: 4
```

**决定无限或有限的水供应**：\
将 `infinite` 设置为 `false`，洒水器有一个有限的水供应。如果你想要一个无限的洒水器，将其改为 `true`！

```yaml
# 表示洒水器是否有无限的水供应
infinite: false
```

**控制每次操作的水消耗**： `water` 和 `sprinkling` 参数决定每次喷洒循环中添加到种植盆的水量和消耗的水量，这里都设置为 `1` 以实现平衡的浇水。

```yaml
# 每次喷洒操作添加到种植盆的水量
water: 1
# 每次喷洒操作消耗的水量
sprinkling: 1
```

**洒水器的视觉表示**：\
使用 `3D-item` 和 `3D-item-with-water` 定义洒水器在干燥和有水状态下的外观。这个视觉提示通过反映洒水器的状态增强了游戏体验。

```yaml
# 洒水器的3D模型标识符
3D-item: sprinkler_1 # 无水状态
3D-item-with-water: sprinkler_1 # 有水状态
```

**可选的2D模型**：\
`2D-item` 是一个可选参数，适用于那些喜欢更简单的视觉表示或在某些场景中使用2D视图的人。

```yaml
# 可选的2D物品模型标识符
2D-item: sprinkler_1_item
```

**种植种植盆的白名单**：\
通过将种植盆添加到 `pot-whitelist` 确保你的洒水器仅在指定的种植盆中工作。示例允许默认的种植盆类型。

```yaml
# 洒水器可以工作的种植种植盆的列表
pot-whitelist:
  - default
```

**定义补水方法**：\
在 `fill-method` 下，你可以创意地定义洒水器的补水方式。例如，使用 `WATER_BUCKET` 返回一个空的 `BUCKET`，并添加 `3` 单位的水，而使用 `POTION` 返回一个 `GLASS_BOTTLE` 并添加 `1` 单位的水。

```yaml
# 洒水器补水的方法
fill-method:
  # 自定义补水方法1配置
  method_1:
    # 用于补水的物品
    item: WATER_BUCKET
    # 补水后返回的物品（可选）
    return: BUCKET
    # 此方法添加的水量
    amount: 3
  # 自定义补水方法2配置
  method_2:
    item: POTION
    return: GLASS_BOTTLE
    amount: 1
```

**自定义水位显示**：\
`water-bar` 部分允许你使用符号创建独特的水位表示。调整这些字符以匹配你的游戏风格或偏好。

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

**设置事件**：\
在 `events` 下，你可以配置洒水器如何响应不同的玩家操作。可用事件：`break`/`place`/`interact`/`work`/`add_water`/`full`/`reach_limit`

```yaml
# 各种互动和动作的事件设置
events:
  place:
    # 放置洒水器时执行的动作
    swing_hand_action:
      type: swing-hand
      value: true
    # 放置洒水器时触发的音效
    sound_action:
      type: sound
      value:
        source: player
        key: minecraft:block.bone_block.place
        volume: 1
        pitch: 1
  interact:
    # 互动时执行的条件动作
    force_work_action:
      type: conditional
      value:
        conditions:
          requirement_1:
            type: sneak
            value: true
        actions:
          action_1:
            type: force-tick
    # 互动时显示的全息图动作
    hologram_action:
      type: hologram
      value:
        text: '<font:customcrops:default>{water_bar}</font>'
        duration: 40
        x: 0.5
        y: -0.3
        z: 0.5
        visible-to-all: false
  work:
    # 洒水器工作时显示的视觉效果
    fake_item_action:
      type: fake-item
      value:
        item: water_effect
        duration: 100
        x: 0.5
        y: 0.4
        z: 0.5
        visible-to-all: true
  add_water:
    # 添加水时显示的粒子效果
    particle_action:
      type: particle
      value:
        particle: WATER_SPLASH
        x: 0.5
        y: 0.7
        z: 0.5
        count: 5
    # 添加水时播放的音效
    sound_action:
      type: sound
      value:
        key: "minecraft:item.bucket.empty"
        source: 'player'
        volume: 1
        pitch: 1
```

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

```yaml
requirements:
  use: {}
  place: {}
  break:
    requirement_1:
      type: permission
      value: xxx.xxx
```
