# 🪴 种植盆

让我们以 `default` 为例来配置种植盆的设置

**你的种植盆的唯一标识符**: \
首先，给你的种植盆命名一个唯一标识符，例如 `default`。这使得以后引用和自定义变得容易。

**设置最大储水容量**: \
使用 `max-water-storage` 来定义你的种植盆可以储存多少水。例如，将其设置为 `5` 意味着种植盆最多可以容纳五个单位的水。这确保了你的植物在两次浇水之间有足够的水分。

```yaml
# 种植盆的最大储水容量
max-water-storage: 5
```

**自定义种植盆的基本外观**: \
`base` 部分允许你在不同条件下定义种植盆的视觉外观:

* `dry`: 种植盆干燥时使用的模型ID，显示需要浇水。
* `wet`: 种植盆湿润时使用的模型ID。 这些设置为玩家提供了视觉提示，使他们一眼就能看出种植盆是否需要浇水。

```yaml
# 种植盆外观和行为的基本设置
base:
  # 种植盆外观的模型
  dry: dry_pot  # 种植盆干燥时的模型ID
  wet: wet_pot  # 种植盆湿润时的模型ID
```

**控制种植盆与环境的互动**:

* `absorb-rainwater`: 如果你希望种植盆自动吸收雨水，保持湿润而无需手动浇水，请设置为 `true`。
* `absorb-nearby-water`: 设置为 `false` 以防止种植盆从附近的水源吸收水分。此设置确保你的种植盆只在预期时得到浇水。

```yaml
# 确定种植盆在下雨时是否吸收雨水
absorb-rainwater: true
# 确定附近水源的水是否能湿润种植盆
absorb-nearby-water: false
```

**控制种植盆刻模式**

```yaml
# 有时你可能配置了多个种植盆，
# 并且你希望这些种植盆有不同的刻模式。
# 你可以在config.yml中将刻模式改为ALL，
# 然后在这里单独配置。
ignore-random-tick: false
ignore-scheduled-tick: true
```

**管理肥料的应用**: \
`max-fertilizers` 参数控制一次可以施加到种植盆上的肥料单位数。将其设置为 `1` 限制为单次应用，帮助防止过度施肥可能对植物造成的伤害。目前建议保持为 `1`，因为全息图最多会同时显示一个肥料。

```yaml
# 可以施加到种植盆上的最大肥料数量
max-fertilizers: 1
```

**为施肥后的种植盆定义自定义外观**: \
在 `fertilized-pots` 下，你可以根据不同的肥料效果设置种植盆的独特模型。每种类型（例如 `quality`、`yield_increase`、`variation`、`soil_retain`、`speed_grow`）都可以有不同的 `dry` 和 `wet` 外观。这种自定义增加了深度，视觉上反映了施加到种植盆上的不同肥料的好处。

```yaml
# 不同肥料效果的种植盆自定义外观
fertilized-pots:
  quality:
    dry: dry_pot  # 'quality' 肥料效果下干燥种植盆的模型ID
    wet: wet_pot  # 'quality' 肥料效果下湿润种植盆的模型ID
  yield_increase:
    dry: dry_pot  # 'yield increase' 肥料效果下干燥种植盆的模型ID
    wet: wet_pot  # 'yield increase' 肥料效果下湿润种植盆的模型ID
  variation:
    dry: dry_pot  # 'variation' 肥料效果下干燥种植盆的模型ID
    wet: wet_pot  # 'variation' 肥料效果下湿润种植盆的模型ID
  soil_retain:
    dry: dry_pot  # 'soil retain' 肥料效果下干燥种植盆的模型ID
    wet: wet_pot  # 'soil retain' 肥料效果下湿润种植盆的模型ID
  speed_grow:
    dry: dry_pot  # 'speed grow' 肥料效果下干燥种植盆的模型ID
    wet: wet_pot  # 'speed grow' 肥料效果下湿润种植盆的模型ID
```

**配置水的补充方法**: \
`fill-method` 部分允许你定义各种补充种植盆水的方法:

* **方法 1**: 使用 `WATER_BUCKET` 添加 `3` 单位的水。补充后，玩家会收到一个空的 `BUCKET`。
* **方法 2**: 使用 `POTION` 添加 `1` 单位的水，并返回一个 `GLASS_BOTTLE`。 两种方法都包括播放声音（`minecraft:item.bucket.fill` 或 `minecraft:item.bottle.fill`）和手部挥动动画，以在补充过程中提供反馈。

```yaml
# 可用于给洒水壶补水的方法
fill-method:
  # 可自定义的补水方法 1
  method_1:
    # 补水所需的物品
    item: WATER_BUCKET
    # 补水后返回的物品（可选）
    return: BUCKET
    # 使用此方法添加的水量
    amount: 3
    actions:
      # 补水时播放的音效
      sound_action:
        type: sound
        value:
          source: player
          key: minecraft:item.bucket.fill
          volume: 1
          pitch: 1
      # 补水时的手部挥动动作
      swing_hand_action:
        type: swing-hand
        value: true
  # 可自定义的补水方法 2
  method_2:
    item: POTION
    return: GLASS_BOTTLE
    amount: 1
    actions:
      sound_action:
        type: sound
        value:
          source: player
          key: minecraft:item.bottle.fill
          volume: 1
          pitch: 1
      swing_hand_action:
        type: swing-hand
        value: true
```

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

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

**设置事件**: \
`events` 部分是游戏真正发挥作用的地方。在这里，你可以定义游戏如何响应与种植盆的不同互动。可用事件: `place`/`break`/`interact`/`tick`/`reach_limitation`/`add_water`/`full`/`max_fertilizers`

```yaml
# 处理互动和效果的事件设置
events:
  add_water:
    particle_action:
      type: particle
      value:
        particle: WATER_SPLASH  # 添加水时的粒子效果
        x: 0.5
        y: 1.3
        z: 0.5
        count: 5
        offset-x: 0.3
        offset-z: 0.3
  interact:
    # 持有指定物品时显示全息图的动作
    conditional_action:
      type: conditional
      value:
        conditions:
          requirement_1:
            type: item-in-hand
            value:
              amount: 1
              item: soil_surveyor
        actions:
          # 如果存在肥料，则显示肥料状态的全息图
          conditional_fertilizer_action:
            type: conditional
            value:
              conditions:
                requirement_1:
                  type: fertilizer
                  value:
                    has: true
              actions:
                fertilizer_hologram:
                  type: hologram
                  value:
                    duration: 20  # 全息图可见的持续时间
                    text: '<font:customcrops:default>{icon}</font> {left_times}/{max_times}'
                    apply-correction: true
                    x: 0.5
                    y: 0.83
                    z: 0.5
                    visible-to-all: false
          # 显示种植盆当前水位的全息图
          water_hologram:
            type: hologram
            value:
              duration: 20  # 全息图可见的持续时间
              text: '<font:customcrops:default>{water_bar}</font>'
              apply-correction: true
              x: 0.5
              y: 0.6
              z: 0.5
              visible-to-all: false
```

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

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