diff --git a/docs/auto-imports.d.ts b/docs/auto-imports.d.ts index 9d240079..1d89ee8c 100644 --- a/docs/auto-imports.d.ts +++ b/docs/auto-imports.d.ts @@ -3,7 +3,6 @@ // @ts-nocheck // noinspection JSUnusedGlobalSymbols // Generated by unplugin-auto-import -// biome-ignore lint: disable export {} declare global { diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/ItemModifier.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/ItemModifier.md similarity index 100% rename from docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/ItemModifier.md rename to docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/ItemModifier.md diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/LootEntry.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/LootEntry.md new file mode 100644 index 00000000..f4232dd5 --- /dev/null +++ b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/LootEntry.md @@ -0,0 +1,33 @@ +# 抽取项 + +- 抽取项存在于每个随机池的抽取项列表中。 + +## 抽取项类型 + +| 抽取项类型 | 作用 | 语句 | +|:------------:|:---------:|:---------:| +| 选择 | 从中掉落第一个满足条件的战利品 | - | +| 动态 | 用于潜影盒与纹饰陶罐 | - | +| 空 | 什么都不掉的战利品 | addEmpty() | +| 物品 | 掉落一个物品 | addItem() | +| 组 | 掉落一组物品 | - | +| 战利品表 | 从另一个战利品表决定掉落什么 | - | +| 序列 | 按依次掉落,直到某一项谓词不通过 | - | +| 物品标签 | 掉落标签中1个或全部物品 | - | + +## 添加抽取项 + +- 在addPool(pool=>{})中使用; + +- 示例: + +```js +ServerEvents.blockLootTables(event => { + event.addBlock('minecraft:gravel', loot => { + loot.addPool(pool => { + pool.addItem('minecraft:diamond')// [!code ++] + }) + }) +}) + +``` diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/LootPool.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/LootPool.md new file mode 100644 index 00000000..15a055d1 --- /dev/null +++ b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/LootPool.md @@ -0,0 +1,62 @@ +# 随机池 + +- 存在于每个战利品表的随机池列表中,内含抽取项(战利品),每个随机池都有自己的抽取次数设置,触发战利品表时每个随机池进行有放回的独立抽取。 + +## 添加随机池 + +- 创建一个新随机池。 + +- 语句:addPool(pool=>{}); + +```js +ServerEvents.blockLootTables(event => { + event.addBlock('minecraft:gravel', loot => { + loot.addPool(pool => {// [!code ++] + })// [!code ++] + }) +}) +``` + +## 抽取次数 + +- **`默认值`** 默认值为1。 + +- pool.rolls 是一个[数字提供器](../MiscellaneousKnowledge/NumberProvider.md) + +- pool.setUniformRolls(min, max) 设置取值范围,接受最小值与最大值 + +- pool.setBinomialRolls(n, p) 设置二项分布,接受n尝试次数,p每次尝试成功概率,期望次数np + +::: code-group + +```js [绝对值] +ServerEvents.blockLootTables(event => { + event.addBlock('minecraft:gravel', loot => { + loot.addPool(pool => { + pool.rolls = 1// [!code ++] + }) + }) +}) +``` + +```js [取值范围] +ServerEvents.blockLootTables(event => { + event.addBlock('minecraft:gravel', loot => { + loot.addPool(pool => { + pool.setUniformRolls(1, 1)// [!code ++] + }) + }) +}) +``` + +```js [二项分布] +ServerEvents.blockLootTables(event => { + event.addBlock('minecraft:gravel', loot => { + loot.addPool(pool => { + pool.setBinomialRolls(5, 0.5)// [!code ++] + }) + }) +}) +``` + +::: diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/LootType.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/LootType.md new file mode 100644 index 00000000..18e91110 --- /dev/null +++ b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/LootType.md @@ -0,0 +1,16 @@ +# 战利品表类型 + +- **`战利品表类型`** 战利品表上下文类型,也称为战利品表类型。 + +- 类型决定不同战利品表的作用。 + +- 类型决定不同战利品表的可用的谓词与修饰器。 + +| 战利品表类型 | 事件 | 示例 | +|:------------:|:---------:|:---------:| +| 方块 | ServerEvents.blockLootTables | [方块类型战利品表](./Block.md) | +| 实体 | ServerEvents.entityLootTables | [实体类型战利品表](./Entity.md) | +| 钓鱼 | ServerEvents.fishingLootTables | [钓鱼类型战利品表](./Fish.md) | +| 礼物 | ServerEvents.fishingLootTables | [礼物类型战利品表](./Gift.md) | +| 箱子 | ServerEvents.chestLootTables | [箱子类型战利品表](./Chest.md) | +| 通用 | ServerEvents.genericLootTables | [通用类型战利品表](./Generic.md) | diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Predicate.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/Predicate.md similarity index 100% rename from docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Predicate.md rename to docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/BasicKnowledge/Predicate.md diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/LootEntry.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/LootEntry.md deleted file mode 100644 index 981d6fee..00000000 --- a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/LootEntry.md +++ /dev/null @@ -1,105 +0,0 @@ -# 战利品 - -- 本章节弃用xxx - -- 用于在本章中需要表示战利品的任何地方。 - -## 前言 - -:::: warning **注意** -::: justify -本章需要安装KubeJS附属模组[lootJs](https://www.mcmod.cn/class/6327.html) -::: -:::: - -## 战利品表示 - -### 字符串表示法 - -- 字符串表示法,用于简单的只涉及物品的表示。 - -```js -// 代表一个火药战利品 -'minecraft:gunpowder' -``` - -### 对象表示法 - -- 推荐阅读[物品表示法](../Recipe/ItemAndIngredient.md),一切涉及“物品”参数均可使用物品表示法。 - -- 作为LootEntry对象而存在,支持调用该类函数以实现复杂功能。 - -- 语句:LootEntry.of(args); 拥有4个方法重载。 - -- 语句:LootEntry.withChance(物品, 几率数字); 创建一个带有掉落几率(取值范围\(0, 1\])的战利品。 - -::: code-group - -```js [使用物品表示法] -// 表示一个火药战利品 -LootEntry.of(Item.of('minecraft:gunpowder')); -// 或更简便的使用字符串 -LootEntry.of('minecraft:gunpowder'); -``` - -```js [指定数量] -// 表示一个指定数量的火药战利品 -LootEntry.of('minecraft:gunpowder', 1); -``` - -```js [指定NBT] -// 表示一个指定NBT的火药战利品 -LootEntry.of('minecraft:gunpowder', '{test:test}'); -``` - -```js [指定数量与NBT] -// 表示一个指定数量与NBT的火药战利品 -LootEntry.of('minecraft:gunpowder', 1, '{test:test}'); -``` - -```js [概率战利品] -// 表示一个具有0.5掉落几率的战利品 -LootEntry.withChance(Item.of('minecraft:gunpowder'), 0.5); -``` - -::: - -## 为战利品添加修饰 - -- **`物品修饰器`** 为战利品中的物品应用物品修饰器,引用文献[minecraft-wiki/物品修饰器](https://zh.minecraft.wiki/w/%E7%89%A9%E5%93%81%E4%BF%AE%E9%A5%B0%E5%99%A8),在这里你可以使用kjs代码的方式应用这些修饰器。 - -### 应用奖励 - -- 语句:.applyBonus(附魔, 数字); - -### 添加权重 - -- 用于权重战利品池中。 - -- 语句:withWeight(数字); - -```js -LootEntry.of('minecraft:gunpowder').withWeight(50); -``` - -### 添加战利品函数 - -- 语句:addFunction(战利品函数回调); - -- 回调内返回1个ItemStack对象,。 - -```js -LootEntry.of(Item.of('minecraft:gunpowder')).addFunction((lootItem) => {}); -``` - -### 从json添加战利品表函数 - -- 语句:customFunction(Json); - -- 这是一种数据包的方式添加战利品表函数回调。 - -```js -LootEntry.of(Item.of('minecraft:gunpowder')).customFunction(Json); -``` - -## 为战利品添加条件 diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/LootTable.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/LootTable.md index d1b379a6..eac435db 100644 --- a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/LootTable.md +++ b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/LootTable.md @@ -4,11 +4,19 @@ state: preliminary --- # 战利品表 -## 概述 +## 介绍 - **`战利品表`** 战利品用于决定在何种情况下生成何种物品。比如自然生成的容器和可疑的方块内容物、破坏方块时的掉落物、杀死实体时的掉落物、钓鱼时可以钓上的物品、猪灵的以物易物——引用自[minecraft-wiki/战利品表](https://zh.minecraft.wiki/w/%E6%88%98%E5%88%A9%E5%93%81%E8%A1%A8) -## 战利品表触发过程 +- **`随机池`** 又称战利品池,战利品随机池,是包含待抽取的战利品的奖池,文中提及随机池、战利品池均指同一事物。 + +- **`抽取项`** 又叫战利品项,可以基本视为它指代最终掉落的战利品,存在于随机池的抽取项列表中,文中提及抽取项、战利品项、战利品均指同一事物。 + +- **`谓词`** 又称战利品表谓词,根据应用的对象不同可能还有衍生名,文中所有XX谓词,均指同一事物。 + +- **`物品修饰器`** 又称战利品表函数、战利品表物品函数、战利品物品条件函数,均为同一事物,文中均使用物品修饰器描述。 + +## 触发过程 ```mermaid --- @@ -16,59 +24,57 @@ title: 战利品表触发逻辑 --- stateDiagram-v2 direction TB - 触发战利品表 --> 可使用的战利品池: 通过战利品池谓词 - 可使用的战利品池 --> 待抽取的战利品项: 通过战利品项谓词 - 待抽取的战利品项 --> 抽取结果: 计算权重(weight、quality) - 触发战利品表 --> 不使用的战利品池: 未通过战利品池谓词 - 可使用的战利品池 --> 剔除的战利品项: 未通过战利品项谓词 + 触发战利品表 --> 可使用的随机池: 通过随机池谓词 + 可使用的随机池 --> 待抽取的抽取项: 通过抽取项谓词 + 待抽取的抽取项 --> 抽取结果: 计算权重(weight、quality) + 触发战利品表 --> 不使用的随机池: 未通过随机池谓词 + 可使用的随机池 --> 剔除的抽取项: 未通过抽取项谓词 ``` ::: center -战利品表触发基本逻辑,省略了一些内容。 +总之会将不符合谓词的随机池与抽取项先剔除再抽取,省略了一些内容。 ::: -## 战利品表数据结构 - -::: stepper -@tab 战利品表 - -- **`类型`** 一个战利品表可能是[以下类型](./LootTable.md#战利品表类型)之一,如僵尸战利品表是实体类型。 - -- **`随机池列表`** 别名:战利品池列表,定义该战利品表下的随机池(战利品池),每个池子包含将要抽取的战利品,每个池子独立抽取。 - -**`[可选]物品修饰器列表`** 在这里的物品修饰器将对整个战利品表的战利品起效,每个物品修饰器也拥有一个可选的谓词列表,用于判断这个物品修饰器是否应用。 - -@tab 随机池(战利品池) - -- **`抽取次数`** 每个随机池声明自己会尝试抽取战利品项的次数。 - -- **`每级幸运增加的抽取次数`** 现在未被Minecraft使用。 - -- **`抽取项列表`** 别名:战利品列表,一个数组,定义该随机池中有什么抽取项(战利品)。 - -**`[可选]谓词列表`** 内含若干谓词,可用于判断该池是否尝试抽取。 +## 数据结构 -**`[可选]物品修饰器列表`** 内含若干物品修饰器,可用于修改该池中的战利品,每个物品修饰器也拥有一个可选的谓词列表,用于判断这个物品修饰器是否应用。 +- 结构较为复杂,但无需立刻就记住,知晓这个结构对操作战利品表时时具有相当帮助。 -@tab 抽取项(战利品) +- 如果不明白战利品表的结构极易不清楚自己当前的语句具体在操作什么。 -- **`类型`** 一个战利品列表可能包含数量不定的抽取项,这是战利品表中定义的战利品,一个抽取项可能是[以下类型](./LootTable.md#抽取项类型)之一。 - -- **`权重`** 战利品项在随机池占据的权重。 - -- **`品质`** 根据幸运程度,包括属性与状态效果影响权重max(floor(weight + (quality × generic.luck)),0)由于bug,有时不起作用[bug](https://minecraft.wiki/w/Loot_table#cite_note-luck-2)。 - -**`[可选]谓词列表`** 内含若干谓词,可用于判断该战利品是否掉落。 - -**`[可选]物品修饰器列表`** 内含若干物品修饰器,可用于修改该战利品,每个物品修饰器也拥有一个可选的谓词列表,用于判断这个物品修饰器是否应用。 +```mermaid +--- +title: 战利品表数据结构 +--- +stateDiagram-v2 + direction TB + 战利品表 --> 战利品表上下文类型: 默认通用(Generic) + 战利品表 --> 随机池列表 + 战利品表 --> 战利品表物品修饰器列表: 可选 + 随机池列表 --> 随机池 + 随机池列表 --> 其他随机池: 示意可以存在多个池 + 随机池 --> 抽取次数: 默认为1 + 随机池 --> 抽取项列表 + 随机池 --> 随机池谓词列表: 可选 + 随机池 --> 随机池物品修饰器列表: 可选 + 抽取项列表 --> 抽取项 + 抽取项列表 --> 其他抽取项: 示意可以存在多个抽取项 + 抽取项 --> 抽取项类型 + 抽取项 --> 抽取项类型对应内容 + 抽取项 --> 抽取项谓词列表: 可选 + 抽取项 --> 抽取项物品修饰器列表: 可选(仅存在于单一抽取项) +``` +::: center +不同的XXX谓词列表、XXX物品修饰器列表没有本质区别,只是应用的对象不同。 ::: -## 战利品表类型 +## 战利品表上下文类型 + +- **`战利品表类型`** 战利品表上下文类型,也称为战利品表类型。 -- 设置某个游戏事物的战利品表。 +- 类型决定不同战利品表的作用。 -- 战利品表类型总览及其对应类型战利品表的完整示例。 +- 类型决定不同战利品表的可用的谓词与修饰器。 | 战利品表类型 | 事件 | 示例 | |:------------:|:---------:|:---------:| @@ -81,7 +87,7 @@ stateDiagram-v2 ## 随机池 -- 内含战利品,每个随机池都有自己的抽取次数设置,触发战利品表时独立抽取战利品。 +- 存在于每个战利品表的随机池列表中,内含抽取项(战利品),每个随机池都有自己的抽取次数设置,触发战利品表时每个随机池进行有放回的独立抽取。 ### 添加随机池 @@ -142,7 +148,7 @@ ServerEvents.blockLootTables(event => { ::: -### 抽取项 +## 抽取项 ::: warning 注意 @@ -152,7 +158,7 @@ ServerEvents.blockLootTables(event => { ::: -#### 抽取项类型 +### 抽取项类型 | 抽取项类型 | 作用 | 语句 | |:------------:|:---------:|:---------:| @@ -165,7 +171,7 @@ ServerEvents.blockLootTables(event => { | 序列 | 按依次掉落,直到某一项谓词不通过 | - | | 物品标签 | 掉落标签中1个或全部物品 | - | -#### 添加抽取项 +### 添加抽取项 - 示例: @@ -220,7 +226,7 @@ ServerEvents.blockLootTables(event => { }) ``` -```js [应用战利品项] +```js [应用抽取项] ServerEvents.blockLootTables(event => { event.addBlock('minecraft:gravel', loot => { loot.addPool(pool => { @@ -246,9 +252,9 @@ ServerEvents.blockLootTables(event => { ::: -## 全部物品修饰器类型一览 +## 物品修饰器 -### 物品修饰器类型 +### 全部物品修饰器类型一览 | 物品修饰器类型 | 作用 | 语句 | KubeJS原生支持 | 示例 | |:------------:|:---------:|:---------:|:---------:|:---------:| @@ -304,7 +310,7 @@ ServerEvents.blockLootTables(event => { event.addBlock('minecraft:gravel', loot => { loot.addPool(pool => { pool.addItem('minecraft:diamond') - // 为战利品池直接应用 + // 为随机池直接应用 pool.name(Component.red('测试钻石'))// [!code ++] // 有条件的物品修饰器 pool.addConditionalFunction(c => {// [!code ++] @@ -316,11 +322,11 @@ ServerEvents.blockLootTables(event => { }) ``` -```js [应用战利品项] +```js [应用抽取项] ServerEvents.blockLootTables(event => { event.addBlock('minecraft:gravel', loot => { loot.addPool(pool => { - // 为战利品项直接应用 + // 为抽取项直接应用 pool.addItem('minecraft:diamond').name(Component.red('测试钻石'))// [!code ++] // 有条件的物品修饰器 pool.addItem('minecraft:diamond').addConditionalFunction(c => {// [!code ++] diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Block.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Block.md similarity index 100% rename from docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Block.md rename to docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Block.md diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Chest.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Chest.md similarity index 100% rename from docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Chest.md rename to docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Chest.md diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Entity.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Entity.md similarity index 100% rename from docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Entity.md rename to docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Entity.md diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Fish.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Fish.md similarity index 100% rename from docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Fish.md rename to docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Fish.md diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Generic.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Generic.md similarity index 100% rename from docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Generic.md rename to docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Generic.md diff --git a/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Gift.md b/docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Gift.md similarity index 100% rename from docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Gift.md rename to docs/zh/modpack/kubejs/1.20.1/Introduction/LootTable/Vanilla/Gift.md diff --git a/docs/zh/modpack/kubejs/1.20.1/index.md b/docs/zh/modpack/kubejs/1.20.1/index.md index 97c6a895..354bcef6 100644 --- a/docs/zh/modpack/kubejs/1.20.1/index.md +++ b/docs/zh/modpack/kubejs/1.20.1/index.md @@ -124,42 +124,56 @@ root: path: LootTable collapsed: true children: - - title: 战利品表 + - title: 概述 path: / file: LootTable - - title: 谓词 - path: / - file: Predicate - - title: 物品修饰器 - path: / - file: ItemModifier - # - title: 战利品表示 - # path: / - # file: LootEntry + - title: 基础知识 + path: BasicKnowledge + # collapsed: false + children: + - title: 战利品表类型 + path: / + file: LootType + - title: 随机池 + path: / + file: LootPool + - title: 抽取项 + path: / + file: LootEntry + - title: 谓词 + path: / + file: Predicate + - title: 物品修饰器 + path: / + file: ItemModifier + - title: 原版战利品表 + path: Vanilla + # collapsed: false + children: # - title: 战利品修改 # path: / # file: ModifyLootEntry # - title: 战利品添加 # path: / # file: AddLootEntry - - title: 方块类型战利品表 - path: / - file: Block - - title: 实体类型战利品表 - path: / - file: Entity - - title: 钓鱼类型战利品表 - path: / - file: Fish - - title: 礼物类型战利品表 - path: / - file: Gift - - title: 箱子类型战利品表 - path: / - file: Chest - - title: 通用类型战利品表 - path: / - file: Generic + - title: 方块类型战利品表 + path: / + file: Block + - title: 实体类型战利品表 + path: / + file: Entity + - title: 钓鱼类型战利品表 + path: / + file: Fish + - title: 礼物类型战利品表 + path: / + file: Gift + - title: 箱子类型战利品表 + path: / + file: Chest + - title: 通用类型战利品表 + path: / + file: Generic - title: 事件 path: Event collapsed: true