-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Feat: Добавлена документация по основным методом DungeonUtility
- Loading branch information
Showing
15 changed files
with
615 additions
and
4 deletions.
There are no files selected for viewing
6 changes: 4 additions & 2 deletions
6
...s-plugin-content-pages/libraries/index.md → ...geonUtility/generations/ItemGeneration.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,9 @@ | ||
# Библиотеки | ||
--- | ||
hide_title: true | ||
--- | ||
|
||
```mdx-code-block | ||
import NotImplemented from "@site/src/components/NotImplemented" | ||
<NotImplemented /> | ||
``` | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
--- | ||
hide_title: true | ||
--- | ||
|
||
```mdx-code-block | ||
import NotImplemented from "@site/src/components/NotImplemented" | ||
<NotImplemented /> | ||
``` |
2 changes: 1 addition & 1 deletion
2
src/pages/libraries/index.md → ...braries/DungeonUtility/getting-started.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
# Libraries | ||
# Intro | ||
|
||
```mdx-code-block | ||
import NotImplemented from "@site/src/components/NotImplemented" | ||
|
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
--- | ||
hide_title: true | ||
--- | ||
|
||
```mdx-code-block | ||
import NotImplemented from "@site/src/components/NotImplemented" | ||
<NotImplemented /> | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
--- | ||
displayed_sidebar: librariesSidebar | ||
slug: /libraries | ||
--- | ||
|
||
# Libraries | ||
|
||
<!-- | ||
Inner Core Docs: Inner Core, Core Engine and Horizon documentation | ||
Copyright (C) 2022 Nernar (https://github.com/nernar) | ||
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
Maintained and distributed by MaXFeeD ([email protected]) | ||
--> | ||
|
||
```mdx-code-block | ||
import DocMap from "@site/src/components/DocMap" | ||
<DocMap exploreCategories={ true } /> | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
101 changes: 101 additions & 0 deletions
101
...gin-content-docs/current/libraries/DungeonUtility/generations/ItemGeneration.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
--- | ||
title: Генерация предметов | ||
--- | ||
|
||
ItemGeneration - класс для создания генераторов предметов и взаимодействия с ними. | ||
Данный класс может работать только с ванильными контейнерами! | ||
|
||
## Какие проблемы решает генератор предметов? | ||
|
||
1. Известная раньше проблема, это пустые сундуки в структурах, DungeonUtility будет по умолчанию генерировать предметы до тех-пор пока не сгенерирует, что очень удобно. | ||
2. Интеграция между модами | ||
3. Просмотр игроком, что ему может выпасть в сундуке | ||
|
||
Разберем базовые методы данного класса, в отдельности разберем создание генератора, на данный момент содержится даже проблема, чтто и в StructureLoader! | ||
**Поэтому очень важно позаботиться об уникальности имени генератора!** | ||
|
||
## Генерация предметов | ||
|
||
```ts | ||
// Создаем генератор по имени example_name, для использования генератора всегда будет необходимо использовать его | ||
ItemGeneration.newGenerator("example_name"); | ||
``` | ||
|
||
Теперь разберем данный метод | ||
|
||
```ts | ||
ItemGeneration.addItem("example_name", VanillaItemID.diamond, .1, {min: 1, max:5}); | ||
``` | ||
|
||
Мы обращаемся к генератору по имени example_name и добавляем предмет с id из VanillaItemID.diamond, с шансом спавна .1(это 10%) и следующим параметром мы устанавливаем количество падающих предметов, а именно от 1 до 5. | ||
> Помните, что метод использует [**вероятность**](https://ru.wikipedia.org/wiki/Вероятность) спавна, коротко говоря это шанс спавнв деленный на 100(например 1/100 = 1%) | ||
Теперь разберем метод заполнения сундука | ||
|
||
```ts | ||
ItemGeneration.fill("example_name", x, y, z, region); | ||
``` | ||
|
||
Данный метод заполняет сундук на координатах x, y, z и в измерении region(BlockSource) | ||
|
||
## Интеграция с другими модами | ||
|
||
Для того, чтобы не добавлять свои предметы в ручную в каждый мод на структуры был добавлен метод | ||
```ts | ||
ItemGeneration.setItemIntegration(VanillaItemID.diamond_axe, .1, {min: 1, max: 1}); | ||
``` | ||
Тут мы добавляем предмет с id из VanillaItemID.diamond_axe, с шансом спавна .1(это 10%) и следующим параметром мы устанавливаем количество падающих предметов, а именно от 1 до 1. | ||
|
||
## Recipe Viewer | ||
|
||
Данный метод создаст интеграцию с RecipeViewer за вас! | ||
|
||
```ts | ||
ItemGeneration.registerRecipeViewer("example_generator", "Title generator"); | ||
``` | ||
|
||
Разберем данный метод, данный метод позводит просматрировать игроку предметы в Recipe Viewer которые он может получить с данжей. | ||
|
||
## Как заставить генерироваться лут в своей структуре? | ||
|
||
```ts | ||
examplePool.setGlobalPrototype("test_structure", Structure.getPrototypeDefault("example_generator")); | ||
``` | ||
|
||
Разберем данный код, мы обращаемся к экземпляру StructurePool и устанавливаем ей генерацию предметов example_generator | ||
|
||
## Примеры | ||
|
||
```ts | ||
// Помните, что имя генератора должно быть уникально!!! | ||
ItemGeneration.newGenerator("example_generator"); | ||
|
||
// Добавляем предметы | ||
ItemGeneration.addItem("example_generator", VanillaItemID.iron_ingot, .5, {min: 1, max: 3}); | ||
ItemGeneration.addItem("example_generator", VanillaItemID.diamond, .1, {min: 1, max: 1}); | ||
|
||
// Создаем событие нажатия палкой, теперь палка будет заполнять сундуки | ||
Item.registerUseFunction(VanillaItemID.stick, (coords, item, block, player) => { | ||
// Заполняем сундук на координатах coords в измерении в котором находится игрок player | ||
ItemGeneration.fill("example_generator", coords.x, coords.y, coords.z, BlockSource.getDefaultForActor(player)); | ||
}); | ||
|
||
// Добавляем предмет вовсе другие моды | ||
ItemGeneration.setItemIntegration(VanillaItemID.diamond_axe, .1, {min: 1, max: 1}); | ||
|
||
// Создаем интеграцию с RecipeViewer | ||
ItemGeneration.registerRecipeViewer("example_generator", "Title generator"); | ||
|
||
|
||
// Создаем StructurePool, обратите внимание, что у каждого мода должен быть свое уникальное имя StructurePool!!!!!!!!! | ||
let examplePool = new StructurePool("example_pool"); | ||
|
||
// Устанавливаем путь к папке со структурами, в данном случае папка structures в главное директории мода | ||
examplePool.setPathStructures(__dir__+"structures"); | ||
|
||
// Загружаем структуру test_structure.struct из папки указаной выше, структура будет доступна по имени test_structure | ||
examplePool.upload("test_structure"); | ||
|
||
// Устанавливаем генерацию предметов в структуре test_structure | ||
examplePool.setGlobalPrototype("test_structure", Structure.getPrototypeDefault("example_generator")); | ||
``` |
96 changes: 96 additions & 0 deletions
96
...gin-content-docs/current/libraries/DungeonUtility/generations/StructurePiece.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
--- | ||
title: Генерация структуры | ||
--- | ||
|
||
DefaultGenerationDescription - класс обеспечит качественную генерацию, которая создается очень просто | ||
|
||
## Какие проблемы решает генератор структур DungeonUtility? | ||
|
||
1. Частые появления структуры, раньше могло запсавнится несколько структур в одном месте, что выглидит очень не очень | ||
2. Половинчитые структуры, структуры могли половинчиться из разных причин, DungeonUtility также предлагает исправление данной проблемы | ||
|
||
## Генерация структур | ||
|
||
Начнем пожалуй сразу с примера | ||
|
||
```ts | ||
let examplePool = new StructurePool("example_pool"); | ||
|
||
// Устанавливаем путь к папке со структурами, в данном случае папка structures в главное директории мода | ||
examplePool.setPathStructures(__dir__+"structures"); | ||
|
||
// Загружаем структуру test_structure.struct из папки указаной выше, структура будет доступна по имени test_structure | ||
examplePool.upload("test_structure"); | ||
|
||
// Добавляем событие StructureLoadOne, чтобы работать со структурой | ||
Callback.addCallback("StructureLoadOne", () => { | ||
// Создаем DefaultGenerationDescription, даем ему структуру которую будем генерировать, с шансом 1 к 80(примерно 1 структура на 80 чанков) | ||
let example_generation = new DefaultGenerationDescription(examplePool.get("test_structure"), 80); | ||
|
||
example_generation.setIdentifier("my_mod:test_structure");// Задаем уникальный индитификатор, для структуры | ||
example_generation.setSurface(true, [VanillaBlockID.grass]);// Задаем блоки на которых будет спавниться структура | ||
example_generation.setDistance(90, "my_mod_group");// Задаем минимальное расстояния между структурами my_mod_group | ||
|
||
// Регистрируем генерацию структур, по выше описаным параметрам | ||
example_generation.register(); | ||
}); | ||
``` | ||
|
||
### Разберем код | ||
|
||
Для регистрации генерации структуры используется класс DefaultGenerationDescription | ||
Он принимает структуру, которая будет генерироваться и шанс | ||
|
||
> В шансе спана указывается делитель для получения [**вероятности**](https://ru.wikipedia.org/wiki/Вероятность) спавна структуры | ||
Дальше мы устанавливаем уникальный индитификатор мода, это требуется для исправления половинчитых структур | ||
> **Если ваша структура генерируется очень часто, не рекомендую это делать** | ||
> example_generation.setIdentifier("my_mod:test_structure"); | ||
Затем мы установили поверхности на которых будет генерироваться структура, в где true - это переключатель между белым списком и черным, в примере белый список | ||
> example_generation.setSurface(true, [VanillaBlockID.grass]); | ||
Дальше мы задали групу к которой принадлежит структура и минимальное растояние до ближайшей структуры данной группы(что-бы структуры не спавнились слишком часто) | ||
> example_generation.setDistance(90, "my_mod_group"); | ||
Ну и на последок мы зарегистрировали генерацию структуры | ||
|
||
> example_generation.register(); | ||
## Пример с генерацией предметов | ||
|
||
```ts | ||
// Помните, что имя генератора должно быть уникально!!! | ||
ItemGeneration.newGenerator("example_generator"); | ||
|
||
// Добавляем предметы | ||
ItemGeneration.addItem("example_generator", VanillaItemID.iron_ingot, .5, {min: 1, max: 3}); | ||
ItemGeneration.addItem("example_generator", VanillaItemID.diamond, .1, {min: 1, max: 1}); | ||
|
||
// Создаем интеграцию с RecipeViewer | ||
ItemGeneration.registerRecipeViewer("example_generator", "Title generator"); | ||
|
||
|
||
// Создаем StructurePool, обратите внимание, что у каждого мода должен быть свое уникальное имя StructurePool!!!!!!!!! | ||
let examplePool = new StructurePool("example_pool"); | ||
// Устанавливаем путь к папке со структурами, в данном случае папка structures в главное директории мода | ||
examplePool.setPathStructures(__dir__+"structures"); | ||
// Загружаем структуру test_structure.struct из папки указаной выше, структура будет доступна по имени test_structure | ||
examplePool.upload("test_structure"); | ||
|
||
// Устанавливаем генерацию предметов в структуре test_structure | ||
examplePool.setGlobalPrototype("test_structure", Structure.getPrototypeDefault("example_generator")); | ||
|
||
// Добавляем событие StructureLoadOne, чтобы работать со структурой | ||
Callback.addCallback("StructureLoadOne", () => { | ||
// Создаем DefaultGenerationDescription, даем ему структуру которую будем генерировать, с шансом 1 к 80(примерно 1 структура на 80 чанков) | ||
let example_generation = new DefaultGenerationDescription(examplePool.get("test_structure"), 80); | ||
|
||
example_generation.setIdentifier("my_mod:test_structure");// Задаем уникальный индитификатор, для структуры | ||
example_generation.setSurface(true, [VanillaBlockID.grass]);// Задаем блоки на которых будет спавниться структура | ||
example_generation.setDistance(90, "my_mod_group");// Задаем минимальное расстояния между структурами my_mod_group | ||
|
||
// Регистрируем генерацию структур, по выше описаным параметрам | ||
example_generation.register(); | ||
}); | ||
``` |
Oops, something went wrong.