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

GuillaumeVDN的插件文档/配置:修订间差异

来自Minecraft插件百科
跳转到导航 跳转到搜索
(创建页面,内容为“{{模板:VDNBox}} =Gcore= =YAML解析器= =变体(材料/粒子/音效)= ==materials.yml == ==particles.yml == ==sounds.yml== =一些通用配置= =粒子脚本=…”)
 
 
(未显示同一用户的11个中间版本)
第1行: 第1行:
{{模板:VDNBox}}
{{模板:VDNBox}}
=Gcore=
=Gcore=
==Gcore通用配置==
因为我的全部插件的通用功能都位于/plugins/GCore,比如MySQL标识符、插件语言、变体或粒子脚本,所以你需要了解一些配置设置或文件。一些通用文本也位于GCore的文本文件中。
=YAML解析器=
=YAML解析器=
我制作了一个可读取和编写.yml文件的YAML解析器。该解析器较Spigot的解析器有所优化和区别。
其优点之一就是它可以在被重写时保留文件注释和配置顺序。它的加载也更加宽松,且拥有更多功能。
下面是一些有效的配置格式示例。
<source lang="yaml"># 简单值
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]
# 如果插件需要重写文件,注释会被保留下来。
# 因此#开头的注释文字不会消失。</source>
'''在这份文档中,如果只有一行值,我就会使用<code>key: &gt;</code>格式,因为这个格式更好用(不需要在有颜色代码时加上<code>''</code>。有列表值时我会使用<code>key: |</code>格式,原因同上。但你也可以使用常规的<code>key: ''</code>和<code>key: - '' - '' ...</code>格式。'''
=变体(材料/粒子/音效)=
=变体(材料/粒子/音效)=
==materials.yml ==
我的插件支持Minecraft1.7至最新版本,纵观Minecraft的版本历史,材料、音效或粒子都有所变化。出于内部兼容性,同时也为了方便我维护插件,我决定让这些变体可进行配置。
==particles.yml ==
 
==sounds.yml==
材料、音效和粒子的映射可在<code>/plugins/GCore</code>内的.yml文件内进行配置。
=一些通用配置=
 
你应该不需要修改这些文件。GCore的<code>config.yml</code>中还包含了一些防止重新生成变体的设置。
 
== materials.yml ==
 
<source lang="yaml"># 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
...</source>
文件内的每个键都是你在其它地方会用到的名称(对大小写敏感,全部为大写)。下面的数据代表了对该键的实际映射。每个逻辑行必须遵循该格式:<code>&lt;比较表达式/版本&gt; &lt;内部名称&gt;[:optional 数据值][:optional 耐久度] [额外可选值]</code>.
 
在上面的例子中,你可以在配置内使用<code>WOODEN_HOE</code>这个名称,它会在1.13+版本映射为<code>WOODEN_HOE</code>或在低版本中映射为<code>WOOD_HOE</code>。
 
=== 可选数据 ===
 
在旧版中,你可以设定数据值。比如<code>GREEN_WOOL</code>在1.13及之前的旧版本中映射为数据13,配置如下:
 
<source lang="yaml">GREEN_WOOL: |
  >=1.13 GREEN_WOOL
  ? WOOL:13</source>
这里的<code>?</code>在未匹配上一行版本时使用(每行内容按顺序处理)
 
=== 可选耐久度 ===
 
你可能想要匹配特定耐久度的物品。你可以这样配置:
<source lang="yaml">CUSTOM_MATERIAL: |
  ? DIAMOND_PICKAXE::15</source>
你也可以像这样设置数据值和耐久度:<code>DIAMOND_PICKAXE:1:15</code>,这代表数据值为1耐久度为15的钻石镐。
 
=== 额外材料 ===
* <code>--DOOR</code> 标记为门类型(比如在插件放置门时使用)
* <code>--TRAVERSABLE</code> 标记为实体可通过的类型
* <code>--DAMAGEABLE</code> 标记为可破坏的物品类型(工具或盔甲)
== particles.yml ==
<source lang="yaml"># GCore的粒子配置文件
EXPLOSION_NORMAL: |
  >=1.8 EXPLOSION_NORMAL
  ? explode
EXPLOSION_LARGE: |
  >=1.8 EXPLOSION_LARGE
  ? largeexplode
EXPLOSION_HUGE: |
  >=1.8 EXPLOSION_HUGE
  ? hugeexplosion
...</source>
文件内的每个键都是你在其它地方会用到的名称(对大小写敏感,全部为大写)。下面的数据代表了对该键的实际映射。每个逻辑行必须遵循该格式:<code>&lt;比较表达式/版本&gt; &lt;内部名称&gt; [额外可选值]</code>.
 
在上面的例子中,你可以在配置内使用<code>EXPLOSION_HUGE</code>这个名称,它会在1.8+版本映射为<code>EXPLOSION_HUGE</code>或在1.7版本映射为<code>hugeexplosion</code>。
 
=== 额外粒子 ===
 
* <code>--COLORABLE</code> 标记为可染色粒子
* <code>--MUSIC_NOTE</code> 标记为音符
 
== sounds.yml ==
<source lang="yaml"># GCore的音效配置文件
ENCHANT_THORNS_HIT: |
  ? ENCHANT_THORNS_HIT
EVENT_RAID_HORN: |
  ? EVENT_RAID_HORN
GHAST_FIREBALL: |
  >=1.9 ENTITY_ENDERDRAGON_FIREBALL_EXPLODE
  ? GHAST_FIREBALL
...</source>
文件内的每个键都是你在其它地方会用到的名称(对大小写敏感,全部为大写)。下面的数据代表了对该键的实际映射。每个逻辑行必须遵循该格式:<code>&lt;比较表达式/版本&gt; &lt;内部名称&gt;</code>.
 
在上面的例子中,你可以在配置内使用<code>GHAST_FIREBALL</code>这个名称,它会在1.9+版本映射为<code>ENTITY_ENDERDRAGON_FIREBALL_EXPLODE</code>或在1.7和1.8版本映射为<code>GHAST_FIREBALL</code>。
 
=通用配置=
这些配置适用于我的所有插件内的全部配置。
 
== 物品 ==
 
以下是可用于物品的全部设置。
 
基础设置:
 
<source lang="yaml">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</source>
具体元设置:
<source lang="yaml"># 书的元数据
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:
    # …… 详见下方的“药水效果”</source>
== 烟花效果 ==
<source lang="yaml">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</source>
== 药水效果 ==
 
<source lang="yaml">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+</source>
== 物品匹配 ==
 
以下是可用于物品匹配的全部设置:
<source lang="yaml">item:
  # …… 物品配置(见下方内容)
goal: 100  # 必须拥有的物品数量
check: ExactSame  # 检测方式</source>
可用检测方式:
* <code>ExactSame</code>:物品必须完全匹配
* <code>SameBase</code>:物品必须至少ID相同(但可以有更多附魔、名称或额外的NBT标签)
 
<code>SameBase</code>的变体有:
* <code>SameDurability</code>:物品耐久度必须相同
* <code>NotMoreDamaged</code>:物品耐久度不能低于一定值
* <code>NameContains</code>:物品名必须包含特定字符
* <code>LoreContains</code>:物品lore必须包含特定字符
 
你可以混合使用。全部可用设置:
 
* <code>ExactSame</code>
* <code>SameBase</code>(不检测耐久度)
* <code>SameBase_SameDurability</code>
* <code>SameBase_NotMoreDamaged</code>
* <code>SameBase_NameContains</code>
* <code>SameBase_NameContains_SameDurability</code>
* <code>SameBase_NameContains_NotMoreDamaged</code>
* <code>SameBase_LoreContains</code>
* <code>SameBase_LoreContains_SameDurability</code>
* <code>SameBase_LoreContains_NotMoreDamaged</code>
* <code>SameBase_NameContains_LoreContains</code>
* <code>SameBase_NameContains_LoreContains_SameDurability</code>
* <code>SameBase_NameContains_LoreContains_NotMoreDamaged</code>
 
== 需要物品 ==
 
以下是可用于“需要物品”的全部设置。
<source lang="yaml">items:  # 匹配的物品列表
  a:
    # …… 物品匹配(见上方内容)
  b:
    # …… 物品匹配(见上方内容)
 
count: 1  # 玩家必须持有列表内的物品数
          # 如果设置为0,则玩家无需持有列表内的物品
 
in_hand: false  # 是否需要玩家手持物品
                # 如果设置为true,则无视物品数
in_hand_slot: 4  # 如果开启了in_hand,则玩家需要将物品放在快捷栏第几格
 
take: true  # 稍后拿走物品
 
error_message: >  # 如果玩家没有所需物品则显示该消息
  &c你需要物品!</source>
== 提醒 ==
以下是可用于提醒的全部设置:
<source lang="yaml"># 消息
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</source>
== 相对位置 ==
以下是可用于相对位置的全部设置:
<source lang="yaml">horizontal_angle: 0.0  # 水平角;0.0为正向、180.0为反向
distance: 1.0  # 离基础位置的距离;这个值用于'horizontal_angle'所对方向
vertical_offset: 3.0 # Y轴偏移量</source>
== 方块状态 ==
 
这些元素可以让你自定义方块状态:
 
* <code>AGE [数字]</code>
* <code>ATTACHED [布尔值]</code>
* <code>AXIS [轴]</code>:[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Axis.html 可在这里查看全部值]
* <code>BISECTED_HALF [half]</code>:[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/data/Bisected.Half.html 可在这里查看全部值]
* <code>FACING [朝向]</code>:[[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/BlockFace.html 可在这里查看全部值]]
* <code>FACING_MULTIPLE [朝向]</code>:[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/BlockFace.html 可在这里查看全部值]
* <code>HONEY_LEVEL [数字]</code>
* <code>LIT [布尔值]</code>
* <code>OPENED [布尔值]</code>
* <code>POWER [数字]</code>
* <code>POWERED [布尔值]</code>
* <code>RAIL_SHAPE [铁轨朝向]</code>:[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/data/Rail.Shape.html 可在这里查看全部值]
* <code>ROTATION [朝向]</code>:[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/BlockFace.html 可在这里查看全部值]
* <code>SNOWY [布尔值]</code>
* <code>WATER_LEVEL [数字]</code>
* <code>WATERLOGGED [布尔值]</code>
 
== GUI类型 ==
 
在你需要自定义GUI类型时会用到这些值:
 
* <code>CHEST_1_ROW</code>
* <code>CHEST_2_ROW</code>
* <code>CHEST_3_ROW</code>
* <code>CHEST_4_ROW</code>
* <code>CHEST_5_ROW</code>
* <code>CHEST_6_ROW</code>
* <code>DISPENSER</code>
* <code>ANVIL</code>
* <code>BEACON</code>
* <code>BLAST_FURNACE</code>
* <code>BREWING_STAND</code>
* <code>CRAFTING</code>
* <code>ENCHANTMENT</code>
* <code>FURNACE</code>
* <code>GRINDSTONE</code>
* <code>HOPPER</code>
 
== 持续时间 ==
 
持续时间需遵循该格式:<code>&lt;amount of time&gt; &lt;time unit&gt;</code>。
 
可用的时间单位有:
 
* <code>MILLISECOND|毫秒</code>
* <code>TICK|刻</code>
* <code>SECOND|秒</code>
* <code>MINUTE|分</code>
* <code>HOUR|时</code>
* <code>DAY|天</code>
* <code>WEEK|周</code>
* <code>MONTH|月</code>
 
=粒子脚本=
=粒子脚本=
GCore包含“粒子脚本语言”功能,可以让你定义在一些插件中使用的粒子图案。
你可以在<code>/plugins/GCore/particle_scripts/</code>下对其进行配置,每个.txt文件就是一个脚本。
下面是一个脚本的实例:
<source lang="yaml"># 增加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)</source>
如你所见,你可以使用注释:以 <code>#</code>开头的文字会被忽略,空行也会被忽略。
这是一个基于函数的脚本系统,像YAML一样缩进。你可以使用空格或表格(这里更推荐使用表格)。
== 变量 ==
你可以使用在每一个脚本的每一行内使用变量。你可以使用函数定义自定义变量(见下文),你也可以使用默认变量:
* <code>baseX</code>:基础位置的X轴
* <code>baseY</code>:基础位置的Y轴
* <code>baseZ</code>:基础位置的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(temporary_variable, begin_value, end_value, step_value) ===
循环指令。系统将创建一个含初始值的临时变量,然后在每次执行下面的指令后,将步长值加到该变量值上。当变量达到(或高于/低于)步值,循环就会停止。步值可以是负值,初始值可以高于结束值,这样会反向循环。
比如:
<pre class="">loop(count, 1, 10, 1)
    # 重复该代码10次
    # “count”变量将从1升到10
    # 只要有制表符/缩进,系统就会
    # 认为其在循环内
loop(count, 10, 1, -1)
    # 重复该代码10次
    # “count”变量将从10降到1</pre>
你也可以合并循环来实现更复杂的逻辑:
<pre class="">loop(a, 1, 10, 1)
    # 在这里执行操作
    # 更多代码
    loop(b, 1, 5, 1)
        # 在这里执行操作
        # 对'a'的每个值执行5次</pre>
== 脚本循环 ==
我在页面顶部的第一个实例脚本中编写的最后一个指令——告诉系统等待40次“直到重启”,将取决于脚本在插件中的使用情况:有时,脚本只执行一次,有时会连续重启。最好在最后加上一个冷却重启的<code>wait_ticks(x)</code>函数。
=位置=
=位置=
以下是可用于配置内的全部位置类型。
如果位置可以“find random”,则可计算出随机位置(在一些插件内很有用)。
如果位置可以“find closest”,则计算出离玩家最近的位置(在一些插件内很有用)。
如果位置可以“fill”,则计算出可填充方块的位置(在一些插件内很有用)。
== 普通位置类型 ==
=== NONE ===
无类型位置(用于内部)。
=== WORLD ===
在特定世界内 /<code>can find closest</code>
<source lang='yaml'>world: the_world</source>
=== BIOMES ===
在特定群系内
<source lang='yaml'>biomes: [JUNGLE,JUNGLE_EDGE,JUNGLE_HILLS]  # 值:<nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/Biome.html</nowiki></source>
=== SINGLE ===
特定位置 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code>
<source lang='yaml'>type: SINGLE
location: world,x,y,z
point_tolerance: COORDS  # 检查一个位置是否与该位置匹配时应用的点容差。
                          # 值: COORDS (匹配坐标), STRICT (distance <= 0.75), REGULAR (distance <= 1.5), LENIENT (distance <= 2.25)</source>
=== AREA_INSIDE ===
在区域内 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code>
<source lang='yaml'>type: AREA_INSIDE
bound1: world,x,y,z
bound2: world,x,y,z</source>
=== AREA_OUTSIDE ===
在区域外 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code> (区域轮廓)
<source lang='yaml'>type: AREA_OUTSIDE
bound1: world,x,y,z
bound2: world,x,y,z</source>
=== SPHERE_INSIDE ===
在球体内 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code>
<source lang='yaml'>type: SPHERE_INSIDE
center: world,x,y,z
radius: 5.0</source>
=== SPHERE_OUTSIDE ===
在球体外 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code> (球体轮廓)
<source lang='yaml'>type: SPHERE_OUTSIDE
center: world,x,y,z
radius: 5.0</source>
=== CYLINDER_INSIDE ===
在圆柱内 /<code>can find random</code> /<code>can find closest</code>
<source lang='yaml'>type: SPHERE_OUTSIDE
center: world,x,y,z  # 圆柱中心 (忽略Y轴 )
radius: 5.0</source>
=== CYLINDER_OUTSIDE ===
在圆柱外 /<code>can find random</code> /<code>can find closest</code>
<source lang='yaml'>type: CYLINDER_OUTSIDE
center: world,x,y,z  # 圆柱中心 (忽略Y轴 )
radius: 5.0</source>
== 玩家相关位置类型 ==
可以相对于玩家计算的变体。这利用了非常有用的相对位置。
=== PLAYER_RELATIVE_SINGLE ===
相对于玩家的特定位置 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code>
<source lang='yaml'>type: PLAYER_RELATIVE_SINGLE
location:
  # …… 相对位置(详见“通用配置/相对位置”)
point_tolerance: COORDS  # 检测位置是否匹配时的点容差
                          # 值: COORDS (匹配坐标), STRICT (distance <= 0.75), REGULAR (distance <= 1.5), LENIENT (distance <= 2.25)</source>
=== PLAYER_RELATIVE_AREA_INSIDE ===
相对于玩家在区域内 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code>
<source lang='yaml'>type: PLAYER_RELATIVE_AREA_INSIDE
bound1:
  # …… 相对位置(详见“通用配置/相对位置”)
bound2:
  # …… 相对位置(详见“通用配置/相对位置”)</source>
=== PLAYER_RELATIVE_AREA_OUTSIDE ===
相对于玩家在区域外 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code> (区域轮廓)
<source lang='yaml'>type: PLAYER_RELATIVE_AREA_OUTSIDE
bound1:
  # …… 相对位置(详见“通用配置/相对位置”)
bound2:
  # …… 相对位置(详见“通用配置/相对位置”)</source>
=== PLAYER_RELATIVE_SPHERE_INSIDE ===
相对于玩家在球体内 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code>
<source lang='yaml'>type: PLAYER_RELATIVE_SPHERE_INSIDE
center:
  # …… 相对位置(详见“通用配置/相对位置”)
radius: 5.0</source>
=== PLAYER_RELATIVE_SPHERE_OUTSIDE ===
相对于玩家在球体外 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code> (球体轮廓)
<source lang='yaml'>type: PLAYER_RELATIVE_SPHERE_OUTSIDE
center:
  # …… 相对位置(详见“通用配置/相对位置”)
radius: 5.0</source>
=== PLAYER_RELATIVE_CYLINDER_INSIDE ===
相对于玩家在圆柱内 /<code>can find random</code> /<code>can find closest</code>
<source lang='yaml'>type: PLAYER_RELATIVE_SPHERE_OUTSIDE
center:  # 圆柱中心 (忽略Y轴 )
  # …… 相对位置(详见“通用配置/相对位置”)
radius: 5.0</source>
=== PLAYER_RELATIVE_CYLINDER_OUTSIDE ===
相对于玩家在圆柱外 /<code>can find random</code> /<code>can find closest</code>
<source lang='yaml'>type: PLAYER_RELATIVE_CYLINDER_OUTSIDE
center:  # 圆柱中心 (忽略Y轴 )
  # …… 相对位置(详见“通用配置/相对位置”)
radius: 5.0</source>
== 实体最近相对位置类型 ==
可计算匹配的最近匹配的变体。这会在目标位置附近搜索最近匹配的实体,并使用相对位置调整实体位置。
=== CLOSEST_ENTITY_RELATIVE_SINGLE ===
相对于实体的特定位置 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code>
<source lang='yaml'>type: CLOSEST_ENTITY_RELATIVE_SINGLE
entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
entity_names: []  # 允许的实体自定义名称(留空则允许全部)
entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
location:
  # …… 相对位置(详见“通用配置/相对位置”)
point_tolerance: COORDS  # the point tolerance to apply when checking if a location matches this position
                          # 值: COORDS (匹配坐标), STRICT (distance <= 0.75), REGULAR (distance <= 1.5), LENIENT (distance <= 2.25)</source>
=== CLOSEST_ENTITY_RELATIVE_AREA_INSIDE ===
相对于实体在区域内 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code>
<source lang='yaml'>type: CLOSEST_ENTITY_AREA_INSIDE
entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
entity_names: []  # 允许的实体自定义名称(留空则允许全部)
entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
bound1:
  # …… 相对位置(详见“通用配置/相对位置”)
bound2:
  # …… 相对位置(详见“通用配置/相对位置”)</source>
=== CLOSEST_ENTITY_RELATIVE_AREA_OUTSIDE ===
相对于实体在区域外 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code> (区域轮廓)
<source lang='yaml'>type: CLOSEST_ENTITY_AREA_OUTSIDE
entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
entity_names: []  # 允许的实体自定义名称(留空则允许全部)
entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
bound1:
  # …… 相对位置(详见“通用配置/相对位置”)
bound2:
  # …… 相对位置(详见“通用配置/相对位置”)</source>
=== CLOSEST_ENTITY_RELATIVE_SPHERE_INSIDE ===
相对于实体在球体内 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code>
<source lang='yaml'>type: CLOSEST_ENTITY_SPHERE_INSIDE
entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
entity_names: []  # 允许的实体自定义名称(留空则允许全部)
entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
center:
  # …… 相对位置(详见“通用配置/相对位置”)
radius: 5.0</source>
=== CLOSEST_ENTITY_RELATIVE_SPHERE_OUTSIDE ===
相对于实体在球体外 /<code>can find random</code> /<code>can find closest</code> /<code>can fill</code> (球体轮廓)
<source lang='yaml'>type: CLOSEST_ENTITY_SPHERE_OUTSIDE
entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
entity_names: []  # 允许的实体自定义名称(留空则允许全部)
entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
center:
  # …… 相对位置(详见“通用配置/相对位置”)
radius: 5.0</source>
=== CLOSEST_ENTITY_RELATIVE_CYLINDER_INSIDE ===
相对于实体在圆柱内 /<code>can find random</code> /<code>can find closest</code>
<source lang='yaml'>type: CLOSEST_ENTITY_SPHERE_OUTSIDE
entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
entity_names: []  # 允许的实体自定义名称(留空则允许全部)
entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
center:  # 圆柱中心 (忽略Y轴 )
  # …… 相对位置(详见“通用配置/相对位置”)
radius: 5.0</source>
=== CLOSEST_ENTITY_RELATIVE_CYLINDER_OUTSIDE ===
相对于实体在圆柱外 /<code>can find random</code> /<code>can find closest</code>
<source lang='yaml'>type: CLOSEST_ENTITY_CYLINDER_OUTSIDE
entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
entity_names: []  # 允许的实体自定义名称(留空则允许全部)
entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
center:  # 圆柱中心 (忽略Y轴 )
  # …… 相对位置(详见“通用配置/相对位置”)
radius: 5.0</source>
=时间范围=
=时间范围=
以下是可以用在配置内的全部时间范围类型。
== 时间范围类型 ==
=== NONE|无 ===
无时间范围类型(用于内部)。
<code>type: NONE</code>
=== DAILY|每日 ===
<code>type: DAILY
start:  # 默认为 00:00
  hour: 15
  minute: 30
end:  # 默认为 23:59
  hour: 16
  minute: 30</code>
=== WEEKLY|每周 ===
<code>type: WEEKLY
start:  # 默认为 MONDAY|星期一,00:00
  day_of_week: THURSDAY
  hour: 15
  minute: 30
end:  # 默认为 SUNDAY|星期日,23:59
  day_of_week: SATURDAY
  hour: 15
  minute: 30</code>
=== MONTHLY|每月 ===
<code>type: MONTHLY
start:  # 默认为 1,00:00
  day_of_month: 15
  hour: 15
  minute: 30
end:  # 默认为 31,23:59
  day_of_month: 31
  hour: 15
  minute: 30</code>
=== YEARLY|每年 ===
<code>type: YEARLY
start:  # 默认为 JANUARY 1|1月1日,00:00
  month: FEBRUARY
  day_of_month: 15
  hour: 15
  minute: 30
end:  # 默认为 DECEMBER 31|12月31日,23:59
  month: APRIL
  day_of_month: 31
  hour: 15
  minute: 30</code>
=== LIMITED|限时 ===
这和YEARLY相似,但它不会重复至下一年且没有默认值。
<code>type: LIMITED
start:
  month: FEBRUARY
  day_of_month: 15
  hour: 15
  minute: 30
end:
  month: APRIL
  day_of_month: 31
  hour: 15
  minute: 30</code>

2020年12月14日 (一) 09:11的最新版本

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(temporary_variable, begin_value, end_value, step_value)

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

比如:

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)函数。

位置

以下是可用于配置内的全部位置类型。

如果位置可以“find random”,则可计算出随机位置(在一些插件内很有用)。

如果位置可以“find closest”,则计算出离玩家最近的位置(在一些插件内很有用)。

如果位置可以“fill”,则计算出可填充方块的位置(在一些插件内很有用)。

普通位置类型

NONE

无类型位置(用于内部)。

WORLD

在特定世界内 /can find closest

world: the_world

BIOMES

在特定群系内

biomes: [JUNGLE,JUNGLE_EDGE,JUNGLE_HILLS]  # 值:<nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/Biome.html</nowiki>

SINGLE

特定位置 /can find random /can find closest /can fill

type: SINGLE
 location: world,x,y,z
 point_tolerance: COORDS  # 检查一个位置是否与该位置匹配时应用的点容差。
                          # 值: COORDS (匹配坐标), STRICT (distance <= 0.75), REGULAR (distance <= 1.5), LENIENT (distance <= 2.25)

AREA_INSIDE

在区域内 /can find random /can find closest /can fill

type: AREA_INSIDE
 bound1: world,x,y,z
 bound2: world,x,y,z

AREA_OUTSIDE

在区域外 /can find random /can find closest /can fill (区域轮廓)

type: AREA_OUTSIDE
 bound1: world,x,y,z
 bound2: world,x,y,z

SPHERE_INSIDE

在球体内 /can find random /can find closest /can fill

type: SPHERE_INSIDE
 center: world,x,y,z
 radius: 5.0

SPHERE_OUTSIDE

在球体外 /can find random /can find closest /can fill (球体轮廓)

type: SPHERE_OUTSIDE
 center: world,x,y,z
 radius: 5.0

CYLINDER_INSIDE

在圆柱内 /can find random /can find closest

type: SPHERE_OUTSIDE
 center: world,x,y,z  # 圆柱中心 (忽略Y轴 )
 radius: 5.0

CYLINDER_OUTSIDE

在圆柱外 /can find random /can find closest

type: CYLINDER_OUTSIDE
 center: world,x,y,z  # 圆柱中心 (忽略Y轴 )
 radius: 5.0

玩家相关位置类型

可以相对于玩家计算的变体。这利用了非常有用的相对位置。

PLAYER_RELATIVE_SINGLE

相对于玩家的特定位置 /can find random /can find closest /can fill

type: PLAYER_RELATIVE_SINGLE
 location:
   # …… 相对位置(详见“通用配置/相对位置”)
 point_tolerance: COORDS  # 检测位置是否匹配时的点容差
                          # 值: COORDS (匹配坐标), STRICT (distance <= 0.75), REGULAR (distance <= 1.5), LENIENT (distance <= 2.25)

PLAYER_RELATIVE_AREA_INSIDE

相对于玩家在区域内 /can find random /can find closest /can fill

type: PLAYER_RELATIVE_AREA_INSIDE
 bound1:
   # …… 相对位置(详见“通用配置/相对位置”)
 bound2:
   # …… 相对位置(详见“通用配置/相对位置”)

PLAYER_RELATIVE_AREA_OUTSIDE

相对于玩家在区域外 /can find random /can find closest /can fill (区域轮廓)

type: PLAYER_RELATIVE_AREA_OUTSIDE
 bound1:
   # …… 相对位置(详见“通用配置/相对位置”)
 bound2:
   # …… 相对位置(详见“通用配置/相对位置”)

PLAYER_RELATIVE_SPHERE_INSIDE

相对于玩家在球体内 /can find random /can find closest /can fill

type: PLAYER_RELATIVE_SPHERE_INSIDE
 center:
   # …… 相对位置(详见“通用配置/相对位置”)
 radius: 5.0

PLAYER_RELATIVE_SPHERE_OUTSIDE

相对于玩家在球体外 /can find random /can find closest /can fill (球体轮廓)

type: PLAYER_RELATIVE_SPHERE_OUTSIDE
 center:
   # …… 相对位置(详见“通用配置/相对位置”)
 radius: 5.0

PLAYER_RELATIVE_CYLINDER_INSIDE

相对于玩家在圆柱内 /can find random /can find closest

type: PLAYER_RELATIVE_SPHERE_OUTSIDE
 center:  # 圆柱中心 (忽略Y轴 )
   # …… 相对位置(详见“通用配置/相对位置”)
 radius: 5.0

PLAYER_RELATIVE_CYLINDER_OUTSIDE

相对于玩家在圆柱外 /can find random /can find closest

type: PLAYER_RELATIVE_CYLINDER_OUTSIDE
 center:  # 圆柱中心 (忽略Y轴 )
   # …… 相对位置(详见“通用配置/相对位置”)
 radius: 5.0

实体最近相对位置类型

可计算匹配的最近匹配的变体。这会在目标位置附近搜索最近匹配的实体,并使用相对位置调整实体位置。

CLOSEST_ENTITY_RELATIVE_SINGLE

相对于实体的特定位置 /can find random /can find closest /can fill

type: CLOSEST_ENTITY_RELATIVE_SINGLE
 entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
 entity_names: []  # 允许的实体自定义名称(留空则允许全部)
 entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
 location:
   # …… 相对位置(详见“通用配置/相对位置”)
 point_tolerance: COORDS  # the point tolerance to apply when checking if a location matches this position
                          # 值: COORDS (匹配坐标), STRICT (distance <= 0.75), REGULAR (distance <= 1.5), LENIENT (distance <= 2.25)

CLOSEST_ENTITY_RELATIVE_AREA_INSIDE

相对于实体在区域内 /can find random /can find closest /can fill

type: CLOSEST_ENTITY_AREA_INSIDE
 entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
 entity_names: []  # 允许的实体自定义名称(留空则允许全部)
 entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
 bound1:
   # …… 相对位置(详见“通用配置/相对位置”)
 bound2:
   # …… 相对位置(详见“通用配置/相对位置”)

CLOSEST_ENTITY_RELATIVE_AREA_OUTSIDE

相对于实体在区域外 /can find random /can find closest /can fill (区域轮廓)

type: CLOSEST_ENTITY_AREA_OUTSIDE
 entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
 entity_names: []  # 允许的实体自定义名称(留空则允许全部)
 entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
 bound1:
   # …… 相对位置(详见“通用配置/相对位置”)
 bound2:
   # …… 相对位置(详见“通用配置/相对位置”)

CLOSEST_ENTITY_RELATIVE_SPHERE_INSIDE

相对于实体在球体内 /can find random /can find closest /can fill

type: CLOSEST_ENTITY_SPHERE_INSIDE
 entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
 entity_names: []  # 允许的实体自定义名称(留空则允许全部)
 entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
 center:
   # …… 相对位置(详见“通用配置/相对位置”)
 radius: 5.0

CLOSEST_ENTITY_RELATIVE_SPHERE_OUTSIDE

相对于实体在球体外 /can find random /can find closest /can fill (球体轮廓)

type: CLOSEST_ENTITY_SPHERE_OUTSIDE
 entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
 entity_names: []  # 允许的实体自定义名称(留空则允许全部)
 entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
 center:
   # …… 相对位置(详见“通用配置/相对位置”)
 radius: 5.0

CLOSEST_ENTITY_RELATIVE_CYLINDER_INSIDE

相对于实体在圆柱内 /can find random /can find closest

type: CLOSEST_ENTITY_SPHERE_OUTSIDE
 entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
 entity_names: []  # 允许的实体自定义名称(留空则允许全部)
 entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
 center:  # 圆柱中心 (忽略Y轴 )
   # …… 相对位置(详见“通用配置/相对位置”)
 radius: 5.0

CLOSEST_ENTITY_RELATIVE_CYLINDER_OUTSIDE

相对于实体在圆柱外 /can find random /can find closest

type: CLOSEST_ENTITY_CYLINDER_OUTSIDE
 entity_types: [CREEPER]  # 允许的实体类型(留空则为全部实体类型) 值: <nowiki>https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html</nowiki>
 entity_names: []  # 允许的实体自定义名称(留空则允许全部)
 entity_colors: []  # 允许的实体颜色(留空则允许全部颜色)
 center:  # 圆柱中心 (忽略Y轴 )
   # …… 相对位置(详见“通用配置/相对位置”)
 radius: 5.0

时间范围

以下是可以用在配置内的全部时间范围类型。

时间范围类型

NONE|无

无时间范围类型(用于内部)。

type: NONE

DAILY|每日

type: DAILY
start:  # 默认为 00:00
  hour: 15
  minute: 30
end:  # 默认为 23:59
  hour: 16
  minute: 30

WEEKLY|每周

type: WEEKLY
start:  # 默认为 MONDAY|星期一,00:00
  day_of_week: THURSDAY
  hour: 15
  minute: 30
end:  # 默认为 SUNDAY|星期日,23:59
  day_of_week: SATURDAY
  hour: 15
  minute: 30

MONTHLY|每月

type: MONTHLY
start:  # 默认为 1,00:00
  day_of_month: 15
  hour: 15
  minute: 30
end:  # 默认为 31,23:59
  day_of_month: 31
  hour: 15
  minute: 30

YEARLY|每年

type: YEARLY
start:  # 默认为 JANUARY 1|1月1日,00:00
  month: FEBRUARY
  day_of_month: 15
  hour: 15
  minute: 30
end:  # 默认为 DECEMBER 31|12月31日,23:59
  month: APRIL
  day_of_month: 31
  hour: 15
  minute: 30

LIMITED|限时

这和YEARLY相似,但它不会重复至下一年且没有默认值。

type: LIMITED
start:
  month: FEBRUARY
  day_of_month: 15
  hour: 15
  minute: 30
end:
  month: APRIL
  day_of_month: 31
  hour: 15
  minute: 30