• 欢迎来到Minecraft插件百科!
  • 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
  • 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289

GuillaumeVDN的插件文档/配置

来自Minecraft插件百科
Qsefthuopq讨论 | 贡献2020年11月21日 (六) 16:28的版本 脚本循环
跳转至: 导航搜索
GuillaumeVDN的插件文档
页面

GuillaumeVDN的插件文档 · 迁移

所有插件都有的常见内容

配置 · 杂项 · 关联

QuestCreator

基础内容 · 示例 · 详细特性 · 高级内容 · 关联

Gcore

Gcore通用配置

因为我的全部插件的通用功能都位于/plugins/GCore,比如MySQL标识符、插件语言、变体或粒子脚本,所以你需要了解一些配置设置或文件。一些通用文本也位于GCore的文本文件中。

YAML解析器

我制作了一个可读取和编写.yml文件的YAML解析器。该解析器较Spigot的解析器有所优化和区别。

其优点之一就是它可以在被重写时保留文件注释和配置顺序。它的加载也更加宽松,且拥有更多功能。

下面是一些有效的配置格式示例。

# 简单值
simple_value: 1534
simple_value: true
simple_value: false
simple_value: 
simple_value: '这是一个值'
simple_value: "&a这是一个值"

# 进阶值

simple_value: >
  &b这个值居然有效!
  &a虽然在配置里看起来是两行,但在游戏里会显示为一行。
simple_value: '这样也行
               不过不推荐这么用。
               最好使用上面 > 的格式'
# 列表值
list_value:
  - '&7真不错'
  - 第二行
list_value: [这个列表真不错,这是第二行]
list_value: |
  这个列表真不错
  这是第二行
  ! 注意,YAML的初始行为是将所有内容合并到一行中。
你可以用它轻松地编写列表。 !

# 部分
section_value:
  subvalue: 这里没有变化。
  subsection:
    list: [value1,value2]
# 如果插件需要重写文件,注释会被保留下来。
# 因此#开头的注释文字不会消失。

在这份文档中,如果只有一行值,我就会使用key: >格式,因为这个格式更好用(不需要在有颜色代码时加上。有列表值时我会使用key: |格式,原因同上。但你也可以使用常规的key: key: - - ...格式。

变体(材料/粒子/音效)

我的插件支持Minecraft1.7至最新版本,纵观Minecraft的版本历史,材料、音效或粒子都有所变化。出于内部兼容性,同时也为了方便我维护插件,我决定让这些变体可进行配置。

材料、音效和粒子的映射可在/plugins/GCore内的.yml文件内进行配置。

你应该不需要修改这些文件。GCore的config.yml中还包含了一些防止重新生成变体的设置。

materials.yml

# GCore的材料配置
DIAMOND_AXE: |
  >=1.13 DIAMOND_AXE --DAMAGEABLE
  ? DIAMOND_AXE --DAMAGEABLE
GOLDEN_AXE: |
  >=1.13 GOLDEN_AXE --DAMAGEABLE
  ? GOLD_AXE --DAMAGEABLE
WOODEN_HOE: |
  >=1.13 WOODEN_HOE --DAMAGEABLE
  ? WOOD_HOE --DAMAGEABLE
...

文件内的每个键都是你在其它地方会用到的名称(对大小写敏感,全部为大写)。下面的数据代表了对该键的实际映射。每个逻辑行必须遵循该格式:<比较表达式/版本> <内部名称>[:optional 数据值][:optional 耐久度] [额外可选值].

在上面的例子中,你可以在配置内使用WOODEN_HOE这个名称,它会在1.13+版本映射为WOODEN_HOE或在低版本中映射为WOOD_HOE

可选数据

在旧版中,你可以设定数据值。比如GREEN_WOOL在1.13及之前的旧版本中映射为数据13,配置如下:

GREEN_WOOL: |
  >=1.13 GREEN_WOOL
  ? WOOL:13

这里的?在未匹配上一行版本时使用(每行内容按顺序处理)

可选耐久度

你可能想要匹配特定耐久度的物品。你可以这样配置:

CUSTOM_MATERIAL: |
  ? DIAMOND_PICKAXE::15

你也可以像这样设置数据值和耐久度:DIAMOND_PICKAXE:1:15,这代表数据值为1耐久度为15的钻石镐。

额外材料

  • --DOOR 标记为门类型(比如在插件放置门时使用)
  • --TRAVERSABLE 标记为实体可通过的类型
  • --DAMAGEABLE 标记为可破坏的物品类型(工具或盔甲)

particles.yml

# GCore的粒子配置文件
EXPLOSION_NORMAL: |
  >=1.8 EXPLOSION_NORMAL
  ? explode
EXPLOSION_LARGE: |
  >=1.8 EXPLOSION_LARGE
  ? largeexplode
EXPLOSION_HUGE: |
  >=1.8 EXPLOSION_HUGE
  ? hugeexplosion
...

文件内的每个键都是你在其它地方会用到的名称(对大小写敏感,全部为大写)。下面的数据代表了对该键的实际映射。每个逻辑行必须遵循该格式:<比较表达式/版本> <内部名称> [额外可选值].

在上面的例子中,你可以在配置内使用EXPLOSION_HUGE这个名称,它会在1.8+版本映射为EXPLOSION_HUGE或在1.7版本映射为hugeexplosion

额外粒子

  • --COLORABLE 标记为可染色粒子
  • --MUSIC_NOTE 标记为音符

sounds.yml

# GCore的音效配置文件
ENCHANT_THORNS_HIT: |
  ? ENCHANT_THORNS_HIT
EVENT_RAID_HORN: |
  ? EVENT_RAID_HORN
GHAST_FIREBALL: |
  >=1.9 ENTITY_ENDERDRAGON_FIREBALL_EXPLODE
  ? GHAST_FIREBALL
...

文件内的每个键都是你在其它地方会用到的名称(对大小写敏感,全部为大写)。下面的数据代表了对该键的实际映射。每个逻辑行必须遵循该格式:<比较表达式/版本> <内部名称>.

在上面的例子中,你可以在配置内使用GHAST_FIREBALL这个名称,它会在1.9+版本映射为ENTITY_ENDERDRAGON_FIREBALL_EXPLODE或在1.7和1.8版本映射为GHAST_FIREBALL

一些通用配置

这些配置适用于我的所有插件内的全部配置。

物品

以下是可用于物品的全部设置。

基础设置:

type: DIAMOND_SWORD  # 物品材料名。这是唯一需要手动调整的设置。
                     # 这不需要精准匹配材料名
                     # 如果不是精确的材料名,插件会搜索匹配内部名称的材料。
                     # 你也可以在1.12及以下旧版本使用数字id
durability: 0  # 默认耐久度为0
amount: 16  # 默认值为1

# 你也可以设置非原版的NBT标签
nbt:
  SomeNbtTag: value
  AnotherTag:
    SubValue: 10
    NbtList: [value1,value2]

unbreakable: false
custom_model_data: 0  # 1.14+

enchantments:
  DAMAGE_ALL: 1
  # 附魔:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/enchantments/Enchantment.html

flags: []  # 值:HIDE_ATTRIBUTES、HIDE_DESTROYS、HIDE_ENCHANTS、HIDE_PLACED_ON、HIDE_POTION_EFFECTS、HIDE_UNBREAKABLE

name: >
  &6自定义物品名

lore: |
  &7自定义
  &7lore

具体元设置:

# 书的元数据
author: GuillaumeVDN
title: 奇书
generation: ORIGINAL  # 1.9+;值:ORIGINAL、COPY_OF_ORIGINAL、COPY_OF_COPY、TATTERED
pages: |
  这行显示第一页内容
  这行显示第二页内容

# 附魔存储元(比如附魔书)
stored_enchantments:
  DAMAGE_ALL: 1
  # 附魔:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/enchantments/Enchantment.html

# 烟花效果元(比如烟火之星)
effect:
  # …… 详见下方的烟花效果

# 烟花火箭元
effects:
  1:
    # …… 详见下方的烟花效果
  2:
    # …… 详见下方的烟花效果

# 皮革衣服元
color: red,green,blue

# 药水元
potion_type: NIGHT_VISION  # 1.9+;值:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionType.html
extra: EXTENDED  # 1.9+;值:EXTENDED、UPGRADED、NONE
color: red,green,blue  # 1.12+
custom_effects:
  1:
    # …… 详见下方的“药水效果”
  2:
    # …… 详见下方的“药水效果”

# 玩家头颅元
owner_id: 6833a1c9-95a5-4c79-bc1f-45341ec0ff40
owner_name: GuillaumeVDN
skin_data: ... # 编码皮肤数据(可通过mineskins获得,或通过游戏内的头颅导入)
skin_signature: ... # 编码皮肤签名(可通过mineskins获得,或通过游戏内的头颅导入)

# 旗帜元(1.8+)
base_color: YELLOW  # 1.13+;值:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/DyeColor.html
patterns:
  CROSS: BLACK
  TRIANGLES_BOTTOM: BLUE
  # 图案类型:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/banner/PatternType.html

# 刷怪蛋元(1.11或1.12)
spawned_type: CREEPER  # 值:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html

# 知识之书元(1.12+)
recipes: |
  minecraft:diamond_pickaxe
  minecraft:diamond_helmet

# 热带鱼桶元(1.13+)
color: BLUE  # 值:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/DyeColor.html
pattern_color: RED  # 值:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/DyeColor.html
pattern: FLOPPER  # 值:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/TropicalFish.Pattern.html

# 弩元(1.14+)
charged_projectiles:
  1:
    # 物品配置
  2:
    # 物品配置

# 迷之炖菜元(1.15+)
custom_effects:
  1:
    # …… 详见下方的“药水效果”
  2:
    # …… 详见下方的“药水效果”

烟花效果

type: CREEPER  # 值:BALL、BALL_LARGE、STAR、BURST、CREEPER
colors: |
  red,green,blue
  red,green,blue
fade_colors: |
  red,green,blue
  red,green,blue
flicker: true
trail: true

药水效果

type: INVISIBILITY  # 值:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionEffectType.html
duration: 1 MINUTE
amplifier: 0
ambient: false
particles: false  # 1.8+
icon: false  # 1.13+

物品匹配

以下是可用于物品匹配的全部设置:

item:
  # …… 物品配置(见下方内容)
goal: 100  # 必须拥有的物品数量
check: ExactSame  # 检测方式

可用检测方式:

  • ExactSame:物品必须完全匹配
  • SameBase:物品必须至少ID相同(但可以有更多附魔、名称或额外的NBT标签)

SameBase的变体有:

  • SameDurability:物品耐久度必须相同
  • NotMoreDamaged:物品耐久度不能低于一定值
  • NameContains:物品名必须包含特定字符
  • LoreContains:物品lore必须包含特定字符

你可以混合使用。全部可用设置:

  • ExactSame
  • SameBase(不检测耐久度)
  • SameBase_SameDurability
  • SameBase_NotMoreDamaged
  • SameBase_NameContains
  • SameBase_NameContains_SameDurability
  • SameBase_NameContains_NotMoreDamaged
  • SameBase_LoreContains
  • SameBase_LoreContains_SameDurability
  • SameBase_LoreContains_NotMoreDamaged
  • SameBase_NameContains_LoreContains
  • SameBase_NameContains_LoreContains_SameDurability
  • SameBase_NameContains_LoreContains_NotMoreDamaged

需要物品

以下是可用于“需要物品”的全部设置。

items:  # 匹配的物品列表
  a:
    # …… 物品匹配(见上方内容)
  b:
    # …… 物品匹配(见上方内容)

count: 1  # 玩家必须持有列表内的物品数
          # 如果设置为0,则玩家无需持有列表内的物品

in_hand: false  # 是否需要玩家手持物品
                # 如果设置为true,则无视物品数
in_hand_slot: 4  # 如果开启了in_hand,则玩家需要将物品放在快捷栏第几格

take: true  # 稍后拿走物品

error_message: >  # 如果玩家没有所需物品则显示该消息
  &c你需要物品!

提醒

以下是可用于提醒的全部设置:

# 消息
message: |
  &a发送给玩家
  &b的多行
  &d消息

# Actionbar
actionbar: >
  &b发送持续10秒的actionbar消息
actionbar_duration: 10 SECOND

# Bossbar
bossbar: >
  &b发送持续10秒的bossbar消息
bossbar_color: BLUE  # 值:BLUE、GREEN、PINK、PURPLE、RED、WHITE、YELLOW
bossbar_style: SOLID  # 值:SOLID、SEGMENTED_6、SEGMENTED_10、SEGMENTED_12、SEGMENTED_20
bossbar_flags: []  # 值:CREATE_FOG、DARKEN_SKY、PLAY_BOSS_MUSIC
bossbar_duration: 10 SECOND

# 标题
title: >
  &b发送标题
title_subtitle: >
  &b持续10秒
title_fade_in: 1 SECOND
title_duration: 8 SECOND
title_fade_out: 1 SECOND

# 音效
sound: AMBIENT_CAVE  # 值:sounds.yml
sound_volume: 1
sound_pitch: 1

相对位置

以下是可用于相对位置的全部设置:

horizontal_angle: 0.0  # 水平角;0.0为正向、180.0为反向
distance: 1.0   # 离基础位置的距离;这个值用于'horizontal_angle'所对方向
vertical_offset: 3.0 # Y轴偏移量

方块状态

这些元素可以让你自定义方块状态:

GUI类型

在你需要自定义GUI类型时会用到这些值:

  • CHEST_1_ROW
  • CHEST_2_ROW
  • CHEST_3_ROW
  • CHEST_4_ROW
  • CHEST_5_ROW
  • CHEST_6_ROW
  • DISPENSER
  • ANVIL
  • BEACON
  • BLAST_FURNACE
  • BREWING_STAND
  • CRAFTING
  • ENCHANTMENT
  • FURNACE
  • GRINDSTONE
  • HOPPER

持续时间

持续时间需遵循该格式:<amount of time> <time unit>

可用的时间单位有:

  • MILLISECOND|毫秒
  • TICK|刻
  • SECOND|秒
  • MINUTE|分
  • HOUR|时
  • DAY|天
  • WEEK|周
  • MONTH|月

粒子脚本

GCore包含“粒子脚本语言”功能,可以让你定义在一些插件中使用的粒子图案。

你可以在/plugins/GCore/particle_scripts/下对其进行配置,每个.txt文件就是一个脚本。

下面是一个脚本的实例:

# 增加Y值的同时每刻显示“emeralds”

set(cx, baseX + 0.5)
set(cz, baseZ + 0.5)
set(radius, 0.75)
set(y, baseY)

loop(angle, 0, 720, 15)                         # 使用可变角度从0到720进行15步循环,

    set(x, cx + radius * cos(angle))            # 计算x
    set(y, y + 0.015)                           # 计算y
    set(z, cz + radius * sin(angle))            # 计算z
    display(VILLAGER_HAPPY, x, y, z, 1)         # 显示
    wait_ticks(1)                               # 等待1刻

# 等待2秒后重启

wait_ticks(40)

如你所见,你可以使用注释:以 #开头的文字会被忽略,空行也会被忽略。

这是一个基于函数的脚本系统,像YAML一样缩进。你可以使用空格或表格(这里更推荐使用表格)。

变量

你可以使用在每一个脚本的每一行内使用变量。你可以使用函数定义自定义变量(见下文),你也可以使用默认变量:

  • baseX:基础位置的X轴
  • baseY:基础位置的Y轴
  • baseZ:基础位置的Z轴

函数列表

这里只有一些简单函数。

set(variable, value)

用于定义变量。第一个参数是变量名,第二个参数是变量值。值可以包含数学表达式和其它变量。

wait(ticks)

等待一定时间刻。

display(particle, x, y, z, count)

在特定位置显示粒子。

display(particle, x, y, z, count, note_color)

在特定位置显示粒子。这里的粒子是音符,note_color是0-24的数字。

display(particle, x, y, z, count, red, green, blue)

在特定位置显示粒子。这里的粒子是可染色粒子,可设置三种颜色:红绿蓝。

loop(temporaryvariable, beginvalue, endvalue, stepvalue)

循环指令。系统将创建一个含初始值的临时变量,然后在每次执行下面的指令后,将步长值加到该变量值上。当变量达到(或高于/低于)步值,循环就会停止。步值可以是负值,初始值可以高于结束值,这样会反向循环。

比如:

loop(count, 1, 10, 1)
    # 重复该代码10次
    # “count”变量将从1升到10
    # 只要有制表符/缩进,系统就会
    # 认为其在循环内

loop(count, 10, 1, -1)
    # 重复该代码10次
    # “count”变量将从10降到1

你也可以合并循环来实现更复杂的逻辑:

loop(a, 1, 10, 1)

    # 在这里执行操作
    # 更多代码

    loop(b, 1, 5, 1)

        # 在这里执行操作
        # 对'a'的每个值执行5次

脚本循环

我在页面顶部的第一个实例脚本中编写的最后一个指令——告诉系统等待40次“直到重启”,将取决于脚本在插件中的使用情况:有时,脚本只执行一次,有时会连续重启。最好在最后加上一个冷却重启的wait_ticks(x)函数。

位置

时间范围