diff --git a/.env.yml b/.env.yml
index 38a1bee953..65069ed045 100644
--- a/.env.yml
+++ b/.env.yml
@@ -1,5 +1,11 @@
mc_version: "1.20.6"
-assets_path: "./assets"
+generated_path: "./generated"
build_path: "./build"
datapacks_path: "./datapacks"
world_path: "."
+bookshelf_libs:
+ - "Bookshelf"
+ - "Bookshelf Dev"
+metadata_folder: "metadata"
+doc_url: "https://bookshelf.docs.gunivers.net/"
+feature_tag_namespace: "__bookshelf__"
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000000..4960534f42
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,35 @@
+---
+name: "π Bug report"
+about: Report a reproducible bug.
+labels: 'π Bug'
+
+---
+
+
+
+Bookshelf version:
+Feature path:
+
+## Steps To Reproduce
+
+1.
+2.
+
+
+
+Code example:
+
+
+
+## The current behavior
+
+
+## The expected behavior
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000000..5c67c4af04
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: false
+contact_links:
+ - name: β Question
+ url: https://github.com/Gunivers/Bookshelf/discussions
+ about: Please ask questions here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000000..84e1cc36c4
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,6 @@
+---
+name: β¨ Feature request
+about: Suggest a new feature and/or a new module.
+---
+
+
diff --git a/.github/ISSUE_TEMPLATE/other.md b/.github/ISSUE_TEMPLATE/other.md
new file mode 100644
index 0000000000..bd8a9e428d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/other.md
@@ -0,0 +1,6 @@
+---
+name: π Other
+about: For other suggestions such as asking to add new related tools into the documentation, etc.
+---
+
+
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index a1098fbbea..ddd6ca9572 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -1,6 +1,8 @@
# Tasks to do before merging
+- [ ] I accept to publish my contribution under [MPL v2](http://mozilla.org/MPL/2.0/) License
- [ ] My pull request is linked to an existing issue
+- [ ] I have added my contribution to the [changelog](https://github.com/Gunivers/Bookshelf/blob/master/docs/CHANGELOG.md)
- If my pull request is a new or modify an existing feature:
- [ ] I have documented my contribution (`/docs`)
- - [ ] I added or updated the [header](https://bookshelf.docs.gunivers.net/en/latest/contribute/file-format.html) of the features' root function I contribute
- - [ ] I [tested](https://bookshelf.docs.gunivers.net/en/latest/contribute/debug.html#unit-tests) my contribution
+ - [ ] I have added or updated the [header](https://bookshelf.docs.gunivers.net/en/latest/contribute/file-format.html) of the features' root function I contribute
+ - [ ] I have [tested](https://bookshelf.docs.gunivers.net/en/latest/contribute/debug.html#unit-tests) my contribution
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
new file mode 100644
index 0000000000..9842b11eb3
--- /dev/null
+++ b/.github/workflows/pull-request.yml
@@ -0,0 +1,50 @@
+name: π Pull Request Checks
+
+on:
+ pull_request:
+ paths:
+ - "datapacks/**"
+ types:
+ [
+ opened,
+ synchronize,
+ reopened,
+ labeled,
+ unlabeled
+ ]
+
+env:
+ GITHUB_EVENT: ${{ toJSON(github.event) }}
+
+jobs:
+ review-metadata:
+ name: π Metadata Review
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
+
+ - name: Install dependencies
+ run: pip install -e ./scripts
+
+ - name: Check installation
+ run: python -m pip list
+
+ - name: Check function headers
+ run: python scripts/ci/check_function_headers_wf.py
+
+ - name: Check feature tag metadata
+ run: python scripts/ci/check_feature_tag_metadata_wf.py
+
+ - name: Check generated metadata
+ run: python scripts/ci/check_generated_metadata_wf.py
+
+ - name: Check module metadata files
+ run: python scripts/ci/check_metadata_files_wf.py
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 487f3c57cf..4a15af3d5e 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -14,15 +14,23 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- - name: Setup environment variables
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
+
+ - name: Install dependencies
+ run: pip install -e ./scripts
+
+ - name: Set environment variables
run: |
- pip install -r scripts/requirements.txt
- python3 scripts/definitions.py
TAG=${{ github.ref_name }}
echo "VERSION=${TAG#v}" >> $GITHUB_ENV
+ echo "MC_VERSION=$(python -c 'import definitions; print(definitions.MC_VERSION)')" >> $GITHUB_ENV
+ echo "BUILD_PATH=$(python -c 'import definitions; print(definitions.BUILD_PATH)')" >> $GITHUB_ENV
- name: Package datapacks
- run: python3 scripts/distribute.py -v ${{ env.MC_VERSION }}-${{ env.VERSION }} -w 0
+ run: python scripts/ci/distribute_release_wf.py -v ${{ env.MC_VERSION }}-${{ env.VERSION }} -w 0
- name: Package world
uses: aksiome/minecraft-package@master
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index fd67dfeaaa..01a0936a59 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -6,22 +6,23 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-java@v4
+
+ - name: Set up Java
+ uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- - name: Setup environement variables
- run: |
- pip install -r scripts/requirements.txt
- python3 scripts/definitions.py
- - name: Download and prepare files
- run: |
- curl -o server.jar ${{ env.TEST_FABRIC_SERVER }}
- mkdir mods
- curl -o mods/fabric-api.jar ${{ env.TEST_FABRIC_API }}
- curl -o mods/packtest.jar ${{ env.TEST_PACKTEST }}
- mkdir -p world
- cp -r ${{ env.DATAPACKS_PATH }} world/datapacks
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
+
+ - name: Install dependencies
+ run: pip install -e ./scripts
+
+ - name: Check installation
+ run: python -m pip list
+
- name: Run tests
- run: |
- java -Xmx2G -Dpacktest.auto -Dpacktest.auto.annotations -jar server.jar nogui
+ run: python scripts/ci/run_packtest_wf.py
diff --git a/.gitignore b/.gitignore
index dbdaac3f7a..8e7a3ec70b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,7 +5,6 @@
/DIM-1/
/DIM1/
/entities/
-/generated/
/playerdata/
/poi/
/region/
@@ -15,5 +14,6 @@
/session.lock
/uid.dat
/venv/
+/scripts/src/bookshelf_scripts.egg-info/
/.vscode/
diff --git a/README.md b/README.md
index 4ddf62e98a..74e6be5977 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
-
+
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/.metadata/generated/features.json b/datapacks/Bookshelf Dev/data/bs.dump/.metadata/generated/features.json
new file mode 100644
index 0000000000..45fa9036f9
--- /dev/null
+++ b/datapacks/Bookshelf Dev/data/bs.dump/.metadata/generated/features.json
@@ -0,0 +1,62 @@
+[
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "var",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html#dump-var",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/02",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/02",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/.metadata/generated/module.json b/datapacks/Bookshelf Dev/data/bs.dump/.metadata/generated/module.json
new file mode 100644
index 0000000000..64cc11494e
--- /dev/null
+++ b/datapacks/Bookshelf Dev/data/bs.dump/.metadata/generated/module.json
@@ -0,0 +1,15 @@
+{
+ "name": "bs.dump",
+ "display_name": "Dump",
+ "description": "Dump the content of given variables to the chat.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "features": [
+ "bs.dump:help",
+ "bs.dump:load",
+ "bs.dump:unload",
+ "bs.dump:var"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/.metadata/module.json b/datapacks/Bookshelf Dev/data/bs.dump/.metadata/module.json
new file mode 100644
index 0000000000..d2421799e6
--- /dev/null
+++ b/datapacks/Bookshelf Dev/data/bs.dump/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.dump",
+ "display_name": "Dump",
+ "description": "Dump the content of given variables to the chat.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html"
+}
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/__help__.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/__help__.mcfunction
index 1ebd9fece0..d2c05e4354 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/__help__.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.dump documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/__load__.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/__load__.mcfunction
index ecfb14a22d..6800368051 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/__load__.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
execute unless entity B5-0-0-0-2 run summon minecraft:text_display -30000000 0 1600 {UUID:[I;181,0,0,2],Tags:["bs.entity","bs.persistent"],view_range:0f}
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/__unload__.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/__unload__.mcfunction
index ea62792146..db23e9cc4a 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html
+# ------------------------------------------------------------------------------------------------------------
kill B5-0-0-0-2
forceload remove -30000000 1600
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/expand.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/expand.mcfunction
index a9b61eddd3..8733bfd1e7 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/expand.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/expand.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:out dump set value ['{"text":"","color":"#cccccc"}']
$data modify storage bs:data dump set value [{var:$(var),indent:'"\\u2000"',expand:1}]
function bs.dump:format/any
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/any.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/any.mcfunction
index aa341d7eab..3cda2e787c 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/any.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/any.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute if data storage bs:data dump[-1].var[] run return run function bs.dump:format/array/array
execute if data storage bs:data dump[-1].var{} run return run function bs.dump:format/compound/compound
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/array.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/array.mcfunction
index 65b1616df8..521cc81f01 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/array.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/array.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #dump.count bs.data if data storage bs:data dump[-1].var[]
execute store result score #dump.expand bs.data run data get storage bs:data dump[-1].expand
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/collapse.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/collapse.mcfunction
index 63b0e3e493..500449c08f 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/collapse.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/collapse.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
function bs.dump:format/bracket/open with storage bs:const dump
function bs.dump:format/collapse/collapse
function bs.dump:format/bracket/close with storage bs:const dump
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/compact/compact.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/compact/compact.mcfunction
index cc53ce9748..d7cc9017d3 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/compact/compact.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/compact/compact.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
function bs.dump:format/bracket/open with storage bs:const dump
function bs.dump:format/array/compact/loop
function bs.dump:format/bracket/close with storage bs:const dump
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/compact/loop.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/compact/loop.mcfunction
index 2268d743fb..e786b868a5 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/compact/loop.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/compact/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data dump append from storage bs:data dump[-1]
data modify storage bs:data dump[-1].var set from storage bs:data dump[-1].var[0]
function bs.dump:format/any
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/empty.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/empty.mcfunction
index cd28917f41..78c44a487d 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/empty.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/empty.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
function bs.dump:format/bracket/open with storage bs:const dump
function bs.dump:format/bracket/close with storage bs:const dump
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/loop.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/loop.mcfunction
index fa8850f06b..fefd758fef 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/loop.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/array/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:out dump append value '"\\n"'
data modify storage bs:out dump append from storage bs:data dump[].indent
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/brace/close.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/brace/close.mcfunction
index 0cccd2c7f9..a35232eb28 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/brace/close.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/brace/close.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #dump.depth bs.data if data storage bs:data dump[]
scoreboard players operation #dump.depth bs.data %= 3 bs.const
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/brace/open.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/brace/open.mcfunction
index 0bfdf790fa..98b9a1b5da 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/brace/open.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/brace/open.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #dump.depth bs.data if data storage bs:data dump[]
scoreboard players operation #dump.depth bs.data %= 3 bs.const
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/bracket/close.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/bracket/close.mcfunction
index f264d7d582..2d4db365f8 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/bracket/close.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/bracket/close.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #dump.depth bs.data if data storage bs:data dump[]
scoreboard players operation #dump.depth bs.data %= 3 bs.const
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/bracket/open.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/bracket/open.mcfunction
index eaddf9d3ef..18f6c4a104 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/bracket/open.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/bracket/open.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #dump.depth bs.data if data storage bs:data dump[]
scoreboard players operation #dump.depth bs.data %= 3 bs.const
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/collapse/collapse.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/collapse/collapse.mcfunction
index c6052332e3..be9c3d1440 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/collapse/collapse.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/collapse/collapse.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify entity B5-0-0-0-2 text set value '{"storage":"bs:data","nbt":"dump[-1].var"}'
data modify entity B5-0-0-0-2 text set value '{"entity":"B5-0-0-0-2","nbt":"text"}'
data modify storage bs:data dump[-1].var set from entity B5-0-0-0-2 text
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/collapse/event.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/collapse/event.mcfunction
index b585b242be..2829421930 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/collapse/event.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/collapse/event.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify entity B5-0-0-0-2 text set value '[{"text":" ","color":"#999999"},{"score":{"name":"#dump.count","objective":"bs.data"}},{"text":" entries "}]'
data modify storage bs:out dump append from entity B5-0-0-0-2 text
$data modify storage bs:out dump append value "[\"\",{\"text\":\"βπβ\",\"color\":\"#cccccc\",\"bold\":true,\"clickEvent\":{\"action\":\"copy_to_clipboard\",\"value\":\"$(var)\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":\"Click to copy\"}},\" \",{\"text\":\"ββ¬β\",\"color\":\"#cccccc\",\"bold\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/function bs.dump:expand {var:$(var)}\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":\"Click to expand\"}},\" \"]"
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/collapse.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/collapse.mcfunction
index b9cc2edbe1..e3d6b2a380 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/collapse.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/collapse.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
function bs.dump:format/brace/open with storage bs:const dump
function bs.dump:format/collapse/collapse
function bs.dump:format/brace/close with storage bs:const dump
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/compound.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/compound.mcfunction
index 1192a15f0f..55cd5fd630 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/compound.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/compound.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #dump.count bs.data run data get storage bs:data dump[-1].var
execute store result score #dump.expand bs.data run data get storage bs:data dump[-1].expand
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/empty.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/empty.mcfunction
index 839af4583d..4564d3da94 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/empty.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/empty.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
function bs.dump:format/brace/open with storage bs:const dump
function bs.dump:format/brace/close with storage bs:const dump
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/key.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/key.mcfunction
index 3a8568eca6..9cff045bc5 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/key.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/key.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute unless data storage bs:ctx {_:":"} run data modify storage bs:data dump[-1].key set string storage bs:data dump[-1].key 1 -1
$execute unless data storage bs:ctx {_:":"} run data modify entity B5-0-0-0-2 text set value '[{"storage":"bs:ctx","nbt":"_"},{"storage":"bs:data","nbt":"dump[-1].key","color":"$(key)"},{"storage":"bs:ctx","nbt":"_"},{"text":": "}]'
$execute if data storage bs:ctx {_:":"} run data modify entity B5-0-0-0-2 text set value '[{"storage":"bs:data","nbt":"dump[-1].key","color":"$(key)"},{"text":": "}]'
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/loop.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/loop.mcfunction
index db47ed1eec..c76ae426f4 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/loop.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/compound/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:out dump append value '"\\n"'
data modify storage bs:out dump append from storage bs:data dump[].indent
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/number.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/number.mcfunction
index 64899f10b5..b56c6380b2 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/number.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/number.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute unless data storage bs:ctx _[2][1] run data modify storage bs:data dump[-1]._ set string storage bs:data dump[-1].var -1
execute unless data storage bs:ctx _[2][1] run data modify storage bs:data dump[-1].var set string storage bs:data dump[-1].var 0 -1
$data modify entity B5-0-0-0-2 text set value '[{"storage":"bs:data","nbt":"dump[-1].var","color":"$(number)"},{"storage":"bs:data","nbt":"dump[-1]._","color":"$(type)"}]'
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/score.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/score.mcfunction
index 6f7f17db10..55c66545fc 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/score.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/score.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify entity B5-0-0-0-2 text set value '{"score":{"name":"#dump.var","objective":"bs.data"},"color":"$(number)"}'
data modify storage bs:out dump append from entity B5-0-0-0-2 text
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/string/string.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/string/string.mcfunction
index a41e86faf4..26e4193be1 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/string/string.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/string/string.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify entity B5-0-0-0-2 text set value '{"storage":"bs:ctx","nbt":"_[-1]"}'
data modify storage bs:data dump[-1].var set string entity B5-0-0-0-2 text
function bs.dump:format/string/unquote with storage bs:data dump[-1]
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/string/unquote.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/string/unquote.mcfunction
index a962ba7da4..185b5d8a86 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/string/unquote.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/string/unquote.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:data dump[-1].var set value $(var)
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/format/undefined.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/format/undefined.mcfunction
index 7c93494295..0f85cb13b1 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/format/undefined.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/format/undefined.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:out dump append value '{"text":"undefined","color":"$(number)"}'
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/any.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/any.mcfunction
index ad820285ce..5a270cf1cb 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/any.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/any.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute if data storage bs:data dump[-1].var[] run return run function bs.dump:interpret/array/array
execute if data storage bs:data dump[-1].var{} run return run function bs.dump:interpret/compound/compound
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/array.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/array.mcfunction
index 7e834a429d..1e7aed0756 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/array.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/array.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #dump.count bs.data if data storage bs:data dump[-1].var[]
execute if score #dump.count bs.data matches 0 run return run function bs.dump:format/array/empty
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/compact/compact.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/compact/compact.mcfunction
index b2edc53e74..7ee14aa09d 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/compact/compact.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/compact/compact.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
function bs.dump:format/bracket/open with storage bs:const dump
execute if score #dump.count bs.data matches 1.. run function bs.dump:interpret/array/compact/loop
function bs.dump:format/bracket/close with storage bs:const dump
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/compact/loop.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/compact/loop.mcfunction
index bec6f200fe..8b66f5929e 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/compact/loop.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/compact/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data dump append from storage bs:data dump[-1]
data modify storage bs:data dump[-1].var set from storage bs:data dump[-1].var[0]
function bs.dump:interpret/any
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/loop.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/loop.mcfunction
index 9c18fb953f..93e9cc4b20 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/loop.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/array/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:out dump append value '"\\n"'
data modify storage bs:out dump append from storage bs:data dump[].indent
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/compound/compound.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/compound/compound.mcfunction
index 0c7cb0446a..d819c2a392 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/compound/compound.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/compound/compound.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #dump.count bs.data run data get storage bs:data dump[-1].var
execute if score #dump.count bs.data matches 0 run return run function bs.dump:format/compound/empty
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/compound/loop.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/compound/loop.mcfunction
index 5133fc55f6..f1af735cdf 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/compound/loop.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/compound/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:out dump append value '"\\n"'
data modify storage bs:out dump append from storage bs:data dump[].indent
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/cast.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/cast.mcfunction
index 5094e8e533..158cd4f3cc 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/cast.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/cast.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:data dump[-1].expand set value $(_)
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/guard.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/guard.mcfunction
index 14aab8d426..917ed46b92 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/guard.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/guard.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
return 1
$data get $(var) 0
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/init.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/init.mcfunction
index 4ed6283f91..901c8bfd7c 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/init.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/init.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result storage bs:ctx x int 1 run scoreboard players set #dump.cursor bs.data -2
execute store result storage bs:ctx y int 1 run scoreboard players set #dump.cursor bs.data -1
function bs.dump:interpret/path/expand/parse/next with storage bs:ctx
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/next.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/next.mcfunction
index 3b9e9fcecc..ecf45fed49 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/next.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/next.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:ctx _ set string storage bs:data dump[-1].var $(x) $(y)
execute if data storage bs:ctx {_:" "} run return run function bs.dump:interpret/path/expand/parse/terminate with storage bs:ctx
execute store result storage bs:ctx y int 1 run scoreboard players get #dump.cursor bs.data
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/terminate.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/terminate.mcfunction
index dd4bc918f2..b58d4fb799 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/terminate.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/expand/parse/terminate.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:ctx _ set string storage bs:data dump[-1].var $(y)
$data modify storage bs:data dump[-1].var set string storage bs:data dump[-1].var 0 $(x)
function bs.dump:interpret/path/expand/cast with storage bs:ctx
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/path.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/path.mcfunction
index 0b131434cf..51b94e6c8a 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/path.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/path.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store success score #success bs.data run function bs.dump:interpret/path/expand/guard with storage bs:data dump[-1]
execute if score #success bs.data matches 0 run function bs.dump:interpret/path/expand/parse/init with storage bs:ctx
execute if score #success bs.data matches 1 run data modify storage bs:data dump[-1].expand set value 2
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/populate.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/populate.mcfunction
index 14008e5423..90e9322927 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/populate.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/path/populate.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store success score #success bs.data run data get $(var)
execute if score #success bs.data matches 0 run data modify storage bs:data dump[-1].var set value {}
$execute if score #success bs.data matches 1 run data modify storage bs:data dump[-1].var set from $(var)
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/score.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/score.mcfunction
index 4c50f2fe5a..cda31ec086 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/score.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/interpret/score.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store success score #success bs.data run scoreboard players get $(var)
execute if score #success bs.data matches 0 run return run function bs.dump:format/undefined with storage bs:const dump
$scoreboard players operation #dump.var bs.data = $(var)
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/key/get.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/key/get.mcfunction
index e283e9983e..12b34f2d1c 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/key/get.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/key/get.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify entity B5-0-0-0-2 text set value '{"storage":"bs:data","nbt":"dump[-1].var"}'
function bs.dump:key/unquote with entity B5-0-0-0-2
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/quoted/double.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/quoted/double.mcfunction
index af4f640fbe..89d586ba66 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/quoted/double.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/quoted/double.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:ctx _ set string storage bs:data dump[-1].key $(x) $(y)
execute store result storage bs:ctx x int 1 run scoreboard players get #dump.cursor bs.data
execute store result storage bs:ctx y int 1 run scoreboard players add #dump.cursor bs.data 1
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/quoted/single.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/quoted/single.mcfunction
index 4e97916b8b..1ccacc8666 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/quoted/single.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/quoted/single.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:ctx _ set string storage bs:data dump[-1].key $(x) $(y)
execute store result storage bs:ctx x int 1 run scoreboard players get #dump.cursor bs.data
execute store result storage bs:ctx y int 1 run scoreboard players add #dump.cursor bs.data 1
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/terminate.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/terminate.mcfunction
index e012fd1c0a..c016578f2e 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/terminate.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/terminate.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:data dump[-1].key set string storage bs:data dump[-1].key 1 $(x)
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/unquoted.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/unquoted.mcfunction
index c344b7a6f7..ffe48f8811 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/unquoted.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/key/parse/unquoted.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:ctx _ set string storage bs:data dump[-1].key $(x) $(y)
execute if data storage bs:ctx {_:":"} run return run function bs.dump:key/parse/terminate with storage bs:ctx
execute store result storage bs:ctx x int 1 run scoreboard players get #dump.cursor bs.data
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/key/unquote.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/key/unquote.mcfunction
index b0cf30522e..32d0857480 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/key/unquote.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/key/unquote.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:data dump[-1].key set value $(text)
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/function/var.mcfunction b/datapacks/Bookshelf Dev/data/bs.dump/function/var.mcfunction
index c673ea980b..4ca6ee115f 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/function/var.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.dump/function/var.mcfunction
@@ -1,19 +1,22 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html#dump-var
+# ------------------------------------------------------------------------------------------------------------
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 02/03/2024 (1.20.4)
-# Last modification: 02/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html
-# Dependencies:
# Note: Thanks to tryashtar and PiggyPig for inspiring the idea behind this module.
-# CODE ------------------------------------------------------------------------
-
data modify storage bs:out dump set value ['[{"text":"[","color":"#cccccc"},{"selector":"@s"},"] β "]']
$data modify storage bs:data dump set value [{var:$(var),indent:'"\\u2000"'}]
function bs.dump:interpret/any
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/tags/function/help.json b/datapacks/Bookshelf Dev/data/bs.dump/tags/function/help.json
index dc627dd767..24a7989576 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/tags/function/help.json
+++ b/datapacks/Bookshelf Dev/data/bs.dump/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/05",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/05",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.dump:__help__"
]
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/tags/function/load.json b/datapacks/Bookshelf Dev/data/bs.dump/tags/function/load.json
index 8a9a1489f9..5d3092ba9a 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/tags/function/load.json
+++ b/datapacks/Bookshelf Dev/data/bs.dump/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/05",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/05",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.dump:__load__"
]
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/tags/function/unload.json b/datapacks/Bookshelf Dev/data/bs.dump/tags/function/unload.json
index 183b1ca344..6cbad590b3 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/tags/function/unload.json
+++ b/datapacks/Bookshelf Dev/data/bs.dump/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/05",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/05",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.dump:__unload__"
]
diff --git a/datapacks/Bookshelf Dev/data/bs.dump/tags/function/var.json b/datapacks/Bookshelf Dev/data/bs.dump/tags/function/var.json
index 8d2e014810..8d3db043ba 100644
--- a/datapacks/Bookshelf Dev/data/bs.dump/tags/function/var.json
+++ b/datapacks/Bookshelf Dev/data/bs.dump/tags/function/var.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html#dump-var",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/02",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/02",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.dump:var"
]
diff --git a/datapacks/Bookshelf Dev/data/bs.log/.metadata/generated/features.json b/datapacks/Bookshelf Dev/data/bs.log/.metadata/generated/features.json
new file mode 100644
index 0000000000..40d9ea44ed
--- /dev/null
+++ b/datapacks/Bookshelf Dev/data/bs.log/.metadata/generated/features.json
@@ -0,0 +1,122 @@
+[
+ {
+ "name": "debug",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#debug",
+ "authors": [
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "error",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#error",
+ "authors": [
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "info",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#info",
+ "authors": [
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "tick",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "warn",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#warn",
+ "authors": [
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "version": "1.20.6"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf Dev/data/bs.log/.metadata/generated/module.json b/datapacks/Bookshelf Dev/data/bs.log/.metadata/generated/module.json
new file mode 100644
index 0000000000..340f814ced
--- /dev/null
+++ b/datapacks/Bookshelf Dev/data/bs.log/.metadata/generated/module.json
@@ -0,0 +1,20 @@
+{
+ "name": "bs.log",
+ "display_name": "Log",
+ "description": "Log messages in the chat with varying levels of severity.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "features": [
+ "bs.log:debug",
+ "bs.log:error",
+ "bs.log:help",
+ "bs.log:info",
+ "bs.log:load",
+ "bs.log:tick",
+ "bs.log:unload",
+ "bs.log:warn"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf Dev/data/bs.log/.metadata/module.json b/datapacks/Bookshelf Dev/data/bs.log/.metadata/module.json
new file mode 100644
index 0000000000..f4bf53a34b
--- /dev/null
+++ b/datapacks/Bookshelf Dev/data/bs.log/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.log",
+ "display_name": "Log",
+ "description": "Log messages in the chat with varying levels of severity.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html"
+}
diff --git a/datapacks/Bookshelf Dev/data/bs.log/function/__help__.mcfunction b/datapacks/Bookshelf Dev/data/bs.log/function/__help__.mcfunction
index a41daae4bc..679804a812 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/function/__help__.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.log/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.log documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf Dev/data/bs.log/function/__load__.mcfunction b/datapacks/Bookshelf Dev/data/bs.log/function/__load__.mcfunction
index e0dbea1bb2..44adb08199 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/function/__load__.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.log/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
setblock -30000000 0 1605 minecraft:repeating_command_block[facing=up]{auto:1b,Command:"help me",TrackOutput:1}
diff --git a/datapacks/Bookshelf Dev/data/bs.log/function/__tick__.mcfunction b/datapacks/Bookshelf Dev/data/bs.log/function/__tick__.mcfunction
index ecf1619c4c..f0e50f2957 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/function/__tick__.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.log/function/__tick__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html
+# ------------------------------------------------------------------------------------------------------------
execute store success score #success bs.data run data modify storage bs:data log.time.full_time set string block -30000000 0 1605 LastOutput 10 18
execute if score #success bs.data matches 1 store result score #log.gametime bs.data run time query gametime
diff --git a/datapacks/Bookshelf Dev/data/bs.log/function/__unload__.mcfunction b/datapacks/Bookshelf Dev/data/bs.log/function/__unload__.mcfunction
index 25c9b2154f..07b416c5d3 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.log/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html
+# ------------------------------------------------------------------------------------------------------------
setblock -30000000 0 1605 minecraft:air
forceload remove -30000000 1600
diff --git a/datapacks/Bookshelf Dev/data/bs.log/function/debug.mcfunction b/datapacks/Bookshelf Dev/data/bs.log/function/debug.mcfunction
index c2e8aba7a7..5db223aa6c 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/function/debug.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.log/function/debug.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: theogiraudet
-# Contributors: Aksiome
-
-# Version: 1.0
-# Created: 05/08/2023 (23w31a)
-# Last modification: 06/08/2023 (23w31a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#debug
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#debug
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:in log set value {path: "$(path)", message: '$(message)', namespace: "$(namespace)", tag: "$(tag)"}
# Output on bs:in log
diff --git a/datapacks/Bookshelf Dev/data/bs.log/function/error.mcfunction b/datapacks/Bookshelf Dev/data/bs.log/function/error.mcfunction
index f1cefb2769..9001db3e6f 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/function/error.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.log/function/error.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: theogiraudet
-# Contributors: Aksiome
-
-# Version: 1.0
-# Created: 05/08/2023 (23w31a)
-# Last modification: 06/08/2023 (23w31a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#error
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#error
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:in log set value {path: "$(path)", message: '$(message)', namespace: "$(namespace)", tag: "$(tag)"}
# Output on bs:in log
diff --git a/datapacks/Bookshelf Dev/data/bs.log/function/info.mcfunction b/datapacks/Bookshelf Dev/data/bs.log/function/info.mcfunction
index 6a91b3968d..b548476312 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/function/info.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.log/function/info.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: theogiraudet
-# Contributor: Aksiome
-
-# Version: 1.0
-# Created: 05/08/2023 (23w31a)
-# Last modification: 06/08/2023 (23w31a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#info
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#info
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:in log set value {path: "$(path)", message: '$(message)', namespace: "$(namespace)", tag: "$(tag)"}
# Output on bs:in log
diff --git a/datapacks/Bookshelf Dev/data/bs.log/function/time/get.mcfunction b/datapacks/Bookshelf Dev/data/bs.log/function/time/get.mcfunction
index 48825eb2e1..f76ee27296 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/function/time/get.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.log/function/time/get.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:in log.hours set string storage bs:data log.time.full_time 0 2
data modify storage bs:in log.minutes set string storage bs:data log.time.full_time 3 5
data modify storage bs:in log.seconds set string storage bs:data log.time.full_time 6 8
diff --git a/datapacks/Bookshelf Dev/data/bs.log/function/time/ticks/format.mcfunction b/datapacks/Bookshelf Dev/data/bs.log/function/time/ticks/format.mcfunction
index 3cc182b16c..100d41e6fd 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/function/time/ticks/format.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.log/function/time/ticks/format.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:in log.ticks set value "0$(ticks)"
diff --git a/datapacks/Bookshelf Dev/data/bs.log/function/time/ticks/stringify.mcfunction b/datapacks/Bookshelf Dev/data/bs.log/function/time/ticks/stringify.mcfunction
index 6a78c3e82e..10a79ced17 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/function/time/ticks/stringify.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.log/function/time/ticks/stringify.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:in log.ticks set value "$(ticks)"
diff --git a/datapacks/Bookshelf Dev/data/bs.log/function/warn.mcfunction b/datapacks/Bookshelf Dev/data/bs.log/function/warn.mcfunction
index a9014197a5..ac5c5c76c7 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/function/warn.mcfunction
+++ b/datapacks/Bookshelf Dev/data/bs.log/function/warn.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: theogiraudet
-# Contributors: Aksiome
-
-# Version: 1.0
-# Created: 05/08/2023 (23w31a)
-# Last modification: 06/08/2023 (23w31a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#warn
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#warn
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:in log set value {path: "$(path)", message: '$(message)', namespace: "$(namespace)", tag: "$(tag)"}
# Output on bs:in log
diff --git a/datapacks/Bookshelf Dev/data/bs.log/tags/function/debug.json b/datapacks/Bookshelf Dev/data/bs.log/tags/function/debug.json
index e400b50b89..e42a0c46cd 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/tags/function/debug.json
+++ b/datapacks/Bookshelf Dev/data/bs.log/tags/function/debug.json
@@ -1,4 +1,22 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#debug",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributor": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "minecraft_version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "minecraft_version": "1.20.6"
+ }
+ },
"values": [
"bs.log:debug"
]
diff --git a/datapacks/Bookshelf Dev/data/bs.log/tags/function/error.json b/datapacks/Bookshelf Dev/data/bs.log/tags/function/error.json
index 7739daa627..46a4d0cbc6 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/tags/function/error.json
+++ b/datapacks/Bookshelf Dev/data/bs.log/tags/function/error.json
@@ -1,4 +1,22 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#error",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributor": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "minecraft_version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "minecraft_version": "1.20.6"
+ }
+ },
"values": [
"bs.log:error"
]
diff --git a/datapacks/Bookshelf Dev/data/bs.log/tags/function/help.json b/datapacks/Bookshelf Dev/data/bs.log/tags/function/help.json
index d508707b0a..c5608322b0 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/tags/function/help.json
+++ b/datapacks/Bookshelf Dev/data/bs.log/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.log:__help__"
]
diff --git a/datapacks/Bookshelf Dev/data/bs.log/tags/function/info.json b/datapacks/Bookshelf Dev/data/bs.log/tags/function/info.json
index e2f5cafc53..c0a4cf45d7 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/tags/function/info.json
+++ b/datapacks/Bookshelf Dev/data/bs.log/tags/function/info.json
@@ -1,4 +1,22 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#info",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributor": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "minecraft_version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "minecraft_version": "1.20.6"
+ }
+ },
"values": [
"bs.log:info"
]
diff --git a/datapacks/Bookshelf Dev/data/bs.log/tags/function/load.json b/datapacks/Bookshelf Dev/data/bs.log/tags/function/load.json
index a893c8962a..dfc989bdca 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/tags/function/load.json
+++ b/datapacks/Bookshelf Dev/data/bs.log/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.log:__load__"
]
diff --git a/datapacks/Bookshelf Dev/data/bs.log/tags/function/tick.json b/datapacks/Bookshelf Dev/data/bs.log/tags/function/tick.json
index 1e9f725e78..7c40064361 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/tags/function/tick.json
+++ b/datapacks/Bookshelf Dev/data/bs.log/tags/function/tick.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.log:__tick__"
]
diff --git a/datapacks/Bookshelf Dev/data/bs.log/tags/function/unload.json b/datapacks/Bookshelf Dev/data/bs.log/tags/function/unload.json
index 781e033810..453d31e8d8 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/tags/function/unload.json
+++ b/datapacks/Bookshelf Dev/data/bs.log/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.log:__unload__"
]
diff --git a/datapacks/Bookshelf Dev/data/bs.log/tags/function/warn.json b/datapacks/Bookshelf Dev/data/bs.log/tags/function/warn.json
index 8021d90614..e3a450271b 100644
--- a/datapacks/Bookshelf Dev/data/bs.log/tags/function/warn.json
+++ b/datapacks/Bookshelf Dev/data/bs.log/tags/function/warn.json
@@ -1,4 +1,22 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#warn",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributor": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "minecraft_version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "minecraft_version": "1.20.6"
+ }
+ },
"values": [
"bs.log:warn"
]
diff --git a/datapacks/Bookshelf/data/bs.biome/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.biome/.metadata/generated/features.json
new file mode 100644
index 0000000000..b0cde3a554
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.biome/.metadata/generated/features.json
@@ -0,0 +1,80 @@
+[
+ {
+ "name": "get_biome",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-biome",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/04/22",
+ "version": "1.20.5"
+ },
+ "updated": {
+ "date": "2024/04/22",
+ "version": "1.20.5"
+ }
+ },
+ {
+ "name": "get_temperature",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-temperature",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2018/08/16",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2024/04/22",
+ "version": "1.20.5"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.5"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.5"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.5"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.biome/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.biome/.metadata/generated/module.json
new file mode 100644
index 0000000000..c151518875
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.biome/.metadata/generated/module.json
@@ -0,0 +1,20 @@
+{
+ "name": "bs.biome",
+ "display_name": "Biome",
+ "description": "Comprehensive information and tools related to biome properties.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "features": [
+ "bs.biome:get_biome",
+ "bs.biome:get_temperature",
+ "bs.biome:help",
+ "bs.biome:load",
+ "bs.biome:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.biome/.metadata/module.json b/datapacks/Bookshelf/data/bs.biome/.metadata/module.json
new file mode 100644
index 0000000000..c5ef8eb508
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.biome/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.biome",
+ "display_name": "Biome",
+ "description": "Comprehensive information and tools related to biome properties.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.biome/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.biome/function/__help__.mcfunction
index 2a6795fa46..7138888543 100644
--- a/datapacks/Bookshelf/data/bs.biome/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.biome/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.biome documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.biome/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.biome/function/__load__.mcfunction
index a761a68c90..0b38c7a65b 100644
--- a/datapacks/Bookshelf/data/bs.biome/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.biome/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives add bs.out dummy [{"text":"BS ","color":"dark_gray"},{"text":"Output","color":"aqua"}]
scoreboard objectives add bs.data dummy [{"text":"BS ","color":"dark_gray"},{"text":"Data","color":"aqua"}]
diff --git a/datapacks/Bookshelf/data/bs.biome/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.biome/function/__unload__.mcfunction
index f6a9f6f8f8..20484c404b 100644
--- a/datapacks/Bookshelf/data/bs.biome/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.biome/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives remove bs.out
scoreboard objectives remove bs.data
diff --git a/datapacks/Bookshelf/data/bs.biome/function/get/biome/get_biome.mcfunction b/datapacks/Bookshelf/data/bs.biome/function/get/biome/get_biome.mcfunction
index 1c73eaa5f5..c456346b97 100644
--- a/datapacks/Bookshelf/data/bs.biome/function/get/biome/get_biome.mcfunction
+++ b/datapacks/Bookshelf/data/bs.biome/function/get/biome/get_biome.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 22/04/2024 (1.20.5)
-# Last modification: 22/04/2024 (1.20.5)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-biome
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-biome
+# ------------------------------------------------------------------------------------------------------------
scoreboard players set #biome.id bs.data 0
execute if biome ~ ~ ~ #bs.biome:type/group_1 run scoreboard players add #biome.id bs.data 1
diff --git a/datapacks/Bookshelf/data/bs.biome/function/get/biome/lookup.mcfunction b/datapacks/Bookshelf/data/bs.biome/function/get/biome/lookup.mcfunction
index 640f82aa11..708f90dc05 100644
--- a/datapacks/Bookshelf/data/bs.biome/function/get/biome/lookup.mcfunction
+++ b/datapacks/Bookshelf/data/bs.biome/function/get/biome/lookup.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:out biome set from storage bs:const biome[$(y)]
diff --git a/datapacks/Bookshelf/data/bs.biome/function/get/temperature/get_temperature.mcfunction b/datapacks/Bookshelf/data/bs.biome/function/get/temperature/get_temperature.mcfunction
index d3628d8c33..f1fe081afc 100644
--- a/datapacks/Bookshelf/data/bs.biome/function/get/temperature/get_temperature.mcfunction
+++ b/datapacks/Bookshelf/data/bs.biome/function/get/temperature/get_temperature.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: theogiraudet
-# Contributors: Aksiome
-
-# Version: 2.0
-# Created: ??/??/???? (1.14)
-# Last modification: 22/04/2024 (1.20.5)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-temperature
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-temperature
+# ------------------------------------------------------------------------------------------------------------
function #bs.biome:get_biome
execute store result score #biome.temperature bs.data run data get storage bs:out biome.temperature 100000000
diff --git a/datapacks/Bookshelf/data/bs.biome/function/get/temperature/variation.mcfunction b/datapacks/Bookshelf/data/bs.biome/function/get/temperature/variation.mcfunction
index c522897d23..3aad3f8f5a 100644
--- a/datapacks/Bookshelf/data/bs.biome/function/get/temperature/variation.mcfunction
+++ b/datapacks/Bookshelf/data/bs.biome/function/get/temperature/variation.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
tp @s ~ ~ ~
execute store result score #biome.variation bs.data run data get entity @s Pos[1]
scoreboard players remove #biome.variation bs.data 80
diff --git a/datapacks/Bookshelf/data/bs.biome/function/load/types_table.mcfunction b/datapacks/Bookshelf/data/bs.biome/function/load/types_table.mcfunction
index e00b25c356..29f7c721da 100644
--- a/datapacks/Bookshelf/data/bs.biome/function/load/types_table.mcfunction
+++ b/datapacks/Bookshelf/data/bs.biome/function/load/types_table.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
data modify storage bs:const biome set value [{type:"minecraft:badlands",temperature:2.0,has_precipitation:0b},{type:"minecraft:bamboo_jungle",temperature:0.95,has_precipitation:1b},{type:"minecraft:basalt_deltas",temperature:2.0,has_precipitation:0b},{type:"minecraft:beach",temperature:0.8,has_precipitation:1b},{type:"minecraft:birch_forest",temperature:0.6,has_precipitation:1b},{type:"minecraft:cherry_grove",temperature:0.5,has_precipitation:1b},{type:"minecraft:cold_ocean",temperature:0.5,has_precipitation:1b},{type:"minecraft:crimson_forest",temperature:2.0,has_precipitation:0b},{type:"minecraft:dark_forest",temperature:0.7,has_precipitation:1b},{type:"minecraft:deep_cold_ocean",temperature:0.5,has_precipitation:1b},{type:"minecraft:deep_dark",temperature:0.8,has_precipitation:1b},{type:"minecraft:deep_frozen_ocean",temperature:0.5,has_precipitation:1b},{type:"minecraft:deep_lukewarm_ocean",temperature:0.5,has_precipitation:1b},{type:"minecraft:deep_ocean",temperature:0.5,has_precipitation:1b},{type:"minecraft:desert",temperature:2.0,has_precipitation:0b},{type:"minecraft:dripstone_caves",temperature:0.8,has_precipitation:1b},{type:"minecraft:end_barrens",temperature:0.5,has_precipitation:0b},{type:"minecraft:end_highlands",temperature:0.5,has_precipitation:0b},{type:"minecraft:end_midlands",temperature:0.5,has_precipitation:0b},{type:"minecraft:eroded_badlands",temperature:2.0,has_precipitation:0b},{type:"minecraft:flower_forest",temperature:0.7,has_precipitation:1b},{type:"minecraft:forest",temperature:0.7,has_precipitation:1b},{type:"minecraft:frozen_ocean",temperature:0.0,has_precipitation:1b},{type:"minecraft:frozen_peaks",temperature:-0.7,has_precipitation:1b},{type:"minecraft:frozen_river",temperature:0.0,has_precipitation:1b},{type:"minecraft:grove",temperature:-0.2,has_precipitation:1b},{type:"minecraft:ice_spikes",temperature:0.0,has_precipitation:1b},{type:"minecraft:jagged_peaks",temperature:-0.7,has_precipitation:1b},{type:"minecraft:jungle",temperature:0.95,has_precipitation:1b},{type:"minecraft:lukewarm_ocean",temperature:0.5,has_precipitation:1b},{type:"minecraft:lush_caves",temperature:0.5,has_precipitation:1b},{type:"minecraft:mangrove_swamp",temperature:0.8,has_precipitation:1b},{type:"minecraft:meadow",temperature:0.5,has_precipitation:1b},{type:"minecraft:mushroom_fields",temperature:0.9,has_precipitation:1b},{type:"minecraft:nether_wastes",temperature:2.0,has_precipitation:0b},{type:"minecraft:ocean",temperature:0.5,has_precipitation:1b},{type:"minecraft:old_growth_birch_forest",temperature:0.6,has_precipitation:1b},{type:"minecraft:old_growth_pine_taiga",temperature:0.3,has_precipitation:1b},{type:"minecraft:old_growth_spruce_taiga",temperature:0.25,has_precipitation:1b},{type:"minecraft:plains",temperature:0.8,has_precipitation:1b},{type:"minecraft:river",temperature:0.5,has_precipitation:1b},{type:"minecraft:savanna",temperature:2.0,has_precipitation:0b},{type:"minecraft:savanna_plateau",temperature:2.0,has_precipitation:0b},{type:"minecraft:small_end_islands",temperature:0.5,has_precipitation:0b},{type:"minecraft:snowy_beach",temperature:0.05,has_precipitation:1b},{type:"minecraft:snowy_plains",temperature:0.0,has_precipitation:1b},{type:"minecraft:snowy_slopes",temperature:-0.3,has_precipitation:1b},{type:"minecraft:snowy_taiga",temperature:-0.5,has_precipitation:1b},{type:"minecraft:soul_sand_valley",temperature:2.0,has_precipitation:0b},{type:"minecraft:sparse_jungle",temperature:0.95,has_precipitation:1b},{type:"minecraft:stony_peaks",temperature:1.0,has_precipitation:1b},{type:"minecraft:stony_shore",temperature:0.2,has_precipitation:1b},{type:"minecraft:sunflower_plains",temperature:0.8,has_precipitation:1b},{type:"minecraft:swamp",temperature:0.8,has_precipitation:1b},{type:"minecraft:taiga",temperature:0.25,has_precipitation:1b},{type:"minecraft:the_end",temperature:0.5,has_precipitation:0b},{type:"minecraft:the_void",temperature:0.5,has_precipitation:0b},{type:"minecraft:warm_ocean",temperature:0.5,has_precipitation:1b},{type:"minecraft:warped_forest",temperature:2.0,has_precipitation:0b},{type:"minecraft:windswept_forest",temperature:0.2,has_precipitation:1b},{type:"minecraft:windswept_gravelly_hills",temperature:0.2,has_precipitation:1b},{type:"minecraft:windswept_hills",temperature:0.2,has_precipitation:1b},{type:"minecraft:windswept_savanna",temperature:2.0,has_precipitation:0b},{type:"minecraft:wooded_badlands",temperature:2.0,has_precipitation:0b}]
diff --git a/datapacks/Bookshelf/data/bs.biome/tags/function/get_biome.json b/datapacks/Bookshelf/data/bs.biome/tags/function/get_biome.json
index fe8dd7a3d7..217a66129b 100644
--- a/datapacks/Bookshelf/data/bs.biome/tags/function/get_biome.json
+++ b/datapacks/Bookshelf/data/bs.biome/tags/function/get_biome.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-biome",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/04/22",
+ "minecraft_version": "1.20.5"
+ },
+ "updated": {
+ "date": "2024/04/22",
+ "minecraft_version": "1.20.5"
+ }
+ },
"values": [
"bs.biome:get/biome/get_biome"
]
diff --git a/datapacks/Bookshelf/data/bs.biome/tags/function/get_temperature.json b/datapacks/Bookshelf/data/bs.biome/tags/function/get_temperature.json
index 909c6311a0..41b52f4715 100644
--- a/datapacks/Bookshelf/data/bs.biome/tags/function/get_temperature.json
+++ b/datapacks/Bookshelf/data/bs.biome/tags/function/get_temperature.json
@@ -1,4 +1,22 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-temperature",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2018/08/16",
+ "minecraft_version": "1.14"
+ },
+ "updated": {
+ "date": "2024/04/22",
+ "minecraft_version": "1.20.5"
+ }
+ },
"values": [
"bs.biome:get/temperature/get_temperature"
]
diff --git a/datapacks/Bookshelf/data/bs.biome/tags/function/help.json b/datapacks/Bookshelf/data/bs.biome/tags/function/help.json
index 505b3e2fba..6d195a7009 100644
--- a/datapacks/Bookshelf/data/bs.biome/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.biome/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "minecraft_version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.5"
+ }
+ },
"values": [
"bs.biome:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.biome/tags/function/load.json b/datapacks/Bookshelf/data/bs.biome/tags/function/load.json
index a9c5f9340c..f9fb7b9d30 100644
--- a/datapacks/Bookshelf/data/bs.biome/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.biome/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "minecraft_version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.5"
+ }
+ },
"values": [
"bs.biome:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.biome/tags/function/unload.json b/datapacks/Bookshelf/data/bs.biome/tags/function/unload.json
index a3bfc2920e..21aafd4b13 100644
--- a/datapacks/Bookshelf/data/bs.biome/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.biome/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "minecraft_version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.5"
+ }
+ },
"values": [
"bs.biome:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.bitwise/.metadata/generated/features.json
new file mode 100644
index 0000000000..ebec9a0fdc
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.bitwise/.metadata/generated/features.json
@@ -0,0 +1,158 @@
+[
+ {
+ "name": "and",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/02/27",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/22",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "bit_count",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#bit-count",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "bit_length",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#bit-length",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2020/09/06",
+ "version": "1.16"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "not",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/08/27",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2024/03/18",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "or",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/02/27",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/22",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "two_complement",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#complement-to-2",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2020/09/06",
+ "version": "1.16"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "xor",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/02/27",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/22",
+ "version": "23w33a"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.bitwise/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.bitwise/.metadata/generated/module.json
new file mode 100644
index 0000000000..ef1ddc5702
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.bitwise/.metadata/generated/module.json
@@ -0,0 +1,22 @@
+{
+ "name": "bs.bitwise",
+ "display_name": "Bitwise",
+ "description": "A collection of various bitwise operations, providing versatile tools for manipulating binary data.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "features": [
+ "bs.bitwise:and",
+ "bs.bitwise:bit_count",
+ "bs.bitwise:bit_length",
+ "bs.bitwise:help",
+ "bs.bitwise:load",
+ "bs.bitwise:not",
+ "bs.bitwise:or",
+ "bs.bitwise:two_complement",
+ "bs.bitwise:unload",
+ "bs.bitwise:xor"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.bitwise/.metadata/module.json b/datapacks/Bookshelf/data/bs.bitwise/.metadata/module.json
new file mode 100644
index 0000000000..9e02468213
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.bitwise/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.bitwise",
+ "display_name": "Bitwise",
+ "description": "A collection of various bitwise operations, providing versatile tools for manipulating binary data.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/__help__.mcfunction
index 399ff0ec13..eb181cff90 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.bitwise documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/__load__.mcfunction
index 2740a01cbd..502ef7d3c2 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives add bs.in dummy [{"text":"BS ","color":"dark_gray"},{"text":"Input","color":"aqua"}]
scoreboard objectives add bs.out dummy [{"text":"BS ","color":"dark_gray"},{"text":"Output","color":"aqua"}]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/__unload__.mcfunction
index 0e89ab85c6..eb5c388eaf 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives remove bs.in
scoreboard objectives remove bs.out
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/and/and.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/and/and.mcfunction
index 3b91579454..157bccd5f7 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/and/and.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/and/and.mcfunction
@@ -1,22 +1,25 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators
+# ------------------------------------------------------------------------------------------------------------
-# Authors: theogiraudet, Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: ??/??/???? (1.16)
-# Last modification: 25/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators
-# Dependencies:
# Note:
# - This function returns the and bitwise between two numbers.
# - Example: -178 & 32165 = 32004
# The result is the number composed by keeping all one at the same position in the two binary representations of these numbers.
-# CODE ------------------------------------------------------------------------
-
scoreboard players operation #bitwise.and.a bs.data = $bitwise.and.a bs.in
scoreboard players operation #bitwise.and.b bs.data = $bitwise.and.b bs.in
function bs.bitwise:and/compute
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/and/compute.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/and/compute.mcfunction
index 4d433ddc07..56741c542b 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/and/compute.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/and/compute.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
scoreboard players set #bitwise.and bs.data 0
execute if score #bitwise.and.a bs.data matches ..-1 if score #bitwise.and.b bs.data matches ..-1 run scoreboard players set #bitwise.and bs.data -2147483648
scoreboard players operation #bitwise.and.a bs.data *= 2 bs.const
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/bit_count.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/bit_count.mcfunction
index cc56497750..d4f43e1ba5 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/bit_count.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/bit_count.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 27/02/2024 (1.20.4)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#bit-count
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#bit-count
+# ------------------------------------------------------------------------------------------------------------
scoreboard players set $bitwise.bit_count bs.out 0
scoreboard players operation #bitwise.bit_count bs.data = $bitwise.bit_count.n bs.in
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/bit_length.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/bit_length.mcfunction
index 20277b6d19..4125e6e5ee 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/bit_length.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/bit_length.mcfunction
@@ -1,20 +1,24 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#bit-length
+# ------------------------------------------------------------------------------------------------------------
-# Authors: theogiraudet, Aksiome
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.16)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#bit-length
-# Dependencies:
# Note:
# - This function returns the number of bits needed to represent a number
# - Example: a = 1451, (a)2 = 0b10110101011, |(a)2| = 11
-# CODE ------------------------------------------------------------------------
scoreboard players operation #bitwise.bit_length bs.data = $bitwise.bit_length.n bs.in
execute if score #bitwise.bit_length bs.data matches ..-1 run scoreboard players operation #bitwise.bit_length bs.data *= -1 bs.const
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_1.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_1.mcfunction
index c34430e293..37e5e4baab 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_1.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_1.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute if score #bitwise.bit_length bs.data matches 0 run return run scoreboard players set $bitwise.bit_length bs.out 0
execute if score #bitwise.bit_length bs.data matches 1 run return run scoreboard players set $bitwise.bit_length bs.out 1
execute if score #bitwise.bit_length bs.data matches 2..3 run return run scoreboard players set $bitwise.bit_length bs.out 2
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_2.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_2.mcfunction
index da78c0b75a..4bd60b406b 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_2.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_2.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute if score #bitwise.bit_length bs.data matches 128..255 run return run scoreboard players set $bitwise.bit_length bs.out 8
execute if score #bitwise.bit_length bs.data matches 256..511 run return run scoreboard players set $bitwise.bit_length bs.out 9
execute if score #bitwise.bit_length bs.data matches 512..1023 run return run scoreboard players set $bitwise.bit_length bs.out 10
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_3.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_3.mcfunction
index 7232a6a8bf..21a3fac786 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_3.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_3.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute if score #bitwise.bit_length bs.data matches 32768..65535 run return run scoreboard players set $bitwise.bit_length bs.out 16
execute if score #bitwise.bit_length bs.data matches 65536..131071 run return run scoreboard players set $bitwise.bit_length bs.out 17
execute if score #bitwise.bit_length bs.data matches 131072..262143 run return run scoreboard players set $bitwise.bit_length bs.out 18
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_4.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_4.mcfunction
index 7304d0a420..bd5d3ae420 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_4.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/bit_length/group_4.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute if score #bitwise.bit_length bs.data matches 8388608..16777215 run return run scoreboard players set $bitwise.bit_length bs.out 24
execute if score #bitwise.bit_length bs.data matches 16777216..33554431 run return run scoreboard players set $bitwise.bit_length bs.out 25
execute if score #bitwise.bit_length bs.data matches 33554432..67108863 run return run scoreboard players set $bitwise.bit_length bs.out 26
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/not.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/not.mcfunction
index 13bf77293f..a95d54492d 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/not.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/not.mcfunction
@@ -1,19 +1,22 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators
+# ------------------------------------------------------------------------------------------------------------
-# Authors: theogiraudet
-# Contributors: Aksiome
-
-# Version: 1.0
-# Created: ??/??/???? (1.16)
-# Last modification: 25/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators
-# Dependencies:
# Note: This function returns the bit negation of a number
-# CODE ------------------------------------------------------------------------
-
scoreboard players operation $bitwise.not bs.out = $bitwise.not.n bs.in
scoreboard players operation $bitwise.not bs.out *= -1 bs.const
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/or.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/or.mcfunction
index 1c7c0dbf85..575e7cc8db 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/or.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/or.mcfunction
@@ -1,23 +1,26 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators
+# ------------------------------------------------------------------------------------------------------------
-# Authors: theogiraudet, Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: ??/??/???? (1.16)
-# Last modification: 25/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators
-# Dependencies:
# Note:
# - This function returns the or bitwise between two numbers.
# - Example: -178 | 32165 = -17
# - Formula: a | b = (a + b) - (a & b)
# The result is the number composed by keeping all one in the two binary representations of these numbers.
-# CODE ------------------------------------------------------------------------
-
scoreboard players operation #bitwise.and.a bs.data = $bitwise.or.a bs.in
execute store result score $bitwise.or bs.out run scoreboard players operation #bitwise.and.b bs.data = $bitwise.or.b bs.in
scoreboard players operation $bitwise.or bs.out += $bitwise.or.a bs.in
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/two_complement.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/two_complement.mcfunction
index 380611c3d9..56b8fa82c2 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/two_complement.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/two_complement.mcfunction
@@ -1,15 +1,20 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#complement-to-2
+# ------------------------------------------------------------------------------------------------------------
-# Authors: theogiraudet
-# Contributors: Aksiome
-
-# Version: 1.1
-# Created: ??/??/???? (1.16)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#complement-to-2
-# Dependencies:
# Note:
# - This function returns the two's complement of a number
# - Example: -1 -> 2147483647
@@ -20,8 +25,6 @@
# In Minecraft, numbers are stored in a integer type (4 bytes), i.e. a 2^n of 2^31 - 1. In this case, we need to take 2^32 to include
# all numbers but 2^32 can't be store in an integer, so we modify a bit the operation for: (2^n - 1) - abs(x) + 1.
-# CODE ------------------------------------------------------------------------
-
scoreboard players operation $bitwise.two_complement bs.out = $bitwise.two_complement.n bs.in
execute if score $bitwise.two_complement bs.out matches 1.. run return run scoreboard players get $bitwise.two_complement bs.out
scoreboard players add $bitwise.two_complement bs.out 2147483647
diff --git a/datapacks/Bookshelf/data/bs.bitwise/function/xor.mcfunction b/datapacks/Bookshelf/data/bs.bitwise/function/xor.mcfunction
index de005f8bb4..fb9c4707dd 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/function/xor.mcfunction
+++ b/datapacks/Bookshelf/data/bs.bitwise/function/xor.mcfunction
@@ -1,23 +1,26 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators
+# ------------------------------------------------------------------------------------------------------------
-# Authors: theogiraudet, Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: ??/??/???? (1.16)
-# Last modification: 25/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators
-# Dependencies:
# Note:
# - This function returns the exclusive or bitwise between two numbers.
# - Example: -178 ^ 32165 = -32021
# - Formula: a ^ b = (a + b) - 2*(a & b)
# The result is the number composed by putting one at all bits where the value in the two binary representations of these numbers is different.
-# CODE ------------------------------------------------------------------------
-
scoreboard players operation #bitwise.and.a bs.data = $bitwise.xor.a bs.in
execute store result score $bitwise.xor bs.out run scoreboard players operation #bitwise.and.b bs.data = $bitwise.xor.b bs.in
scoreboard players operation $bitwise.xor bs.out += $bitwise.xor.a bs.in
diff --git a/datapacks/Bookshelf/data/bs.bitwise/tags/function/and.json b/datapacks/Bookshelf/data/bs.bitwise/tags/function/and.json
index db8de39e88..91c69db583 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/tags/function/and.json
+++ b/datapacks/Bookshelf/data/bs.bitwise/tags/function/and.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/02/27",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/22",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.bitwise:and/and"
]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/tags/function/bit_count.json b/datapacks/Bookshelf/data/bs.bitwise/tags/function/bit_count.json
index a01e216266..ed9e09e58b 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/tags/function/bit_count.json
+++ b/datapacks/Bookshelf/data/bs.bitwise/tags/function/bit_count.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#bit-count",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.bitwise:bit_count"
]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/tags/function/bit_length.json b/datapacks/Bookshelf/data/bs.bitwise/tags/function/bit_length.json
index 2711adb108..229e1482ef 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/tags/function/bit_length.json
+++ b/datapacks/Bookshelf/data/bs.bitwise/tags/function/bit_length.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#bit-length",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2020/09/06",
+ "minecraft_version": "1.16"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.bitwise:bit_length/bit_length"
]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/tags/function/help.json b/datapacks/Bookshelf/data/bs.bitwise/tags/function/help.json
index 1b06ba523b..52f7eaacb7 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.bitwise/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "minecraft_version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.bitwise:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/tags/function/load.json b/datapacks/Bookshelf/data/bs.bitwise/tags/function/load.json
index 11b981ca97..69713ed7cf 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.bitwise/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "minecraft_version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.bitwise:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/tags/function/not.json b/datapacks/Bookshelf/data/bs.bitwise/tags/function/not.json
index 932444e5a9..5ad47f4be4 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/tags/function/not.json
+++ b/datapacks/Bookshelf/data/bs.bitwise/tags/function/not.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/08/27",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2024/03/18",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.bitwise:not"
]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/tags/function/or.json b/datapacks/Bookshelf/data/bs.bitwise/tags/function/or.json
index 2db752f6cd..6404afa74b 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/tags/function/or.json
+++ b/datapacks/Bookshelf/data/bs.bitwise/tags/function/or.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/02/27",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/22",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.bitwise:or"
]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/tags/function/two_complement.json b/datapacks/Bookshelf/data/bs.bitwise/tags/function/two_complement.json
index 8f4a5d029d..de317e3074 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/tags/function/two_complement.json
+++ b/datapacks/Bookshelf/data/bs.bitwise/tags/function/two_complement.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#complement-to-2",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2020/09/06",
+ "minecraft_version": "1.16"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.bitwise:two_complement"
]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/tags/function/unload.json b/datapacks/Bookshelf/data/bs.bitwise/tags/function/unload.json
index 84744e66c8..83beb5aca8 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.bitwise/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "minecraft_version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.bitwise:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.bitwise/tags/function/xor.json b/datapacks/Bookshelf/data/bs.bitwise/tags/function/xor.json
index edb2057414..b832de5978 100644
--- a/datapacks/Bookshelf/data/bs.bitwise/tags/function/xor.json
+++ b/datapacks/Bookshelf/data/bs.bitwise/tags/function/xor.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/02/27",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/22",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.bitwise:xor"
]
diff --git a/datapacks/Bookshelf/data/bs.block/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.block/.metadata/generated/features.json
new file mode 100644
index 0000000000..1bd4bf12c7
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.block/.metadata/generated/features.json
@@ -0,0 +1,344 @@
+[
+ {
+ "name": "fill_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#fill",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "fill_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#fill",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#get",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#get",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "keep_properties",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "lookup_item",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "lookup_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "match",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#match",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "merge_properties",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "remove_properties",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "replace_mapped_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome"
+ ],
+ "contributors": [
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/05/25",
+ "version": "1.20.6"
+ },
+ "updated": {
+ "date": "2024/05/25",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "replace_properties",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "replace_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#set",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#set",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "shift_properties",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "spawn_block_display",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "spawn_falling_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "spawn_solid_block_display",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.block/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.block/.metadata/generated/module.json
new file mode 100644
index 0000000000..3173822611
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.block/.metadata/generated/module.json
@@ -0,0 +1,37 @@
+{
+ "name": "bs.block",
+ "display_name": "Block",
+ "description": "Manage blocks, including states and NBTs, while offering advanced tools for seamless transformations.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "contributors": [
+ "theogiraudet"
+ ],
+ "features": [
+ "bs.block:fill_block",
+ "bs.block:fill_type",
+ "bs.block:get_block",
+ "bs.block:get_type",
+ "bs.block:help",
+ "bs.block:keep_properties",
+ "bs.block:load",
+ "bs.block:lookup_item",
+ "bs.block:lookup_type",
+ "bs.block:match",
+ "bs.block:merge_properties",
+ "bs.block:remove_properties",
+ "bs.block:replace_mapped_type",
+ "bs.block:replace_properties",
+ "bs.block:replace_type",
+ "bs.block:set_block",
+ "bs.block:set_type",
+ "bs.block:shift_properties",
+ "bs.block:spawn_block_display",
+ "bs.block:spawn_falling_block",
+ "bs.block:spawn_solid_block_display",
+ "bs.block:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.block/.metadata/module.json b/datapacks/Bookshelf/data/bs.block/.metadata/module.json
new file mode 100644
index 0000000000..6d596d08e0
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.block/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.block",
+ "display_name": "Block",
+ "description": "Manage blocks, including states and NBTs, while offering advanced tools for seamless transformations.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.block/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.block/function/__help__.mcfunction
index 37b5d93761..5df1d148fe 100644
--- a/datapacks/Bookshelf/data/bs.block/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.block documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.block/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.block/function/__load__.mcfunction
index 3f5bbe255e..984ae9e5bd 100644
--- a/datapacks/Bookshelf/data/bs.block/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives add bs.data dummy [{"text":"BS ","color":"dark_gray"},{"text":"Data","color":"aqua"}]
diff --git a/datapacks/Bookshelf/data/bs.block/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.block/function/__unload__.mcfunction
index 0eab74d5fb..6b5eea6aa4 100644
--- a/datapacks/Bookshelf/data/bs.block/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives remove bs.data
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/compile/block.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/compile/block.mcfunction
index 519d0ace41..af92b2154e 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/compile/block.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/compile/block.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# retrieve state and properties data from the _
data modify storage bs:out block.properties set value {}
data modify storage bs:out block.state set value {0:"",1:"",2:"",3:"",4:"",5:"",6:"",7:""}
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/compile/concat/block.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/compile/concat/block.mcfunction
index 9ae9fc28bf..3d0bcb2f96 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/compile/concat/block.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/compile/concat/block.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$return run data modify storage bs:out block.block set value "$(type)$(state)$(nbt)"
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/compile/concat/state.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/compile/concat/state.mcfunction
index 8e0ada33ee..f33ea086db 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/compile/concat/state.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/compile/concat/state.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:out block.state set value "[$(0)$(1)$(2)$(3)$(4)$(5)$(6)$(7)]"
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/compile/type.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/compile/type.mcfunction
index b3b5950baf..fb20d067fb 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/compile/type.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/compile/type.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:out block.block set from storage bs:out block.type
data modify storage bs:out block.properties set value {}
data modify storage bs:out block.state set value ""
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/dispatch.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/dispatch.mcfunction
index f2e224a590..30972e3f72 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/dispatch.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/dispatch.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$function bs.block:get/registry/$(y)
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/get_block.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/get_block.mcfunction
index 8916091418..38204a04ed 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/get_block.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/get_block.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#get
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#get
+# ------------------------------------------------------------------------------------------------------------
scoreboard players set #block.id bs.data 0
execute if block ~ ~ ~ #bs.block:type/group_1 run scoreboard players add #block.id bs.data 1
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/get_type.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/get_type.mcfunction
index 1b0b67874a..02a6f526ad 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/get_type.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/get_type.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#get
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#get
+# ------------------------------------------------------------------------------------------------------------
scoreboard players set #block.id bs.data 0
execute if block ~ ~ ~ #bs.block:type/group_1 run scoreboard players add #block.id bs.data 1
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/lookup.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/lookup.mcfunction
index 6aaf6b9891..4d410172a6 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/lookup.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/lookup.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:out block set from storage bs:const block.table[$(y)]
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/1.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/1.mcfunction
index 8e257b81fb..935395bbbf 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/1.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/1.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[face=wall] run data modify storage bs:out block._[{n:"face"}].o[{v:"wall"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[face=ceiling] run data modify storage bs:out block._[{n:"face"}].o[{v:"ceiling"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/10.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/10.mcfunction
index cec6840a89..4ccdfda423 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/10.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/10.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[rotation=0] run data modify storage bs:out block._[{n:"rotation"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[rotation=1] run data modify storage bs:out block._[{n:"rotation"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/100.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/100.mcfunction
index 75cb53dd36..fbe4ac7407 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/100.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/100.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[hatch=0] run data modify storage bs:out block._[{n:"hatch"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[hatch=1] run data modify storage bs:out block._[{n:"hatch"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/101.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/101.mcfunction
index c0518f516d..8771eee5ed 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/101.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/101.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[layers=1] run data modify storage bs:out block._[{n:"layers"}].o[{v:"1"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[layers=2] run data modify storage bs:out block._[{n:"layers"}].o[{v:"2"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/102.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/102.mcfunction
index 22306bf0cd..f588d3c21a 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/102.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/102.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[mode=load] run data modify storage bs:out block._[{n:"mode"}].o[{v:"load"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[mode=corner] run data modify storage bs:out block._[{n:"mode"}].o[{v:"corner"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/103.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/103.mcfunction
index 5895520d8e..e1d4277473 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/103.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/103.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[dusted=0] run data modify storage bs:out block._[{n:"dusted"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[dusted=1] run data modify storage bs:out block._[{n:"dusted"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/104.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/104.mcfunction
index 3712ad6aca..f0534e2ad8 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/104.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/104.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[unstable=false] run data modify storage bs:out block._[{n:"unstable"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[unstable=true] run data modify storage bs:out block._[{n:"unstable"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/105.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/105.mcfunction
index fd004356b4..e6fae79ba0 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/105.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/105.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/106.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/106.mcfunction
index eddd4542fd..9d89a87f45 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/106.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/106.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[ominous=false] run data modify storage bs:out block._[{n:"ominous"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[ominous=true] run data modify storage bs:out block._[{n:"ominous"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/107.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/107.mcfunction
index edac71f10d..0b57d82127 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/107.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/107.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[attached=false] run data modify storage bs:out block._[{n:"attached"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[attached=true] run data modify storage bs:out block._[{n:"attached"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/108.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/108.mcfunction
index b2e25d0e3e..1ae3fdb279 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/108.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/108.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[attached=false] run data modify storage bs:out block._[{n:"attached"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[attached=true] run data modify storage bs:out block._[{n:"attached"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/109.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/109.mcfunction
index eb0c4b02dd..33930326e7 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/109.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/109.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[eggs=1] run data modify storage bs:out block._[{n:"eggs"}].o[{v:"1"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[eggs=2] run data modify storage bs:out block._[{n:"eggs"}].o[{v:"2"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/11.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/11.mcfunction
index 3d0f2196e8..2bab70c385 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/11.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/11.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[type=bottom] run data modify storage bs:out block._[{n:"type"}].o[{v:"bottom"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[type=double] run data modify storage bs:out block._[{n:"type"}].o[{v:"double"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/110.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/110.mcfunction
index ce43b5337f..1292af4dd5 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/110.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/110.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/111.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/111.mcfunction
index 4adc3cfdd6..f8301b29b8 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/111.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/111.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[east=false] run data modify storage bs:out block._[{n:"east"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[east=true] run data modify storage bs:out block._[{n:"east"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/12.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/12.mcfunction
index 8ef903541f..9a943cb12e 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/12.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/12.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/13.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/13.mcfunction
index 813363f1e9..96aa8c505d 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/13.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/13.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/14.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/14.mcfunction
index 446ecb9cbf..c2d41172e1 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/14.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/14.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/15.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/15.mcfunction
index 683c1dccc3..a87a1d8d49 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/15.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/15.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[powered=false] run data modify storage bs:out block._[{n:"powered"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[powered=true] run data modify storage bs:out block._[{n:"powered"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/16.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/16.mcfunction
index 36c008df19..1b1140b381 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/16.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/16.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=up] run data modify storage bs:out block._[{n:"facing"}].o[{v:"up"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=down] run data modify storage bs:out block._[{n:"facing"}].o[{v:"down"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/17.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/17.mcfunction
index 025a801ada..acf346038f 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/17.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/17.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[east=none] run data modify storage bs:out block._[{n:"east"}].o[{v:"none"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[east=low] run data modify storage bs:out block._[{n:"east"}].o[{v:"low"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/18.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/18.mcfunction
index 738119a8b5..b09c239e23 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/18.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/18.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/19.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/19.mcfunction
index deee62cdff..4133a36af9 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/19.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/19.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/2.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/2.mcfunction
index 532dc66197..f9689293c6 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/2.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/2.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/20.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/20.mcfunction
index cbc07990bb..e8d03ba07d 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/20.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/20.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=east] run data modify storage bs:out block._[{n:"facing"}].o[{v:"east"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/21.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/21.mcfunction
index cf04645913..dfe58b819a 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/21.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/21.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[waterlogged=false] run data modify storage bs:out block._[{n:"waterlogged"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[waterlogged=true] run data modify storage bs:out block._[{n:"waterlogged"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/22.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/22.mcfunction
index 1a7c4d2d23..c80f7a23c1 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/22.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/22.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/23.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/23.mcfunction
index 27ce0e3f0d..2be2b730f2 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/23.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/23.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/24.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/24.mcfunction
index 481c750cba..b89f838454 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/24.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/24.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[attachment=floor] run data modify storage bs:out block._[{n:"attachment"}].o[{v:"floor"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[attachment=ceiling] run data modify storage bs:out block._[{n:"attachment"}].o[{v:"ceiling"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/25.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/25.mcfunction
index 0ae282a8c3..e1b8fe4fab 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/25.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/25.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/26.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/26.mcfunction
index 47e769db67..204fdf342d 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/26.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/26.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[rotation=0] run data modify storage bs:out block._[{n:"rotation"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[rotation=1] run data modify storage bs:out block._[{n:"rotation"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/27.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/27.mcfunction
index 72f75bc647..e1ec5636d3 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/27.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/27.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/28.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/28.mcfunction
index 04c451e9f5..01bfeb5d35 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/28.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/28.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[candles=1] run data modify storage bs:out block._[{n:"candles"}].o[{v:"1"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[candles=2] run data modify storage bs:out block._[{n:"candles"}].o[{v:"2"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/29.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/29.mcfunction
index 1e563669f4..8d4058e85e 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/29.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/29.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[lit=false] run data modify storage bs:out block._[{n:"lit"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[lit=true] run data modify storage bs:out block._[{n:"lit"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/3.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/3.mcfunction
index 0d83b0d4ad..64972c6d32 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/3.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/3.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[east=false] run data modify storage bs:out block._[{n:"east"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[east=true] run data modify storage bs:out block._[{n:"east"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/30.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/30.mcfunction
index f176070fc4..5e03c925b1 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/30.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/30.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=up] run data modify storage bs:out block._[{n:"facing"}].o[{v:"up"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=down] run data modify storage bs:out block._[{n:"facing"}].o[{v:"down"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/31.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/31.mcfunction
index 755456ee4c..5f0cd8b585 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/31.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/31.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/32.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/32.mcfunction
index fe25c2cfdb..65f39417b7 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/32.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/32.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[waterlogged=true] run data modify storage bs:out block._[{n:"waterlogged"}].o[{v:"true"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[waterlogged=false] run data modify storage bs:out block._[{n:"waterlogged"}].o[{v:"false"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/33.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/33.mcfunction
index dc9e842d4a..b18e1d57eb 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/33.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/33.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/34.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/34.mcfunction
index 8b7a6b82fa..d904433dbd 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/34.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/34.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[has_bottle_0=false] run data modify storage bs:out block._[{n:"has_bottle_0"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[has_bottle_0=true] run data modify storage bs:out block._[{n:"has_bottle_0"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/35.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/35.mcfunction
index 99de36550d..c94877b2ba 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/35.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/35.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[down=true] run data modify storage bs:out block._[{n:"down"}].o[{v:"true"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[down=false] run data modify storage bs:out block._[{n:"down"}].o[{v:"false"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/36.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/36.mcfunction
index dcc3a75243..ebb1ef4e61 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/36.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/36.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[drag=true] run data modify storage bs:out block._[{n:"drag"}].o[{v:"true"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[drag=false] run data modify storage bs:out block._[{n:"drag"}].o[{v:"false"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/37.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/37.mcfunction
index 2d9bde7e1e..9d214ff912 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/37.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/37.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/38.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/38.mcfunction
index 3e4027bab8..7674de23b0 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/38.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/38.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[bites=0] run data modify storage bs:out block._[{n:"bites"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[bites=1] run data modify storage bs:out block._[{n:"bites"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/39.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/39.mcfunction
index 6c33d267ba..67c66c4d66 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/39.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/39.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/4.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/4.mcfunction
index e08a683795..177eb0e9f1 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/4.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/4.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/40.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/40.mcfunction
index bfda5c2814..11554d9de4 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/40.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/40.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/41.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/41.mcfunction
index 838a8aa3ce..6a8896a4bb 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/41.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/41.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/42.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/42.mcfunction
index 395f1f5179..fcb00dc875 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/42.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/42.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/43.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/43.mcfunction
index ba308f227e..37ae5e17e4 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/43.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/43.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[berries=false] run data modify storage bs:out block._[{n:"berries"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[berries=true] run data modify storage bs:out block._[{n:"berries"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/44.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/44.mcfunction
index f779b5115b..1db8420263 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/44.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/44.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[axis=y] run data modify storage bs:out block._[{n:"axis"}].o[{v:"y"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[axis=z] run data modify storage bs:out block._[{n:"axis"}].o[{v:"z"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/45.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/45.mcfunction
index d1ea52032c..7af5094664 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/45.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/45.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[conditional=false] run data modify storage bs:out block._[{n:"conditional"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[conditional=true] run data modify storage bs:out block._[{n:"conditional"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/46.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/46.mcfunction
index afef2509f8..2a80cc7e3c 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/46.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/46.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[type=single] run data modify storage bs:out block._[{n:"type"}].o[{v:"single"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[type=left] run data modify storage bs:out block._[{n:"type"}].o[{v:"left"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/47.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/47.mcfunction
index df3f78654b..273c65ad7b 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/47.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/47.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/48.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/48.mcfunction
index 7a5a3ab68b..997c6fea76 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/48.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/48.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/49.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/49.mcfunction
index ed1e394aed..a0db4f69c3 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/49.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/49.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[down=false] run data modify storage bs:out block._[{n:"down"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[down=true] run data modify storage bs:out block._[{n:"down"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/5.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/5.mcfunction
index 9f109c0d84..c6b2ce2bfd 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/5.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/5.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[attached=false] run data modify storage bs:out block._[{n:"attached"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[attached=true] run data modify storage bs:out block._[{n:"attached"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/50.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/50.mcfunction
index bda20e7d9a..369fb8e4fe 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/50.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/50.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/51.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/51.mcfunction
index cfbfdab6b0..626558cce5 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/51.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/51.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/52.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/52.mcfunction
index 73abd410c9..fb90abf41b 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/52.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/52.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[level=0] run data modify storage bs:out block._[{n:"level"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[level=1] run data modify storage bs:out block._[{n:"level"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/53.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/53.mcfunction
index a479d949d2..74be48d5da 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/53.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/53.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[lit=false] run data modify storage bs:out block._[{n:"lit"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[lit=true] run data modify storage bs:out block._[{n:"lit"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/54.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/54.mcfunction
index 3796560395..cb62604be4 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/54.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/54.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[crafting=false] run data modify storage bs:out block._[{n:"crafting"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[crafting=true] run data modify storage bs:out block._[{n:"crafting"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/55.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/55.mcfunction
index a8f6b9020b..a699dbffbc 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/55.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/55.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[powered=false] run data modify storage bs:out block._[{n:"powered"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[powered=true] run data modify storage bs:out block._[{n:"powered"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/56.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/56.mcfunction
index 10dd4bec88..3117ec1e32 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/56.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/56.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/57.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/57.mcfunction
index 0775f66572..6ffee3924d 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/57.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/57.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[inverted=false] run data modify storage bs:out block._[{n:"inverted"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[inverted=true] run data modify storage bs:out block._[{n:"inverted"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/58.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/58.mcfunction
index 2870199701..66490c0e76 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/58.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/58.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[cracked=false] run data modify storage bs:out block._[{n:"cracked"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[cracked=true] run data modify storage bs:out block._[{n:"cracked"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/59.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/59.mcfunction
index 3c7d00eec2..66d801a0ad 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/59.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/59.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=east] run data modify storage bs:out block._[{n:"facing"}].o[{v:"east"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/6.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/6.mcfunction
index 6a84944592..7814ce5fb4 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/6.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/6.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[distance=7] run data modify storage bs:out block._[{n:"distance"}].o[{v:"7"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[distance=1] run data modify storage bs:out block._[{n:"distance"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/60.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/60.mcfunction
index 1658389ae9..556dc7e14d 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/60.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/60.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[eye=false] run data modify storage bs:out block._[{n:"eye"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[eye=true] run data modify storage bs:out block._[{n:"eye"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/61.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/61.mcfunction
index 4418ff9e0d..3fc800ccf8 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/61.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/61.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[moisture=0] run data modify storage bs:out block._[{n:"moisture"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[moisture=1] run data modify storage bs:out block._[{n:"moisture"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/62.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/62.mcfunction
index c9c5fe7a6f..43be70883d 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/62.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/62.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/63.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/63.mcfunction
index 3486a79cb1..e4d4545149 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/63.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/63.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[down=false] run data modify storage bs:out block._[{n:"down"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[down=true] run data modify storage bs:out block._[{n:"down"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/64.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/64.mcfunction
index e45f80d3c9..6f44a197ca 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/64.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/64.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[snowy=false] run data modify storage bs:out block._[{n:"snowy"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[snowy=true] run data modify storage bs:out block._[{n:"snowy"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/65.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/65.mcfunction
index 599adcb461..4cb529e1f9 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/65.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/65.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[face=wall] run data modify storage bs:out block._[{n:"face"}].o[{v:"wall"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[face=ceiling] run data modify storage bs:out block._[{n:"face"}].o[{v:"ceiling"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/66.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/66.mcfunction
index 011fd34670..71d3b692a0 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/66.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/66.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[power=0] run data modify storage bs:out block._[{n:"power"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[power=1] run data modify storage bs:out block._[{n:"power"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/67.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/67.mcfunction
index f9fa32f66d..c9c5380a73 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/67.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/67.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[enabled=true] run data modify storage bs:out block._[{n:"enabled"}].o[{v:"true"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[enabled=false] run data modify storage bs:out block._[{n:"enabled"}].o[{v:"false"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/68.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/68.mcfunction
index 392bd66d26..ff4626178a 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/68.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/68.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[orientation=north_up] run data modify storage bs:out block._[{n:"orientation"}].o[{v:"north_up"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[orientation=south_up] run data modify storage bs:out block._[{n:"orientation"}].o[{v:"south_up"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/69.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/69.mcfunction
index 2789316674..d6882b82c8 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/69.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/69.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[has_record=false] run data modify storage bs:out block._[{n:"has_record"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[has_record=true] run data modify storage bs:out block._[{n:"has_record"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/7.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/7.mcfunction
index 659b8c1c68..8313aa1243 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/7.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/7.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[axis=y] run data modify storage bs:out block._[{n:"axis"}].o[{v:"y"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[axis=z] run data modify storage bs:out block._[{n:"axis"}].o[{v:"z"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/70.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/70.mcfunction
index 6d01d92c33..eef7a3888b 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/70.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/70.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/71.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/71.mcfunction
index 82729ac4a4..48fef5203a 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/71.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/71.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[hanging=false] run data modify storage bs:out block._[{n:"hanging"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[hanging=true] run data modify storage bs:out block._[{n:"hanging"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/72.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/72.mcfunction
index 86a41c901a..1e12009141 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/72.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/72.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[half=lower] run data modify storage bs:out block._[{n:"half"}].o[{v:"lower"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[half=upper] run data modify storage bs:out block._[{n:"half"}].o[{v:"upper"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/73.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/73.mcfunction
index 7c023ebb88..87e8c4815b 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/73.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/73.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[level=0] run data modify storage bs:out block._[{n:"level"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[level=1] run data modify storage bs:out block._[{n:"level"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/74.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/74.mcfunction
index 7e0c95a6ae..e3432fd176 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/74.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/74.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/75.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/75.mcfunction
index ea7e81e1fa..d9fb996a5f 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/75.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/75.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[level=15] run data modify storage bs:out block._[{n:"level"}].o[{v:"15"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[level=0] run data modify storage bs:out block._[{n:"level"}].o[{v:"0"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/76.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/76.mcfunction
index 57454f0677..d736bc5d69 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/76.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/76.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=up] run data modify storage bs:out block._[{n:"facing"}].o[{v:"up"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=down] run data modify storage bs:out block._[{n:"facing"}].o[{v:"down"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/77.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/77.mcfunction
index b4b7342e73..00c84aa599 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/77.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/77.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/78.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/78.mcfunction
index 10e157de59..bb6f137aef 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/78.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/78.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[type=normal] run data modify storage bs:out block._[{n:"type"}].o[{v:"normal"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[type=sticky] run data modify storage bs:out block._[{n:"type"}].o[{v:"sticky"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/79.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/79.mcfunction
index 0162fe84f8..d24562973c 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/79.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/79.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[axis=x] run data modify storage bs:out block._[{n:"axis"}].o[{v:"x"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[axis=z] run data modify storage bs:out block._[{n:"axis"}].o[{v:"z"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/8.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/8.mcfunction
index 625acb63d5..75bf811a70 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/8.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/8.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[powered=false] run data modify storage bs:out block._[{n:"powered"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[powered=true] run data modify storage bs:out block._[{n:"powered"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/80.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/80.mcfunction
index 96b563ad9c..1d7eb523c1 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/80.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/80.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[instrument=harp] run data modify storage bs:out block._[{n:"instrument"}].o[{v:"harp"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[instrument=basedrum] run data modify storage bs:out block._[{n:"instrument"}].o[{v:"basedrum"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/81.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/81.mcfunction
index 490018e589..add5a4d410 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/81.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/81.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=west] run data modify storage bs:out block._[{n:"facing"}].o[{v:"west"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/82.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/82.mcfunction
index 8e0b987445..732aa3709a 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/82.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/82.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/83.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/83.mcfunction
index d57b9b1ad5..123262413a 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/83.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/83.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[extended=false] run data modify storage bs:out block._[{n:"extended"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[extended=true] run data modify storage bs:out block._[{n:"extended"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/84.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/84.mcfunction
index 1c759a9af3..44b5bc4de8 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/84.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/84.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[type=normal] run data modify storage bs:out block._[{n:"type"}].o[{v:"normal"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[type=sticky] run data modify storage bs:out block._[{n:"type"}].o[{v:"sticky"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/85.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/85.mcfunction
index 41a5bd2a0a..27941d3bfc 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/85.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/85.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[age=0] run data modify storage bs:out block._[{n:"age"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[age=1] run data modify storage bs:out block._[{n:"age"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/86.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/86.mcfunction
index 588a083dcc..cdef4c068f 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/86.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/86.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[thickness=tip] run data modify storage bs:out block._[{n:"thickness"}].o[{v:"tip"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[thickness=frustum] run data modify storage bs:out block._[{n:"thickness"}].o[{v:"frustum"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/87.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/87.mcfunction
index 22c952c4e1..7be4d856c9 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/87.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/87.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[level=1] run data modify storage bs:out block._[{n:"level"}].o[{v:"1"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[level=2] run data modify storage bs:out block._[{n:"level"}].o[{v:"2"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/88.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/88.mcfunction
index cfd605ec53..9d43eb35dd 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/88.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/88.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[shape=north_south] run data modify storage bs:out block._[{n:"shape"}].o[{v:"north_south"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[shape=east_west] run data modify storage bs:out block._[{n:"shape"}].o[{v:"east_west"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/89.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/89.mcfunction
index 06bd9644db..870ac2c5dd 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/89.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/89.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[lit=true] run data modify storage bs:out block._[{n:"lit"}].o[{v:"true"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[lit=false] run data modify storage bs:out block._[{n:"lit"}].o[{v:"false"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/9.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/9.mcfunction
index be76d7fe19..b9eacd91bf 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/9.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/9.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[stage=0] run data modify storage bs:out block._[{n:"stage"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[stage=1] run data modify storage bs:out block._[{n:"stage"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/90.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/90.mcfunction
index f4141d1008..7d22d2d21d 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/90.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/90.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/91.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/91.mcfunction
index 1cf75c3cef..3da387b8d0 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/91.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/91.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[east=none] run data modify storage bs:out block._[{n:"east"}].o[{v:"none"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[east=up] run data modify storage bs:out block._[{n:"east"}].o[{v:"up"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/92.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/92.mcfunction
index c7a4f0049d..9d2ce17cfc 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/92.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/92.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[delay=1] run data modify storage bs:out block._[{n:"delay"}].o[{v:"1"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[delay=2] run data modify storage bs:out block._[{n:"delay"}].o[{v:"2"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/93.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/93.mcfunction
index 3afc26d2fb..c5d5cd1d08 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/93.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/93.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[charges=0] run data modify storage bs:out block._[{n:"charges"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[charges=1] run data modify storage bs:out block._[{n:"charges"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/94.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/94.mcfunction
index 73af4175a1..228aaa4ae3 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/94.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/94.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[bottom=false] run data modify storage bs:out block._[{n:"bottom"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[bottom=true] run data modify storage bs:out block._[{n:"bottom"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/95.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/95.mcfunction
index b4298f086e..15cb839b4f 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/95.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/95.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[bloom=false] run data modify storage bs:out block._[{n:"bloom"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[bloom=true] run data modify storage bs:out block._[{n:"bloom"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/96.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/96.mcfunction
index 257e5d0170..7684109829 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/96.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/96.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[power=0] run data modify storage bs:out block._[{n:"power"}].o[{v:"0"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[power=1] run data modify storage bs:out block._[{n:"power"}].o[{v:"1"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/97.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/97.mcfunction
index a368703328..7ede507f7d 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/97.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/97.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[can_summon=false] run data modify storage bs:out block._[{n:"can_summon"}].o[{v:"false"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[can_summon=true] run data modify storage bs:out block._[{n:"can_summon"}].o[{v:"true"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/98.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/98.mcfunction
index 1fa11ed041..a0ab282c1d 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/98.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/98.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[pickles=1] run data modify storage bs:out block._[{n:"pickles"}].o[{v:"1"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[pickles=2] run data modify storage bs:out block._[{n:"pickles"}].o[{v:"2"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/get/registry/99.mcfunction b/datapacks/Bookshelf/data/bs.block/function/get/registry/99.mcfunction
index 7ea932e7f4..200cc45126 100644
--- a/datapacks/Bookshelf/data/bs.block/function/get/registry/99.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/get/registry/99.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
execute if block ~ ~ ~ #bs.block:has_state[facing=north] run data modify storage bs:out block._[{n:"facing"}].o[{v:"north"}].c set value 1b
execute if block ~ ~ ~ #bs.block:has_state[facing=south] run data modify storage bs:out block._[{n:"facing"}].o[{v:"south"}].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/load/blocks_table.mcfunction b/datapacks/Bookshelf/data/bs.block/function/load/blocks_table.mcfunction
index e7c867bad6..8ef6cdc605 100644
--- a/datapacks/Bookshelf/data/bs.block/function/load/blocks_table.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/load/blocks_table.mcfunction
@@ -1,2 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
# This file was automatically generated, do not edit it
data modify storage bs:const block.table set value [{group:0,type:"minecraft:acacia_planks",item:"minecraft:acacia_planks"},{group:0,type:"minecraft:air",item:"minecraft:air"},{group:0,type:"minecraft:allium",item:"minecraft:allium"},{group:0,type:"minecraft:amethyst_block",item:"minecraft:amethyst_block"},{group:0,type:"minecraft:ancient_debris",item:"minecraft:ancient_debris"},{group:0,type:"minecraft:andesite",item:"minecraft:andesite"},{group:0,type:"minecraft:azalea",item:"minecraft:azalea"},{group:0,type:"minecraft:azure_bluet",item:"minecraft:azure_bluet"},{group:0,type:"minecraft:bamboo_mosaic",item:"minecraft:bamboo_mosaic"},{group:0,type:"minecraft:bamboo_planks",item:"minecraft:bamboo_planks"},{group:0,type:"minecraft:bamboo_sapling"},{group:0,type:"minecraft:beacon",item:"minecraft:beacon"},{group:0,type:"minecraft:bedrock",item:"minecraft:bedrock"},{group:0,type:"minecraft:birch_planks",item:"minecraft:birch_planks"},{group:0,type:"minecraft:black_carpet",item:"minecraft:black_carpet"},{group:0,type:"minecraft:black_concrete",item:"minecraft:black_concrete"},{group:0,type:"minecraft:black_concrete_powder",item:"minecraft:black_concrete_powder"},{group:0,type:"minecraft:black_stained_glass",item:"minecraft:black_stained_glass"},{group:0,type:"minecraft:black_terracotta",item:"minecraft:black_terracotta"},{group:0,type:"minecraft:black_wool",item:"minecraft:black_wool"},{group:0,type:"minecraft:blackstone",item:"minecraft:blackstone"},{group:0,type:"minecraft:blue_carpet",item:"minecraft:blue_carpet"},{group:0,type:"minecraft:blue_concrete",item:"minecraft:blue_concrete"},{group:0,type:"minecraft:blue_concrete_powder",item:"minecraft:blue_concrete_powder"},{group:0,type:"minecraft:blue_ice",item:"minecraft:blue_ice"},{group:0,type:"minecraft:blue_orchid",item:"minecraft:blue_orchid"},{group:0,type:"minecraft:blue_stained_glass",item:"minecraft:blue_stained_glass"},{group:0,type:"minecraft:blue_terracotta",item:"minecraft:blue_terracotta"},{group:0,type:"minecraft:blue_wool",item:"minecraft:blue_wool"},{group:0,type:"minecraft:bookshelf",item:"minecraft:bookshelf"},{group:0,type:"minecraft:brain_coral_block",item:"minecraft:brain_coral_block"},{group:0,type:"minecraft:bricks",item:"minecraft:bricks"},{group:0,type:"minecraft:brown_carpet",item:"minecraft:brown_carpet"},{group:0,type:"minecraft:brown_concrete",item:"minecraft:brown_concrete"},{group:0,type:"minecraft:brown_concrete_powder",item:"minecraft:brown_concrete_powder"},{group:0,type:"minecraft:brown_mushroom",item:"minecraft:brown_mushroom"},{group:0,type:"minecraft:brown_stained_glass",item:"minecraft:brown_stained_glass"},{group:0,type:"minecraft:brown_terracotta",item:"minecraft:brown_terracotta"},{group:0,type:"minecraft:brown_wool",item:"minecraft:brown_wool"},{group:0,type:"minecraft:bubble_coral_block",item:"minecraft:bubble_coral_block"},{group:0,type:"minecraft:budding_amethyst",item:"minecraft:budding_amethyst"},{group:0,type:"minecraft:calcite",item:"minecraft:calcite"},{group:0,type:"minecraft:cartography_table",item:"minecraft:cartography_table"},{group:0,type:"minecraft:cauldron",item:"minecraft:cauldron"},{group:0,type:"minecraft:cave_air"},{group:0,type:"minecraft:cherry_planks",item:"minecraft:cherry_planks"},{group:0,type:"minecraft:chiseled_copper",item:"minecraft:chiseled_copper"},{group:0,type:"minecraft:chiseled_deepslate",item:"minecraft:chiseled_deepslate"},{group:0,type:"minecraft:chiseled_nether_bricks",item:"minecraft:chiseled_nether_bricks"},{group:0,type:"minecraft:chiseled_polished_blackstone",item:"minecraft:chiseled_polished_blackstone"},{group:0,type:"minecraft:chiseled_quartz_block",item:"minecraft:chiseled_quartz_block"},{group:0,type:"minecraft:chiseled_red_sandstone",item:"minecraft:chiseled_red_sandstone"},{group:0,type:"minecraft:chiseled_sandstone",item:"minecraft:chiseled_sandstone"},{group:0,type:"minecraft:chiseled_stone_bricks",item:"minecraft:chiseled_stone_bricks"},{group:0,type:"minecraft:chiseled_tuff",item:"minecraft:chiseled_tuff"},{group:0,type:"minecraft:chiseled_tuff_bricks",item:"minecraft:chiseled_tuff_bricks"},{group:0,type:"minecraft:clay",item:"minecraft:clay"},{group:0,type:"minecraft:coal_block",item:"minecraft:coal_block"},{group:0,type:"minecraft:coal_ore",item:"minecraft:coal_ore"},{group:0,type:"minecraft:coarse_dirt",item:"minecraft:coarse_dirt"},{group:0,type:"minecraft:cobbled_deepslate",item:"minecraft:cobbled_deepslate"},{group:0,type:"minecraft:cobblestone",item:"minecraft:cobblestone"},{group:0,type:"minecraft:cobweb",item:"minecraft:cobweb"},{group:0,type:"minecraft:copper_block",item:"minecraft:copper_block"},{group:0,type:"minecraft:copper_ore",item:"minecraft:copper_ore"},{group:0,type:"minecraft:cornflower",item:"minecraft:cornflower"},{group:0,type:"minecraft:cracked_deepslate_bricks",item:"minecraft:cracked_deepslate_bricks"},{group:0,type:"minecraft:cracked_deepslate_tiles",item:"minecraft:cracked_deepslate_tiles"},{group:0,type:"minecraft:cracked_nether_bricks",item:"minecraft:cracked_nether_bricks"},{group:0,type:"minecraft:cracked_polished_blackstone_bricks",item:"minecraft:cracked_polished_blackstone_bricks"},{group:0,type:"minecraft:cracked_stone_bricks",item:"minecraft:cracked_stone_bricks"},{group:0,type:"minecraft:crafting_table",item:"minecraft:crafting_table"},{group:0,type:"minecraft:crimson_fungus",item:"minecraft:crimson_fungus"},{group:0,type:"minecraft:crimson_nylium",item:"minecraft:crimson_nylium"},{group:0,type:"minecraft:crimson_planks",item:"minecraft:crimson_planks"},{group:0,type:"minecraft:crimson_roots",item:"minecraft:crimson_roots"},{group:0,type:"minecraft:crying_obsidian",item:"minecraft:crying_obsidian"},{group:0,type:"minecraft:cut_copper",item:"minecraft:cut_copper"},{group:0,type:"minecraft:cut_red_sandstone",item:"minecraft:cut_red_sandstone"},{group:0,type:"minecraft:cut_sandstone",item:"minecraft:cut_sandstone"},{group:0,type:"minecraft:cyan_carpet",item:"minecraft:cyan_carpet"},{group:0,type:"minecraft:cyan_concrete",item:"minecraft:cyan_concrete"},{group:0,type:"minecraft:cyan_concrete_powder",item:"minecraft:cyan_concrete_powder"},{group:0,type:"minecraft:cyan_stained_glass",item:"minecraft:cyan_stained_glass"},{group:0,type:"minecraft:cyan_terracotta",item:"minecraft:cyan_terracotta"},{group:0,type:"minecraft:cyan_wool",item:"minecraft:cyan_wool"},{group:0,type:"minecraft:dandelion",item:"minecraft:dandelion"},{group:0,type:"minecraft:dark_oak_planks",item:"minecraft:dark_oak_planks"},{group:0,type:"minecraft:dark_prismarine",item:"minecraft:dark_prismarine"},{group:0,type:"minecraft:dead_brain_coral_block",item:"minecraft:dead_brain_coral_block"},{group:0,type:"minecraft:dead_bubble_coral_block",item:"minecraft:dead_bubble_coral_block"},{group:0,type:"minecraft:dead_bush",item:"minecraft:dead_bush"},{group:0,type:"minecraft:dead_fire_coral_block",item:"minecraft:dead_fire_coral_block"},{group:0,type:"minecraft:dead_horn_coral_block",item:"minecraft:dead_horn_coral_block"},{group:0,type:"minecraft:dead_tube_coral_block",item:"minecraft:dead_tube_coral_block"},{group:0,type:"minecraft:deepslate_bricks",item:"minecraft:deepslate_bricks"},{group:0,type:"minecraft:deepslate_coal_ore",item:"minecraft:deepslate_coal_ore"},{group:0,type:"minecraft:deepslate_copper_ore",item:"minecraft:deepslate_copper_ore"},{group:0,type:"minecraft:deepslate_diamond_ore",item:"minecraft:deepslate_diamond_ore"},{group:0,type:"minecraft:deepslate_emerald_ore",item:"minecraft:deepslate_emerald_ore"},{group:0,type:"minecraft:deepslate_gold_ore",item:"minecraft:deepslate_gold_ore"},{group:0,type:"minecraft:deepslate_iron_ore",item:"minecraft:deepslate_iron_ore"},{group:0,type:"minecraft:deepslate_lapis_ore",item:"minecraft:deepslate_lapis_ore"},{group:0,type:"minecraft:deepslate_tiles",item:"minecraft:deepslate_tiles"},{group:0,type:"minecraft:diamond_block",item:"minecraft:diamond_block"},{group:0,type:"minecraft:diamond_ore",item:"minecraft:diamond_ore"},{group:0,type:"minecraft:diorite",item:"minecraft:diorite"},{group:0,type:"minecraft:dirt",item:"minecraft:dirt"},{group:0,type:"minecraft:dirt_path",item:"minecraft:dirt_path"},{group:0,type:"minecraft:dragon_egg",item:"minecraft:dragon_egg"},{group:0,type:"minecraft:dried_kelp_block",item:"minecraft:dried_kelp_block"},{group:0,type:"minecraft:dripstone_block",item:"minecraft:dripstone_block"},{group:0,type:"minecraft:emerald_block",item:"minecraft:emerald_block"},{group:0,type:"minecraft:emerald_ore",item:"minecraft:emerald_ore"},{group:0,type:"minecraft:enchanting_table",item:"minecraft:enchanting_table"},{group:0,type:"minecraft:end_gateway"},{group:0,type:"minecraft:end_portal"},{group:0,type:"minecraft:end_stone",item:"minecraft:end_stone"},{group:0,type:"minecraft:end_stone_bricks",item:"minecraft:end_stone_bricks"},{group:0,type:"minecraft:exposed_chiseled_copper",item:"minecraft:exposed_chiseled_copper"},{group:0,type:"minecraft:exposed_copper",item:"minecraft:exposed_copper"},{group:0,type:"minecraft:exposed_cut_copper",item:"minecraft:exposed_cut_copper"},{group:0,type:"minecraft:fern",item:"minecraft:fern"},{group:0,type:"minecraft:fire_coral_block",item:"minecraft:fire_coral_block"},{group:0,type:"minecraft:fletching_table",item:"minecraft:fletching_table"},{group:0,type:"minecraft:flower_pot",item:"minecraft:flower_pot"},{group:0,type:"minecraft:flowering_azalea",item:"minecraft:flowering_azalea"},{group:0,type:"minecraft:frogspawn",item:"minecraft:frogspawn"},{group:0,type:"minecraft:gilded_blackstone",item:"minecraft:gilded_blackstone"},{group:0,type:"minecraft:glass",item:"minecraft:glass"},{group:0,type:"minecraft:glowstone",item:"minecraft:glowstone"},{group:0,type:"minecraft:gold_block",item:"minecraft:gold_block"},{group:0,type:"minecraft:gold_ore",item:"minecraft:gold_ore"},{group:0,type:"minecraft:granite",item:"minecraft:granite"},{group:0,type:"minecraft:gravel",item:"minecraft:gravel"},{group:0,type:"minecraft:gray_carpet",item:"minecraft:gray_carpet"},{group:0,type:"minecraft:gray_concrete",item:"minecraft:gray_concrete"},{group:0,type:"minecraft:gray_concrete_powder",item:"minecraft:gray_concrete_powder"},{group:0,type:"minecraft:gray_stained_glass",item:"minecraft:gray_stained_glass"},{group:0,type:"minecraft:gray_terracotta",item:"minecraft:gray_terracotta"},{group:0,type:"minecraft:gray_wool",item:"minecraft:gray_wool"},{group:0,type:"minecraft:green_carpet",item:"minecraft:green_carpet"},{group:0,type:"minecraft:green_concrete",item:"minecraft:green_concrete"},{group:0,type:"minecraft:green_concrete_powder",item:"minecraft:green_concrete_powder"},{group:0,type:"minecraft:green_stained_glass",item:"minecraft:green_stained_glass"},{group:0,type:"minecraft:green_terracotta",item:"minecraft:green_terracotta"},{group:0,type:"minecraft:green_wool",item:"minecraft:green_wool"},{group:0,type:"minecraft:honey_block",item:"minecraft:honey_block"},{group:0,type:"minecraft:honeycomb_block",item:"minecraft:honeycomb_block"},{group:0,type:"minecraft:horn_coral_block",item:"minecraft:horn_coral_block"},{group:0,type:"minecraft:ice",item:"minecraft:ice"},{group:0,type:"minecraft:infested_chiseled_stone_bricks",item:"minecraft:infested_chiseled_stone_bricks"},{group:0,type:"minecraft:infested_cobblestone",item:"minecraft:infested_cobblestone"},{group:0,type:"minecraft:infested_cracked_stone_bricks",item:"minecraft:infested_cracked_stone_bricks"},{group:0,type:"minecraft:infested_mossy_stone_bricks",item:"minecraft:infested_mossy_stone_bricks"},{group:0,type:"minecraft:infested_stone",item:"minecraft:infested_stone"},{group:0,type:"minecraft:infested_stone_bricks",item:"minecraft:infested_stone_bricks"},{group:0,type:"minecraft:iron_block",item:"minecraft:iron_block"},{group:0,type:"minecraft:iron_ore",item:"minecraft:iron_ore"},{group:0,type:"minecraft:jungle_planks",item:"minecraft:jungle_planks"},{group:0,type:"minecraft:kelp_plant"},{group:0,type:"minecraft:lapis_block",item:"minecraft:lapis_block"},{group:0,type:"minecraft:lapis_ore",item:"minecraft:lapis_ore"},{group:0,type:"minecraft:lava_cauldron",item:"minecraft:cauldron"},{group:0,type:"minecraft:light_blue_carpet",item:"minecraft:light_blue_carpet"},{group:0,type:"minecraft:light_blue_concrete",item:"minecraft:light_blue_concrete"},{group:0,type:"minecraft:light_blue_concrete_powder",item:"minecraft:light_blue_concrete_powder"},{group:0,type:"minecraft:light_blue_stained_glass",item:"minecraft:light_blue_stained_glass"},{group:0,type:"minecraft:light_blue_terracotta",item:"minecraft:light_blue_terracotta"},{group:0,type:"minecraft:light_blue_wool",item:"minecraft:light_blue_wool"},{group:0,type:"minecraft:light_gray_carpet",item:"minecraft:light_gray_carpet"},{group:0,type:"minecraft:light_gray_concrete",item:"minecraft:light_gray_concrete"},{group:0,type:"minecraft:light_gray_concrete_powder",item:"minecraft:light_gray_concrete_powder"},{group:0,type:"minecraft:light_gray_stained_glass",item:"minecraft:light_gray_stained_glass"},{group:0,type:"minecraft:light_gray_terracotta",item:"minecraft:light_gray_terracotta"},{group:0,type:"minecraft:light_gray_wool",item:"minecraft:light_gray_wool"},{group:0,type:"minecraft:lily_of_the_valley",item:"minecraft:lily_of_the_valley"},{group:0,type:"minecraft:lily_pad",item:"minecraft:lily_pad"},{group:0,type:"minecraft:lime_carpet",item:"minecraft:lime_carpet"},{group:0,type:"minecraft:lime_concrete",item:"minecraft:lime_concrete"},{group:0,type:"minecraft:lime_concrete_powder",item:"minecraft:lime_concrete_powder"},{group:0,type:"minecraft:lime_stained_glass",item:"minecraft:lime_stained_glass"},{group:0,type:"minecraft:lime_terracotta",item:"minecraft:lime_terracotta"},{group:0,type:"minecraft:lime_wool",item:"minecraft:lime_wool"},{group:0,type:"minecraft:lodestone",item:"minecraft:lodestone"},{group:0,type:"minecraft:magenta_carpet",item:"minecraft:magenta_carpet"},{group:0,type:"minecraft:magenta_concrete",item:"minecraft:magenta_concrete"},{group:0,type:"minecraft:magenta_concrete_powder",item:"minecraft:magenta_concrete_powder"},{group:0,type:"minecraft:magenta_stained_glass",item:"minecraft:magenta_stained_glass"},{group:0,type:"minecraft:magenta_terracotta",item:"minecraft:magenta_terracotta"},{group:0,type:"minecraft:magenta_wool",item:"minecraft:magenta_wool"},{group:0,type:"minecraft:magma_block",item:"minecraft:magma_block"},{group:0,type:"minecraft:mangrove_planks",item:"minecraft:mangrove_planks"},{group:0,type:"minecraft:melon",item:"minecraft:melon"},{group:0,type:"minecraft:moss_block",item:"minecraft:moss_block"},{group:0,type:"minecraft:moss_carpet",item:"minecraft:moss_carpet"},{group:0,type:"minecraft:mossy_cobblestone",item:"minecraft:mossy_cobblestone"},{group:0,type:"minecraft:mossy_stone_bricks",item:"minecraft:mossy_stone_bricks"},{group:0,type:"minecraft:mud",item:"minecraft:mud"},{group:0,type:"minecraft:mud_bricks",item:"minecraft:mud_bricks"},{group:0,type:"minecraft:nether_bricks",item:"minecraft:nether_bricks"},{group:0,type:"minecraft:nether_gold_ore",item:"minecraft:nether_gold_ore"},{group:0,type:"minecraft:nether_quartz_ore",item:"minecraft:nether_quartz_ore"},{group:0,type:"minecraft:nether_sprouts",item:"minecraft:nether_sprouts"},{group:0,type:"minecraft:nether_wart_block",item:"minecraft:nether_wart_block"},{group:0,type:"minecraft:netherite_block",item:"minecraft:netherite_block"},{group:0,type:"minecraft:netherrack",item:"minecraft:netherrack"},{group:0,type:"minecraft:oak_planks",item:"minecraft:oak_planks"},{group:0,type:"minecraft:obsidian",item:"minecraft:obsidian"},{group:0,type:"minecraft:orange_carpet",item:"minecraft:orange_carpet"},{group:0,type:"minecraft:orange_concrete",item:"minecraft:orange_concrete"},{group:0,type:"minecraft:orange_concrete_powder",item:"minecraft:orange_concrete_powder"},{group:0,type:"minecraft:orange_stained_glass",item:"minecraft:orange_stained_glass"},{group:0,type:"minecraft:orange_terracotta",item:"minecraft:orange_terracotta"},{group:0,type:"minecraft:orange_tulip",item:"minecraft:orange_tulip"},{group:0,type:"minecraft:orange_wool",item:"minecraft:orange_wool"},{group:0,type:"minecraft:oxeye_daisy",item:"minecraft:oxeye_daisy"},{group:0,type:"minecraft:oxidized_chiseled_copper",item:"minecraft:oxidized_chiseled_copper"},{group:0,type:"minecraft:oxidized_copper",item:"minecraft:oxidized_copper"},{group:0,type:"minecraft:oxidized_cut_copper",item:"minecraft:oxidized_cut_copper"},{group:0,type:"minecraft:packed_ice",item:"minecraft:packed_ice"},{group:0,type:"minecraft:packed_mud",item:"minecraft:packed_mud"},{group:0,type:"minecraft:pink_carpet",item:"minecraft:pink_carpet"},{group:0,type:"minecraft:pink_concrete",item:"minecraft:pink_concrete"},{group:0,type:"minecraft:pink_concrete_powder",item:"minecraft:pink_concrete_powder"},{group:0,type:"minecraft:pink_stained_glass",item:"minecraft:pink_stained_glass"},{group:0,type:"minecraft:pink_terracotta",item:"minecraft:pink_terracotta"},{group:0,type:"minecraft:pink_tulip",item:"minecraft:pink_tulip"},{group:0,type:"minecraft:pink_wool",item:"minecraft:pink_wool"},{group:0,type:"minecraft:polished_andesite",item:"minecraft:polished_andesite"},{group:0,type:"minecraft:polished_blackstone",item:"minecraft:polished_blackstone"},{group:0,type:"minecraft:polished_blackstone_bricks",item:"minecraft:polished_blackstone_bricks"},{group:0,type:"minecraft:polished_deepslate",item:"minecraft:polished_deepslate"},{group:0,type:"minecraft:polished_diorite",item:"minecraft:polished_diorite"},{group:0,type:"minecraft:polished_granite",item:"minecraft:polished_granite"},{group:0,type:"minecraft:polished_tuff",item:"minecraft:polished_tuff"},{group:0,type:"minecraft:poppy",item:"minecraft:poppy"},{group:0,type:"minecraft:potted_acacia_sapling"},{group:0,type:"minecraft:potted_allium"},{group:0,type:"minecraft:potted_azalea_bush"},{group:0,type:"minecraft:potted_azure_bluet"},{group:0,type:"minecraft:potted_bamboo"},{group:0,type:"minecraft:potted_birch_sapling"},{group:0,type:"minecraft:potted_blue_orchid"},{group:0,type:"minecraft:potted_brown_mushroom"},{group:0,type:"minecraft:potted_cactus"},{group:0,type:"minecraft:potted_cherry_sapling"},{group:0,type:"minecraft:potted_cornflower"},{group:0,type:"minecraft:potted_crimson_fungus"},{group:0,type:"minecraft:potted_crimson_roots"},{group:0,type:"minecraft:potted_dandelion"},{group:0,type:"minecraft:potted_dark_oak_sapling"},{group:0,type:"minecraft:potted_dead_bush"},{group:0,type:"minecraft:potted_fern"},{group:0,type:"minecraft:potted_flowering_azalea_bush"},{group:0,type:"minecraft:potted_jungle_sapling"},{group:0,type:"minecraft:potted_lily_of_the_valley"},{group:0,type:"minecraft:potted_mangrove_propagule"},{group:0,type:"minecraft:potted_oak_sapling"},{group:0,type:"minecraft:potted_orange_tulip"},{group:0,type:"minecraft:potted_oxeye_daisy"},{group:0,type:"minecraft:potted_pink_tulip"},{group:0,type:"minecraft:potted_poppy"},{group:0,type:"minecraft:potted_red_mushroom"},{group:0,type:"minecraft:potted_red_tulip"},{group:0,type:"minecraft:potted_spruce_sapling"},{group:0,type:"minecraft:potted_torchflower"},{group:0,type:"minecraft:potted_warped_fungus"},{group:0,type:"minecraft:potted_warped_roots"},{group:0,type:"minecraft:potted_white_tulip"},{group:0,type:"minecraft:potted_wither_rose"},{group:0,type:"minecraft:powder_snow",item:"minecraft:powder_snow_bucket"},{group:0,type:"minecraft:prismarine",item:"minecraft:prismarine"},{group:0,type:"minecraft:prismarine_bricks",item:"minecraft:prismarine_bricks"},{group:0,type:"minecraft:pumpkin",item:"minecraft:pumpkin"},{group:0,type:"minecraft:purple_carpet",item:"minecraft:purple_carpet"},{group:0,type:"minecraft:purple_concrete",item:"minecraft:purple_concrete"},{group:0,type:"minecraft:purple_concrete_powder",item:"minecraft:purple_concrete_powder"},{group:0,type:"minecraft:purple_stained_glass",item:"minecraft:purple_stained_glass"},{group:0,type:"minecraft:purple_terracotta",item:"minecraft:purple_terracotta"},{group:0,type:"minecraft:purple_wool",item:"minecraft:purple_wool"},{group:0,type:"minecraft:purpur_block",item:"minecraft:purpur_block"},{group:0,type:"minecraft:quartz_block",item:"minecraft:quartz_block"},{group:0,type:"minecraft:quartz_bricks",item:"minecraft:quartz_bricks"},{group:0,type:"minecraft:raw_copper_block",item:"minecraft:raw_copper_block"},{group:0,type:"minecraft:raw_gold_block",item:"minecraft:raw_gold_block"},{group:0,type:"minecraft:raw_iron_block",item:"minecraft:raw_iron_block"},{group:0,type:"minecraft:red_carpet",item:"minecraft:red_carpet"},{group:0,type:"minecraft:red_concrete",item:"minecraft:red_concrete"},{group:0,type:"minecraft:red_concrete_powder",item:"minecraft:red_concrete_powder"},{group:0,type:"minecraft:red_mushroom",item:"minecraft:red_mushroom"},{group:0,type:"minecraft:red_nether_bricks",item:"minecraft:red_nether_bricks"},{group:0,type:"minecraft:red_sand",item:"minecraft:red_sand"},{group:0,type:"minecraft:red_sandstone",item:"minecraft:red_sandstone"},{group:0,type:"minecraft:red_stained_glass",item:"minecraft:red_stained_glass"},{group:0,type:"minecraft:red_terracotta",item:"minecraft:red_terracotta"},{group:0,type:"minecraft:red_tulip",item:"minecraft:red_tulip"},{group:0,type:"minecraft:red_wool",item:"minecraft:red_wool"},{group:0,type:"minecraft:redstone_block",item:"minecraft:redstone_block"},{group:0,type:"minecraft:reinforced_deepslate",item:"minecraft:reinforced_deepslate"},{group:0,type:"minecraft:rooted_dirt",item:"minecraft:rooted_dirt"},{group:0,type:"minecraft:sand",item:"minecraft:sand"},{group:0,type:"minecraft:sandstone",item:"minecraft:sandstone"},{group:0,type:"minecraft:sculk",item:"minecraft:sculk"},{group:0,type:"minecraft:sea_lantern",item:"minecraft:sea_lantern"},{group:0,type:"minecraft:seagrass",item:"minecraft:seagrass"},{group:0,type:"minecraft:short_grass",item:"minecraft:short_grass"},{group:0,type:"minecraft:shroomlight",item:"minecraft:shroomlight"},{group:0,type:"minecraft:slime_block",item:"minecraft:slime_block"},{group:0,type:"minecraft:smithing_table",item:"minecraft:smithing_table"},{group:0,type:"minecraft:smooth_basalt",item:"minecraft:smooth_basalt"},{group:0,type:"minecraft:smooth_quartz",item:"minecraft:smooth_quartz"},{group:0,type:"minecraft:smooth_red_sandstone",item:"minecraft:smooth_red_sandstone"},{group:0,type:"minecraft:smooth_sandstone",item:"minecraft:smooth_sandstone"},{group:0,type:"minecraft:smooth_stone",item:"minecraft:smooth_stone"},{group:0,type:"minecraft:snow_block",item:"minecraft:snow_block"},{group:0,type:"minecraft:soul_fire"},{group:0,type:"minecraft:soul_sand",item:"minecraft:soul_sand"},{group:0,type:"minecraft:soul_soil",item:"minecraft:soul_soil"},{group:0,type:"minecraft:soul_torch",item:"minecraft:soul_torch"},{group:0,type:"minecraft:spawner",item:"minecraft:spawner"},{group:0,type:"minecraft:sponge",item:"minecraft:sponge"},{group:0,type:"minecraft:spore_blossom",item:"minecraft:spore_blossom"},{group:0,type:"minecraft:spruce_planks",item:"minecraft:spruce_planks"},{group:0,type:"minecraft:stone",item:"minecraft:stone"},{group:0,type:"minecraft:stone_bricks",item:"minecraft:stone_bricks"},{group:0,type:"minecraft:structure_void",item:"minecraft:structure_void"},{group:0,type:"minecraft:terracotta",item:"minecraft:terracotta"},{group:0,type:"minecraft:tinted_glass",item:"minecraft:tinted_glass"},{group:0,type:"minecraft:torch",item:"minecraft:torch"},{group:0,type:"minecraft:torchflower",item:"minecraft:torchflower"},{group:0,type:"minecraft:tube_coral_block",item:"minecraft:tube_coral_block"},{group:0,type:"minecraft:tuff",item:"minecraft:tuff"},{group:0,type:"minecraft:tuff_bricks",item:"minecraft:tuff_bricks"},{group:0,type:"minecraft:twisting_vines_plant"},{group:0,type:"minecraft:void_air"},{group:0,type:"minecraft:warped_fungus",item:"minecraft:warped_fungus"},{group:0,type:"minecraft:warped_nylium",item:"minecraft:warped_nylium"},{group:0,type:"minecraft:warped_planks",item:"minecraft:warped_planks"},{group:0,type:"minecraft:warped_roots",item:"minecraft:warped_roots"},{group:0,type:"minecraft:warped_wart_block",item:"minecraft:warped_wart_block"},{group:0,type:"minecraft:waxed_chiseled_copper",item:"minecraft:waxed_chiseled_copper"},{group:0,type:"minecraft:waxed_copper_block",item:"minecraft:waxed_copper_block"},{group:0,type:"minecraft:waxed_cut_copper",item:"minecraft:waxed_cut_copper"},{group:0,type:"minecraft:waxed_exposed_chiseled_copper",item:"minecraft:waxed_exposed_chiseled_copper"},{group:0,type:"minecraft:waxed_exposed_copper",item:"minecraft:waxed_exposed_copper"},{group:0,type:"minecraft:waxed_exposed_cut_copper",item:"minecraft:waxed_exposed_cut_copper"},{group:0,type:"minecraft:waxed_oxidized_chiseled_copper",item:"minecraft:waxed_oxidized_chiseled_copper"},{group:0,type:"minecraft:waxed_oxidized_copper",item:"minecraft:waxed_oxidized_copper"},{group:0,type:"minecraft:waxed_oxidized_cut_copper",item:"minecraft:waxed_oxidized_cut_copper"},{group:0,type:"minecraft:waxed_weathered_chiseled_copper",item:"minecraft:waxed_weathered_chiseled_copper"},{group:0,type:"minecraft:waxed_weathered_copper",item:"minecraft:waxed_weathered_copper"},{group:0,type:"minecraft:waxed_weathered_cut_copper",item:"minecraft:waxed_weathered_cut_copper"},{group:0,type:"minecraft:weathered_chiseled_copper",item:"minecraft:weathered_chiseled_copper"},{group:0,type:"minecraft:weathered_copper",item:"minecraft:weathered_copper"},{group:0,type:"minecraft:weathered_cut_copper",item:"minecraft:weathered_cut_copper"},{group:0,type:"minecraft:weeping_vines_plant"},{group:0,type:"minecraft:wet_sponge",item:"minecraft:wet_sponge"},{group:0,type:"minecraft:white_carpet",item:"minecraft:white_carpet"},{group:0,type:"minecraft:white_concrete",item:"minecraft:white_concrete"},{group:0,type:"minecraft:white_concrete_powder",item:"minecraft:white_concrete_powder"},{group:0,type:"minecraft:white_stained_glass",item:"minecraft:white_stained_glass"},{group:0,type:"minecraft:white_terracotta",item:"minecraft:white_terracotta"},{group:0,type:"minecraft:white_tulip",item:"minecraft:white_tulip"},{group:0,type:"minecraft:white_wool",item:"minecraft:white_wool"},{group:0,type:"minecraft:wither_rose",item:"minecraft:wither_rose"},{group:0,type:"minecraft:yellow_carpet",item:"minecraft:yellow_carpet"},{group:0,type:"minecraft:yellow_concrete",item:"minecraft:yellow_concrete"},{group:0,type:"minecraft:yellow_concrete_powder",item:"minecraft:yellow_concrete_powder"},{group:0,type:"minecraft:yellow_stained_glass",item:"minecraft:yellow_stained_glass"},{group:0,type:"minecraft:yellow_terracotta",item:"minecraft:yellow_terracotta"},{group:0,type:"minecraft:yellow_wool",item:"minecraft:yellow_wool"},{group:1,type:"minecraft:acacia_button",item:"minecraft:acacia_button"},{group:1,type:"minecraft:bamboo_button",item:"minecraft:bamboo_button"},{group:1,type:"minecraft:birch_button",item:"minecraft:birch_button"},{group:1,type:"minecraft:cherry_button",item:"minecraft:cherry_button"},{group:1,type:"minecraft:crimson_button",item:"minecraft:crimson_button"},{group:1,type:"minecraft:dark_oak_button",item:"minecraft:dark_oak_button"},{group:1,type:"minecraft:jungle_button",item:"minecraft:jungle_button"},{group:1,type:"minecraft:lever",item:"minecraft:lever"},{group:1,type:"minecraft:mangrove_button",item:"minecraft:mangrove_button"},{group:1,type:"minecraft:oak_button",item:"minecraft:oak_button"},{group:1,type:"minecraft:polished_blackstone_button",item:"minecraft:polished_blackstone_button"},{group:1,type:"minecraft:spruce_button",item:"minecraft:spruce_button"},{group:1,type:"minecraft:stone_button",item:"minecraft:stone_button"},{group:1,type:"minecraft:warped_button",item:"minecraft:warped_button"},{group:2,type:"minecraft:acacia_door",item:"minecraft:acacia_door"},{group:2,type:"minecraft:bamboo_door",item:"minecraft:bamboo_door"},{group:2,type:"minecraft:birch_door",item:"minecraft:birch_door"},{group:2,type:"minecraft:cherry_door",item:"minecraft:cherry_door"},{group:2,type:"minecraft:copper_door",item:"minecraft:copper_door"},{group:2,type:"minecraft:crimson_door",item:"minecraft:crimson_door"},{group:2,type:"minecraft:dark_oak_door",item:"minecraft:dark_oak_door"},{group:2,type:"minecraft:exposed_copper_door",item:"minecraft:exposed_copper_door"},{group:2,type:"minecraft:iron_door",item:"minecraft:iron_door"},{group:2,type:"minecraft:jungle_door",item:"minecraft:jungle_door"},{group:2,type:"minecraft:mangrove_door",item:"minecraft:mangrove_door"},{group:2,type:"minecraft:oak_door",item:"minecraft:oak_door"},{group:2,type:"minecraft:oxidized_copper_door",item:"minecraft:oxidized_copper_door"},{group:2,type:"minecraft:spruce_door",item:"minecraft:spruce_door"},{group:2,type:"minecraft:warped_door",item:"minecraft:warped_door"},{group:2,type:"minecraft:waxed_copper_door",item:"minecraft:waxed_copper_door"},{group:2,type:"minecraft:waxed_exposed_copper_door",item:"minecraft:waxed_exposed_copper_door"},{group:2,type:"minecraft:waxed_oxidized_copper_door",item:"minecraft:waxed_oxidized_copper_door"},{group:2,type:"minecraft:waxed_weathered_copper_door",item:"minecraft:waxed_weathered_copper_door"},{group:2,type:"minecraft:weathered_copper_door",item:"minecraft:weathered_copper_door"},{group:3,type:"minecraft:acacia_fence",item:"minecraft:acacia_fence"},{group:3,type:"minecraft:bamboo_fence",item:"minecraft:bamboo_fence"},{group:3,type:"minecraft:birch_fence",item:"minecraft:birch_fence"},{group:3,type:"minecraft:black_stained_glass_pane",item:"minecraft:black_stained_glass_pane"},{group:3,type:"minecraft:blue_stained_glass_pane",item:"minecraft:blue_stained_glass_pane"},{group:3,type:"minecraft:brown_stained_glass_pane",item:"minecraft:brown_stained_glass_pane"},{group:3,type:"minecraft:cherry_fence",item:"minecraft:cherry_fence"},{group:3,type:"minecraft:crimson_fence",item:"minecraft:crimson_fence"},{group:3,type:"minecraft:cyan_stained_glass_pane",item:"minecraft:cyan_stained_glass_pane"},{group:3,type:"minecraft:dark_oak_fence",item:"minecraft:dark_oak_fence"},{group:3,type:"minecraft:glass_pane",item:"minecraft:glass_pane"},{group:3,type:"minecraft:gray_stained_glass_pane",item:"minecraft:gray_stained_glass_pane"},{group:3,type:"minecraft:green_stained_glass_pane",item:"minecraft:green_stained_glass_pane"},{group:3,type:"minecraft:iron_bars",item:"minecraft:iron_bars"},{group:3,type:"minecraft:jungle_fence",item:"minecraft:jungle_fence"},{group:3,type:"minecraft:light_blue_stained_glass_pane",item:"minecraft:light_blue_stained_glass_pane"},{group:3,type:"minecraft:light_gray_stained_glass_pane",item:"minecraft:light_gray_stained_glass_pane"},{group:3,type:"minecraft:lime_stained_glass_pane",item:"minecraft:lime_stained_glass_pane"},{group:3,type:"minecraft:magenta_stained_glass_pane",item:"minecraft:magenta_stained_glass_pane"},{group:3,type:"minecraft:mangrove_fence",item:"minecraft:mangrove_fence"},{group:3,type:"minecraft:nether_brick_fence",item:"minecraft:nether_brick_fence"},{group:3,type:"minecraft:oak_fence",item:"minecraft:oak_fence"},{group:3,type:"minecraft:orange_stained_glass_pane",item:"minecraft:orange_stained_glass_pane"},{group:3,type:"minecraft:pink_stained_glass_pane",item:"minecraft:pink_stained_glass_pane"},{group:3,type:"minecraft:purple_stained_glass_pane",item:"minecraft:purple_stained_glass_pane"},{group:3,type:"minecraft:red_stained_glass_pane",item:"minecraft:red_stained_glass_pane"},{group:3,type:"minecraft:spruce_fence",item:"minecraft:spruce_fence"},{group:3,type:"minecraft:warped_fence",item:"minecraft:warped_fence"},{group:3,type:"minecraft:white_stained_glass_pane",item:"minecraft:white_stained_glass_pane"},{group:3,type:"minecraft:yellow_stained_glass_pane",item:"minecraft:yellow_stained_glass_pane"},{group:4,type:"minecraft:acacia_fence_gate",item:"minecraft:acacia_fence_gate"},{group:4,type:"minecraft:bamboo_fence_gate",item:"minecraft:bamboo_fence_gate"},{group:4,type:"minecraft:birch_fence_gate",item:"minecraft:birch_fence_gate"},{group:4,type:"minecraft:cherry_fence_gate",item:"minecraft:cherry_fence_gate"},{group:4,type:"minecraft:crimson_fence_gate",item:"minecraft:crimson_fence_gate"},{group:4,type:"minecraft:dark_oak_fence_gate",item:"minecraft:dark_oak_fence_gate"},{group:4,type:"minecraft:jungle_fence_gate",item:"minecraft:jungle_fence_gate"},{group:4,type:"minecraft:mangrove_fence_gate",item:"minecraft:mangrove_fence_gate"},{group:4,type:"minecraft:oak_fence_gate",item:"minecraft:oak_fence_gate"},{group:4,type:"minecraft:spruce_fence_gate",item:"minecraft:spruce_fence_gate"},{group:4,type:"minecraft:warped_fence_gate",item:"minecraft:warped_fence_gate"},{group:5,type:"minecraft:acacia_hanging_sign",item:"minecraft:acacia_hanging_sign"},{group:5,type:"minecraft:bamboo_hanging_sign",item:"minecraft:bamboo_hanging_sign"},{group:5,type:"minecraft:birch_hanging_sign",item:"minecraft:birch_hanging_sign"},{group:5,type:"minecraft:cherry_hanging_sign",item:"minecraft:cherry_hanging_sign"},{group:5,type:"minecraft:crimson_hanging_sign",item:"minecraft:crimson_hanging_sign"},{group:5,type:"minecraft:dark_oak_hanging_sign",item:"minecraft:dark_oak_hanging_sign"},{group:5,type:"minecraft:jungle_hanging_sign",item:"minecraft:jungle_hanging_sign"},{group:5,type:"minecraft:mangrove_hanging_sign",item:"minecraft:mangrove_hanging_sign"},{group:5,type:"minecraft:oak_hanging_sign",item:"minecraft:oak_hanging_sign"},{group:5,type:"minecraft:spruce_hanging_sign",item:"minecraft:spruce_hanging_sign"},{group:5,type:"minecraft:warped_hanging_sign",item:"minecraft:warped_hanging_sign"},{group:6,type:"minecraft:acacia_leaves",item:"minecraft:acacia_leaves"},{group:6,type:"minecraft:azalea_leaves",item:"minecraft:azalea_leaves"},{group:6,type:"minecraft:birch_leaves",item:"minecraft:birch_leaves"},{group:6,type:"minecraft:cherry_leaves",item:"minecraft:cherry_leaves"},{group:6,type:"minecraft:dark_oak_leaves",item:"minecraft:dark_oak_leaves"},{group:6,type:"minecraft:flowering_azalea_leaves",item:"minecraft:flowering_azalea_leaves"},{group:6,type:"minecraft:jungle_leaves",item:"minecraft:jungle_leaves"},{group:6,type:"minecraft:mangrove_leaves",item:"minecraft:mangrove_leaves"},{group:6,type:"minecraft:oak_leaves",item:"minecraft:oak_leaves"},{group:6,type:"minecraft:spruce_leaves",item:"minecraft:spruce_leaves"},{group:7,type:"minecraft:acacia_log",item:"minecraft:acacia_log"},{group:7,type:"minecraft:acacia_wood",item:"minecraft:acacia_wood"},{group:7,type:"minecraft:bamboo_block",item:"minecraft:bamboo_block"},{group:7,type:"minecraft:basalt",item:"minecraft:basalt"},{group:7,type:"minecraft:birch_log",item:"minecraft:birch_log"},{group:7,type:"minecraft:birch_wood",item:"minecraft:birch_wood"},{group:7,type:"minecraft:bone_block",item:"minecraft:bone_block"},{group:7,type:"minecraft:cherry_log",item:"minecraft:cherry_log"},{group:7,type:"minecraft:cherry_wood",item:"minecraft:cherry_wood"},{group:7,type:"minecraft:crimson_hyphae",item:"minecraft:crimson_hyphae"},{group:7,type:"minecraft:crimson_stem",item:"minecraft:crimson_stem"},{group:7,type:"minecraft:dark_oak_log",item:"minecraft:dark_oak_log"},{group:7,type:"minecraft:dark_oak_wood",item:"minecraft:dark_oak_wood"},{group:7,type:"minecraft:deepslate",item:"minecraft:deepslate"},{group:7,type:"minecraft:hay_block",item:"minecraft:hay_block"},{group:7,type:"minecraft:infested_deepslate",item:"minecraft:infested_deepslate"},{group:7,type:"minecraft:jungle_log",item:"minecraft:jungle_log"},{group:7,type:"minecraft:jungle_wood",item:"minecraft:jungle_wood"},{group:7,type:"minecraft:mangrove_log",item:"minecraft:mangrove_log"},{group:7,type:"minecraft:mangrove_wood",item:"minecraft:mangrove_wood"},{group:7,type:"minecraft:muddy_mangrove_roots",item:"minecraft:muddy_mangrove_roots"},{group:7,type:"minecraft:oak_log",item:"minecraft:oak_log"},{group:7,type:"minecraft:oak_wood",item:"minecraft:oak_wood"},{group:7,type:"minecraft:ochre_froglight",item:"minecraft:ochre_froglight"},{group:7,type:"minecraft:pearlescent_froglight",item:"minecraft:pearlescent_froglight"},{group:7,type:"minecraft:polished_basalt",item:"minecraft:polished_basalt"},{group:7,type:"minecraft:purpur_pillar",item:"minecraft:purpur_pillar"},{group:7,type:"minecraft:quartz_pillar",item:"minecraft:quartz_pillar"},{group:7,type:"minecraft:spruce_log",item:"minecraft:spruce_log"},{group:7,type:"minecraft:spruce_wood",item:"minecraft:spruce_wood"},{group:7,type:"minecraft:stripped_acacia_log",item:"minecraft:stripped_acacia_log"},{group:7,type:"minecraft:stripped_acacia_wood",item:"minecraft:stripped_acacia_wood"},{group:7,type:"minecraft:stripped_bamboo_block",item:"minecraft:stripped_bamboo_block"},{group:7,type:"minecraft:stripped_birch_log",item:"minecraft:stripped_birch_log"},{group:7,type:"minecraft:stripped_birch_wood",item:"minecraft:stripped_birch_wood"},{group:7,type:"minecraft:stripped_cherry_log",item:"minecraft:stripped_cherry_log"},{group:7,type:"minecraft:stripped_cherry_wood",item:"minecraft:stripped_cherry_wood"},{group:7,type:"minecraft:stripped_crimson_hyphae",item:"minecraft:stripped_crimson_hyphae"},{group:7,type:"minecraft:stripped_crimson_stem",item:"minecraft:stripped_crimson_stem"},{group:7,type:"minecraft:stripped_dark_oak_log",item:"minecraft:stripped_dark_oak_log"},{group:7,type:"minecraft:stripped_dark_oak_wood",item:"minecraft:stripped_dark_oak_wood"},{group:7,type:"minecraft:stripped_jungle_log",item:"minecraft:stripped_jungle_log"},{group:7,type:"minecraft:stripped_jungle_wood",item:"minecraft:stripped_jungle_wood"},{group:7,type:"minecraft:stripped_mangrove_log",item:"minecraft:stripped_mangrove_log"},{group:7,type:"minecraft:stripped_mangrove_wood",item:"minecraft:stripped_mangrove_wood"},{group:7,type:"minecraft:stripped_oak_log",item:"minecraft:stripped_oak_log"},{group:7,type:"minecraft:stripped_oak_wood",item:"minecraft:stripped_oak_wood"},{group:7,type:"minecraft:stripped_spruce_log",item:"minecraft:stripped_spruce_log"},{group:7,type:"minecraft:stripped_spruce_wood",item:"minecraft:stripped_spruce_wood"},{group:7,type:"minecraft:stripped_warped_hyphae",item:"minecraft:stripped_warped_hyphae"},{group:7,type:"minecraft:stripped_warped_stem",item:"minecraft:stripped_warped_stem"},{group:7,type:"minecraft:verdant_froglight",item:"minecraft:verdant_froglight"},{group:7,type:"minecraft:warped_hyphae",item:"minecraft:warped_hyphae"},{group:7,type:"minecraft:warped_stem",item:"minecraft:warped_stem"},{group:8,type:"minecraft:acacia_pressure_plate",item:"minecraft:acacia_pressure_plate"},{group:8,type:"minecraft:bamboo_pressure_plate",item:"minecraft:bamboo_pressure_plate"},{group:8,type:"minecraft:birch_pressure_plate",item:"minecraft:birch_pressure_plate"},{group:8,type:"minecraft:cherry_pressure_plate",item:"minecraft:cherry_pressure_plate"},{group:8,type:"minecraft:crimson_pressure_plate",item:"minecraft:crimson_pressure_plate"},{group:8,type:"minecraft:dark_oak_pressure_plate",item:"minecraft:dark_oak_pressure_plate"},{group:8,type:"minecraft:jungle_pressure_plate",item:"minecraft:jungle_pressure_plate"},{group:8,type:"minecraft:mangrove_pressure_plate",item:"minecraft:mangrove_pressure_plate"},{group:8,type:"minecraft:oak_pressure_plate",item:"minecraft:oak_pressure_plate"},{group:8,type:"minecraft:polished_blackstone_pressure_plate",item:"minecraft:polished_blackstone_pressure_plate"},{group:8,type:"minecraft:spruce_pressure_plate",item:"minecraft:spruce_pressure_plate"},{group:8,type:"minecraft:stone_pressure_plate",item:"minecraft:stone_pressure_plate"},{group:8,type:"minecraft:warped_pressure_plate",item:"minecraft:warped_pressure_plate"},{group:9,type:"minecraft:acacia_sapling",item:"minecraft:acacia_sapling"},{group:9,type:"minecraft:birch_sapling",item:"minecraft:birch_sapling"},{group:9,type:"minecraft:cherry_sapling",item:"minecraft:cherry_sapling"},{group:9,type:"minecraft:dark_oak_sapling",item:"minecraft:dark_oak_sapling"},{group:9,type:"minecraft:jungle_sapling",item:"minecraft:jungle_sapling"},{group:9,type:"minecraft:oak_sapling",item:"minecraft:oak_sapling"},{group:9,type:"minecraft:spruce_sapling",item:"minecraft:spruce_sapling"},{group:10,type:"minecraft:acacia_sign",item:"minecraft:acacia_sign"},{group:10,type:"minecraft:bamboo_sign",item:"minecraft:bamboo_sign"},{group:10,type:"minecraft:birch_sign",item:"minecraft:birch_sign"},{group:10,type:"minecraft:cherry_sign",item:"minecraft:cherry_sign"},{group:10,type:"minecraft:crimson_sign",item:"minecraft:crimson_sign"},{group:10,type:"minecraft:dark_oak_sign",item:"minecraft:dark_oak_sign"},{group:10,type:"minecraft:jungle_sign",item:"minecraft:jungle_sign"},{group:10,type:"minecraft:mangrove_sign",item:"minecraft:mangrove_sign"},{group:10,type:"minecraft:oak_sign",item:"minecraft:oak_sign"},{group:10,type:"minecraft:spruce_sign",item:"minecraft:spruce_sign"},{group:10,type:"minecraft:warped_sign",item:"minecraft:warped_sign"},{group:11,type:"minecraft:acacia_slab",item:"minecraft:acacia_slab"},{group:11,type:"minecraft:andesite_slab",item:"minecraft:andesite_slab"},{group:11,type:"minecraft:bamboo_mosaic_slab",item:"minecraft:bamboo_mosaic_slab"},{group:11,type:"minecraft:bamboo_slab",item:"minecraft:bamboo_slab"},{group:11,type:"minecraft:birch_slab",item:"minecraft:birch_slab"},{group:11,type:"minecraft:blackstone_slab",item:"minecraft:blackstone_slab"},{group:11,type:"minecraft:brick_slab",item:"minecraft:brick_slab"},{group:11,type:"minecraft:cherry_slab",item:"minecraft:cherry_slab"},{group:11,type:"minecraft:cobbled_deepslate_slab",item:"minecraft:cobbled_deepslate_slab"},{group:11,type:"minecraft:cobblestone_slab",item:"minecraft:cobblestone_slab"},{group:11,type:"minecraft:crimson_slab",item:"minecraft:crimson_slab"},{group:11,type:"minecraft:cut_copper_slab",item:"minecraft:cut_copper_slab"},{group:11,type:"minecraft:cut_red_sandstone_slab",item:"minecraft:cut_red_sandstone_slab"},{group:11,type:"minecraft:cut_sandstone_slab",item:"minecraft:cut_sandstone_slab"},{group:11,type:"minecraft:dark_oak_slab",item:"minecraft:dark_oak_slab"},{group:11,type:"minecraft:dark_prismarine_slab",item:"minecraft:dark_prismarine_slab"},{group:11,type:"minecraft:deepslate_brick_slab",item:"minecraft:deepslate_brick_slab"},{group:11,type:"minecraft:deepslate_tile_slab",item:"minecraft:deepslate_tile_slab"},{group:11,type:"minecraft:diorite_slab",item:"minecraft:diorite_slab"},{group:11,type:"minecraft:end_stone_brick_slab",item:"minecraft:end_stone_brick_slab"},{group:11,type:"minecraft:exposed_cut_copper_slab",item:"minecraft:exposed_cut_copper_slab"},{group:11,type:"minecraft:granite_slab",item:"minecraft:granite_slab"},{group:11,type:"minecraft:jungle_slab",item:"minecraft:jungle_slab"},{group:11,type:"minecraft:mangrove_slab",item:"minecraft:mangrove_slab"},{group:11,type:"minecraft:mossy_cobblestone_slab",item:"minecraft:mossy_cobblestone_slab"},{group:11,type:"minecraft:mossy_stone_brick_slab",item:"minecraft:mossy_stone_brick_slab"},{group:11,type:"minecraft:mud_brick_slab",item:"minecraft:mud_brick_slab"},{group:11,type:"minecraft:nether_brick_slab",item:"minecraft:nether_brick_slab"},{group:11,type:"minecraft:oak_slab",item:"minecraft:oak_slab"},{group:11,type:"minecraft:oxidized_cut_copper_slab",item:"minecraft:oxidized_cut_copper_slab"},{group:11,type:"minecraft:petrified_oak_slab",item:"minecraft:petrified_oak_slab"},{group:11,type:"minecraft:polished_andesite_slab",item:"minecraft:polished_andesite_slab"},{group:11,type:"minecraft:polished_blackstone_brick_slab",item:"minecraft:polished_blackstone_brick_slab"},{group:11,type:"minecraft:polished_blackstone_slab",item:"minecraft:polished_blackstone_slab"},{group:11,type:"minecraft:polished_deepslate_slab",item:"minecraft:polished_deepslate_slab"},{group:11,type:"minecraft:polished_diorite_slab",item:"minecraft:polished_diorite_slab"},{group:11,type:"minecraft:polished_granite_slab",item:"minecraft:polished_granite_slab"},{group:11,type:"minecraft:polished_tuff_slab",item:"minecraft:polished_tuff_slab"},{group:11,type:"minecraft:prismarine_brick_slab",item:"minecraft:prismarine_brick_slab"},{group:11,type:"minecraft:prismarine_slab",item:"minecraft:prismarine_slab"},{group:11,type:"minecraft:purpur_slab",item:"minecraft:purpur_slab"},{group:11,type:"minecraft:quartz_slab",item:"minecraft:quartz_slab"},{group:11,type:"minecraft:red_nether_brick_slab",item:"minecraft:red_nether_brick_slab"},{group:11,type:"minecraft:red_sandstone_slab",item:"minecraft:red_sandstone_slab"},{group:11,type:"minecraft:sandstone_slab",item:"minecraft:sandstone_slab"},{group:11,type:"minecraft:smooth_quartz_slab",item:"minecraft:smooth_quartz_slab"},{group:11,type:"minecraft:smooth_red_sandstone_slab",item:"minecraft:smooth_red_sandstone_slab"},{group:11,type:"minecraft:smooth_sandstone_slab",item:"minecraft:smooth_sandstone_slab"},{group:11,type:"minecraft:smooth_stone_slab",item:"minecraft:smooth_stone_slab"},{group:11,type:"minecraft:spruce_slab",item:"minecraft:spruce_slab"},{group:11,type:"minecraft:stone_brick_slab",item:"minecraft:stone_brick_slab"},{group:11,type:"minecraft:stone_slab",item:"minecraft:stone_slab"},{group:11,type:"minecraft:tuff_brick_slab",item:"minecraft:tuff_brick_slab"},{group:11,type:"minecraft:tuff_slab",item:"minecraft:tuff_slab"},{group:11,type:"minecraft:warped_slab",item:"minecraft:warped_slab"},{group:11,type:"minecraft:waxed_cut_copper_slab",item:"minecraft:waxed_cut_copper_slab"},{group:11,type:"minecraft:waxed_exposed_cut_copper_slab",item:"minecraft:waxed_exposed_cut_copper_slab"},{group:11,type:"minecraft:waxed_oxidized_cut_copper_slab",item:"minecraft:waxed_oxidized_cut_copper_slab"},{group:11,type:"minecraft:waxed_weathered_cut_copper_slab",item:"minecraft:waxed_weathered_cut_copper_slab"},{group:11,type:"minecraft:weathered_cut_copper_slab",item:"minecraft:weathered_cut_copper_slab"},{group:12,type:"minecraft:acacia_stairs",item:"minecraft:acacia_stairs"},{group:12,type:"minecraft:andesite_stairs",item:"minecraft:andesite_stairs"},{group:12,type:"minecraft:bamboo_mosaic_stairs",item:"minecraft:bamboo_mosaic_stairs"},{group:12,type:"minecraft:bamboo_stairs",item:"minecraft:bamboo_stairs"},{group:12,type:"minecraft:birch_stairs",item:"minecraft:birch_stairs"},{group:12,type:"minecraft:blackstone_stairs",item:"minecraft:blackstone_stairs"},{group:12,type:"minecraft:brick_stairs",item:"minecraft:brick_stairs"},{group:12,type:"minecraft:cherry_stairs",item:"minecraft:cherry_stairs"},{group:12,type:"minecraft:cobbled_deepslate_stairs",item:"minecraft:cobbled_deepslate_stairs"},{group:12,type:"minecraft:cobblestone_stairs",item:"minecraft:cobblestone_stairs"},{group:12,type:"minecraft:crimson_stairs",item:"minecraft:crimson_stairs"},{group:12,type:"minecraft:cut_copper_stairs",item:"minecraft:cut_copper_stairs"},{group:12,type:"minecraft:dark_oak_stairs",item:"minecraft:dark_oak_stairs"},{group:12,type:"minecraft:dark_prismarine_stairs",item:"minecraft:dark_prismarine_stairs"},{group:12,type:"minecraft:deepslate_brick_stairs",item:"minecraft:deepslate_brick_stairs"},{group:12,type:"minecraft:deepslate_tile_stairs",item:"minecraft:deepslate_tile_stairs"},{group:12,type:"minecraft:diorite_stairs",item:"minecraft:diorite_stairs"},{group:12,type:"minecraft:end_stone_brick_stairs",item:"minecraft:end_stone_brick_stairs"},{group:12,type:"minecraft:exposed_cut_copper_stairs",item:"minecraft:exposed_cut_copper_stairs"},{group:12,type:"minecraft:granite_stairs",item:"minecraft:granite_stairs"},{group:12,type:"minecraft:jungle_stairs",item:"minecraft:jungle_stairs"},{group:12,type:"minecraft:mangrove_stairs",item:"minecraft:mangrove_stairs"},{group:12,type:"minecraft:mossy_cobblestone_stairs",item:"minecraft:mossy_cobblestone_stairs"},{group:12,type:"minecraft:mossy_stone_brick_stairs",item:"minecraft:mossy_stone_brick_stairs"},{group:12,type:"minecraft:mud_brick_stairs",item:"minecraft:mud_brick_stairs"},{group:12,type:"minecraft:nether_brick_stairs",item:"minecraft:nether_brick_stairs"},{group:12,type:"minecraft:oak_stairs",item:"minecraft:oak_stairs"},{group:12,type:"minecraft:oxidized_cut_copper_stairs",item:"minecraft:oxidized_cut_copper_stairs"},{group:12,type:"minecraft:polished_andesite_stairs",item:"minecraft:polished_andesite_stairs"},{group:12,type:"minecraft:polished_blackstone_brick_stairs",item:"minecraft:polished_blackstone_brick_stairs"},{group:12,type:"minecraft:polished_blackstone_stairs",item:"minecraft:polished_blackstone_stairs"},{group:12,type:"minecraft:polished_deepslate_stairs",item:"minecraft:polished_deepslate_stairs"},{group:12,type:"minecraft:polished_diorite_stairs",item:"minecraft:polished_diorite_stairs"},{group:12,type:"minecraft:polished_granite_stairs",item:"minecraft:polished_granite_stairs"},{group:12,type:"minecraft:polished_tuff_stairs",item:"minecraft:polished_tuff_stairs"},{group:12,type:"minecraft:prismarine_brick_stairs",item:"minecraft:prismarine_brick_stairs"},{group:12,type:"minecraft:prismarine_stairs",item:"minecraft:prismarine_stairs"},{group:12,type:"minecraft:purpur_stairs",item:"minecraft:purpur_stairs"},{group:12,type:"minecraft:quartz_stairs",item:"minecraft:quartz_stairs"},{group:12,type:"minecraft:red_nether_brick_stairs",item:"minecraft:red_nether_brick_stairs"},{group:12,type:"minecraft:red_sandstone_stairs",item:"minecraft:red_sandstone_stairs"},{group:12,type:"minecraft:sandstone_stairs",item:"minecraft:sandstone_stairs"},{group:12,type:"minecraft:smooth_quartz_stairs",item:"minecraft:smooth_quartz_stairs"},{group:12,type:"minecraft:smooth_red_sandstone_stairs",item:"minecraft:smooth_red_sandstone_stairs"},{group:12,type:"minecraft:smooth_sandstone_stairs",item:"minecraft:smooth_sandstone_stairs"},{group:12,type:"minecraft:spruce_stairs",item:"minecraft:spruce_stairs"},{group:12,type:"minecraft:stone_brick_stairs",item:"minecraft:stone_brick_stairs"},{group:12,type:"minecraft:stone_stairs",item:"minecraft:stone_stairs"},{group:12,type:"minecraft:tuff_brick_stairs",item:"minecraft:tuff_brick_stairs"},{group:12,type:"minecraft:tuff_stairs",item:"minecraft:tuff_stairs"},{group:12,type:"minecraft:warped_stairs",item:"minecraft:warped_stairs"},{group:12,type:"minecraft:waxed_cut_copper_stairs",item:"minecraft:waxed_cut_copper_stairs"},{group:12,type:"minecraft:waxed_exposed_cut_copper_stairs",item:"minecraft:waxed_exposed_cut_copper_stairs"},{group:12,type:"minecraft:waxed_oxidized_cut_copper_stairs",item:"minecraft:waxed_oxidized_cut_copper_stairs"},{group:12,type:"minecraft:waxed_weathered_cut_copper_stairs",item:"minecraft:waxed_weathered_cut_copper_stairs"},{group:12,type:"minecraft:weathered_cut_copper_stairs",item:"minecraft:weathered_cut_copper_stairs"},{group:13,type:"minecraft:acacia_trapdoor",item:"minecraft:acacia_trapdoor"},{group:13,type:"minecraft:bamboo_trapdoor",item:"minecraft:bamboo_trapdoor"},{group:13,type:"minecraft:birch_trapdoor",item:"minecraft:birch_trapdoor"},{group:13,type:"minecraft:cherry_trapdoor",item:"minecraft:cherry_trapdoor"},{group:13,type:"minecraft:copper_trapdoor",item:"minecraft:copper_trapdoor"},{group:13,type:"minecraft:crimson_trapdoor",item:"minecraft:crimson_trapdoor"},{group:13,type:"minecraft:dark_oak_trapdoor",item:"minecraft:dark_oak_trapdoor"},{group:13,type:"minecraft:exposed_copper_trapdoor",item:"minecraft:exposed_copper_trapdoor"},{group:13,type:"minecraft:iron_trapdoor",item:"minecraft:iron_trapdoor"},{group:13,type:"minecraft:jungle_trapdoor",item:"minecraft:jungle_trapdoor"},{group:13,type:"minecraft:mangrove_trapdoor",item:"minecraft:mangrove_trapdoor"},{group:13,type:"minecraft:oak_trapdoor",item:"minecraft:oak_trapdoor"},{group:13,type:"minecraft:oxidized_copper_trapdoor",item:"minecraft:oxidized_copper_trapdoor"},{group:13,type:"minecraft:spruce_trapdoor",item:"minecraft:spruce_trapdoor"},{group:13,type:"minecraft:warped_trapdoor",item:"minecraft:warped_trapdoor"},{group:13,type:"minecraft:waxed_copper_trapdoor",item:"minecraft:waxed_copper_trapdoor"},{group:13,type:"minecraft:waxed_exposed_copper_trapdoor",item:"minecraft:waxed_exposed_copper_trapdoor"},{group:13,type:"minecraft:waxed_oxidized_copper_trapdoor",item:"minecraft:waxed_oxidized_copper_trapdoor"},{group:13,type:"minecraft:waxed_weathered_copper_trapdoor",item:"minecraft:waxed_weathered_copper_trapdoor"},{group:13,type:"minecraft:weathered_copper_trapdoor",item:"minecraft:weathered_copper_trapdoor"},{group:14,type:"minecraft:acacia_wall_hanging_sign",item:"minecraft:acacia_hanging_sign"},{group:14,type:"minecraft:acacia_wall_sign",item:"minecraft:acacia_sign"},{group:14,type:"minecraft:bamboo_wall_hanging_sign",item:"minecraft:bamboo_hanging_sign"},{group:14,type:"minecraft:bamboo_wall_sign",item:"minecraft:bamboo_sign"},{group:14,type:"minecraft:big_dripleaf_stem",item:"minecraft:big_dripleaf"},{group:14,type:"minecraft:birch_wall_hanging_sign",item:"minecraft:birch_hanging_sign"},{group:14,type:"minecraft:birch_wall_sign",item:"minecraft:birch_sign"},{group:14,type:"minecraft:cherry_wall_hanging_sign",item:"minecraft:cherry_hanging_sign"},{group:14,type:"minecraft:cherry_wall_sign",item:"minecraft:cherry_sign"},{group:14,type:"minecraft:crimson_wall_hanging_sign",item:"minecraft:crimson_hanging_sign"},{group:14,type:"minecraft:crimson_wall_sign",item:"minecraft:crimson_sign"},{group:14,type:"minecraft:dark_oak_wall_hanging_sign",item:"minecraft:dark_oak_hanging_sign"},{group:14,type:"minecraft:dark_oak_wall_sign",item:"minecraft:dark_oak_sign"},{group:14,type:"minecraft:ender_chest",item:"minecraft:ender_chest"},{group:14,type:"minecraft:jungle_wall_hanging_sign",item:"minecraft:jungle_hanging_sign"},{group:14,type:"minecraft:jungle_wall_sign",item:"minecraft:jungle_sign"},{group:14,type:"minecraft:ladder",item:"minecraft:ladder"},{group:14,type:"minecraft:mangrove_wall_hanging_sign",item:"minecraft:mangrove_hanging_sign"},{group:14,type:"minecraft:mangrove_wall_sign",item:"minecraft:mangrove_sign"},{group:14,type:"minecraft:oak_wall_hanging_sign",item:"minecraft:oak_hanging_sign"},{group:14,type:"minecraft:oak_wall_sign",item:"minecraft:oak_sign"},{group:14,type:"minecraft:spruce_wall_hanging_sign",item:"minecraft:spruce_hanging_sign"},{group:14,type:"minecraft:spruce_wall_sign",item:"minecraft:spruce_sign"},{group:14,type:"minecraft:warped_wall_hanging_sign",item:"minecraft:warped_hanging_sign"},{group:14,type:"minecraft:warped_wall_sign",item:"minecraft:warped_sign"},{group:15,type:"minecraft:activator_rail",item:"minecraft:activator_rail"},{group:15,type:"minecraft:detector_rail",item:"minecraft:detector_rail"},{group:15,type:"minecraft:powered_rail",item:"minecraft:powered_rail"},{group:16,type:"minecraft:amethyst_cluster",item:"minecraft:amethyst_cluster"},{group:16,type:"minecraft:large_amethyst_bud",item:"minecraft:large_amethyst_bud"},{group:16,type:"minecraft:medium_amethyst_bud",item:"minecraft:medium_amethyst_bud"},{group:16,type:"minecraft:small_amethyst_bud",item:"minecraft:small_amethyst_bud"},{group:17,type:"minecraft:andesite_wall",item:"minecraft:andesite_wall"},{group:17,type:"minecraft:blackstone_wall",item:"minecraft:blackstone_wall"},{group:17,type:"minecraft:brick_wall",item:"minecraft:brick_wall"},{group:17,type:"minecraft:cobbled_deepslate_wall",item:"minecraft:cobbled_deepslate_wall"},{group:17,type:"minecraft:cobblestone_wall",item:"minecraft:cobblestone_wall"},{group:17,type:"minecraft:deepslate_brick_wall",item:"minecraft:deepslate_brick_wall"},{group:17,type:"minecraft:deepslate_tile_wall",item:"minecraft:deepslate_tile_wall"},{group:17,type:"minecraft:diorite_wall",item:"minecraft:diorite_wall"},{group:17,type:"minecraft:end_stone_brick_wall",item:"minecraft:end_stone_brick_wall"},{group:17,type:"minecraft:granite_wall",item:"minecraft:granite_wall"},{group:17,type:"minecraft:mossy_cobblestone_wall",item:"minecraft:mossy_cobblestone_wall"},{group:17,type:"minecraft:mossy_stone_brick_wall",item:"minecraft:mossy_stone_brick_wall"},{group:17,type:"minecraft:mud_brick_wall",item:"minecraft:mud_brick_wall"},{group:17,type:"minecraft:nether_brick_wall",item:"minecraft:nether_brick_wall"},{group:17,type:"minecraft:polished_blackstone_brick_wall",item:"minecraft:polished_blackstone_brick_wall"},{group:17,type:"minecraft:polished_blackstone_wall",item:"minecraft:polished_blackstone_wall"},{group:17,type:"minecraft:polished_deepslate_wall",item:"minecraft:polished_deepslate_wall"},{group:17,type:"minecraft:polished_tuff_wall",item:"minecraft:polished_tuff_wall"},{group:17,type:"minecraft:prismarine_wall",item:"minecraft:prismarine_wall"},{group:17,type:"minecraft:red_nether_brick_wall",item:"minecraft:red_nether_brick_wall"},{group:17,type:"minecraft:red_sandstone_wall",item:"minecraft:red_sandstone_wall"},{group:17,type:"minecraft:sandstone_wall",item:"minecraft:sandstone_wall"},{group:17,type:"minecraft:stone_brick_wall",item:"minecraft:stone_brick_wall"},{group:17,type:"minecraft:tuff_brick_wall",item:"minecraft:tuff_brick_wall"},{group:17,type:"minecraft:tuff_wall",item:"minecraft:tuff_wall"},{group:18,type:"minecraft:anvil",item:"minecraft:anvil"},{group:18,type:"minecraft:attached_melon_stem",item:"minecraft:melon_seeds"},{group:18,type:"minecraft:attached_pumpkin_stem",item:"minecraft:melon_seeds"},{group:18,type:"minecraft:black_glazed_terracotta",item:"minecraft:black_glazed_terracotta"},{group:18,type:"minecraft:black_wall_banner",item:"minecraft:black_banner"},{group:18,type:"minecraft:blue_glazed_terracotta",item:"minecraft:blue_glazed_terracotta"},{group:18,type:"minecraft:blue_wall_banner",item:"minecraft:blue_banner"},{group:18,type:"minecraft:brown_glazed_terracotta",item:"minecraft:brown_glazed_terracotta"},{group:18,type:"minecraft:brown_wall_banner",item:"minecraft:brown_banner"},{group:18,type:"minecraft:carved_pumpkin",item:"minecraft:carved_pumpkin"},{group:18,type:"minecraft:chipped_anvil",item:"minecraft:chipped_anvil"},{group:18,type:"minecraft:cyan_glazed_terracotta",item:"minecraft:cyan_glazed_terracotta"},{group:18,type:"minecraft:cyan_wall_banner",item:"minecraft:cyan_banner"},{group:18,type:"minecraft:damaged_anvil",item:"minecraft:damaged_anvil"},{group:18,type:"minecraft:gray_glazed_terracotta",item:"minecraft:gray_glazed_terracotta"},{group:18,type:"minecraft:gray_wall_banner",item:"minecraft:gray_banner"},{group:18,type:"minecraft:green_glazed_terracotta",item:"minecraft:green_glazed_terracotta"},{group:18,type:"minecraft:green_wall_banner",item:"minecraft:green_banner"},{group:18,type:"minecraft:jack_o_lantern",item:"minecraft:jack_o_lantern"},{group:18,type:"minecraft:light_blue_glazed_terracotta",item:"minecraft:light_blue_glazed_terracotta"},{group:18,type:"minecraft:light_blue_wall_banner",item:"minecraft:light_blue_banner"},{group:18,type:"minecraft:light_gray_glazed_terracotta",item:"minecraft:light_gray_glazed_terracotta"},{group:18,type:"minecraft:light_gray_wall_banner",item:"minecraft:light_gray_banner"},{group:18,type:"minecraft:lime_glazed_terracotta",item:"minecraft:lime_glazed_terracotta"},{group:18,type:"minecraft:lime_wall_banner",item:"minecraft:lime_banner"},{group:18,type:"minecraft:loom",item:"minecraft:loom"},{group:18,type:"minecraft:magenta_glazed_terracotta",item:"minecraft:magenta_glazed_terracotta"},{group:18,type:"minecraft:magenta_wall_banner",item:"minecraft:magenta_banner"},{group:18,type:"minecraft:orange_glazed_terracotta",item:"minecraft:orange_glazed_terracotta"},{group:18,type:"minecraft:orange_wall_banner",item:"minecraft:orange_banner"},{group:18,type:"minecraft:pink_glazed_terracotta",item:"minecraft:pink_glazed_terracotta"},{group:18,type:"minecraft:pink_wall_banner",item:"minecraft:pink_banner"},{group:18,type:"minecraft:purple_glazed_terracotta",item:"minecraft:purple_glazed_terracotta"},{group:18,type:"minecraft:purple_wall_banner",item:"minecraft:purple_banner"},{group:18,type:"minecraft:red_glazed_terracotta",item:"minecraft:red_glazed_terracotta"},{group:18,type:"minecraft:red_wall_banner",item:"minecraft:red_banner"},{group:18,type:"minecraft:soul_wall_torch",item:"minecraft:soul_torch"},{group:18,type:"minecraft:stonecutter",item:"minecraft:stonecutter"},{group:18,type:"minecraft:wall_torch",item:"minecraft:torch"},{group:18,type:"minecraft:white_glazed_terracotta",item:"minecraft:white_glazed_terracotta"},{group:18,type:"minecraft:white_wall_banner",item:"minecraft:white_banner"},{group:18,type:"minecraft:yellow_glazed_terracotta",item:"minecraft:yellow_glazed_terracotta"},{group:18,type:"minecraft:yellow_wall_banner",item:"minecraft:yellow_banner"},{group:19,type:"minecraft:bamboo",item:"minecraft:bamboo"},{group:20,type:"minecraft:barrel",item:"minecraft:barrel"},{group:21,type:"minecraft:barrier",item:"minecraft:barrier"},{group:21,type:"minecraft:copper_grate",item:"minecraft:copper_grate"},{group:21,type:"minecraft:exposed_copper_grate",item:"minecraft:exposed_copper_grate"},{group:21,type:"minecraft:hanging_roots",item:"minecraft:hanging_roots"},{group:21,type:"minecraft:heavy_core",item:"minecraft:heavy_core"},{group:21,type:"minecraft:mangrove_roots",item:"minecraft:mangrove_roots"},{group:21,type:"minecraft:oxidized_copper_grate",item:"minecraft:oxidized_copper_grate"},{group:21,type:"minecraft:waxed_copper_grate",item:"minecraft:waxed_copper_grate"},{group:21,type:"minecraft:waxed_exposed_copper_grate",item:"minecraft:waxed_exposed_copper_grate"},{group:21,type:"minecraft:waxed_oxidized_copper_grate",item:"minecraft:waxed_oxidized_copper_grate"},{group:21,type:"minecraft:waxed_weathered_copper_grate",item:"minecraft:waxed_weathered_copper_grate"},{group:21,type:"minecraft:weathered_copper_grate",item:"minecraft:weathered_copper_grate"},{group:22,type:"minecraft:bee_nest",item:"minecraft:bee_nest"},{group:22,type:"minecraft:beehive",item:"minecraft:beehive"},{group:23,type:"minecraft:beetroots",item:"minecraft:beetroot_seeds"},{group:23,type:"minecraft:frosted_ice"},{group:23,type:"minecraft:nether_wart",item:"minecraft:nether_wart"},{group:23,type:"minecraft:sweet_berry_bush",item:"minecraft:sweet_berries"},{group:24,type:"minecraft:bell",item:"minecraft:bell"},{group:25,type:"minecraft:big_dripleaf",item:"minecraft:big_dripleaf"},{group:26,type:"minecraft:black_banner",item:"minecraft:black_banner"},{group:26,type:"minecraft:blue_banner",item:"minecraft:blue_banner"},{group:26,type:"minecraft:brown_banner",item:"minecraft:brown_banner"},{group:26,type:"minecraft:cyan_banner",item:"minecraft:cyan_banner"},{group:26,type:"minecraft:gray_banner",item:"minecraft:gray_banner"},{group:26,type:"minecraft:green_banner",item:"minecraft:green_banner"},{group:26,type:"minecraft:light_blue_banner",item:"minecraft:light_blue_banner"},{group:26,type:"minecraft:light_gray_banner",item:"minecraft:light_gray_banner"},{group:26,type:"minecraft:lime_banner",item:"minecraft:lime_banner"},{group:26,type:"minecraft:magenta_banner",item:"minecraft:magenta_banner"},{group:26,type:"minecraft:orange_banner",item:"minecraft:orange_banner"},{group:26,type:"minecraft:pink_banner",item:"minecraft:pink_banner"},{group:26,type:"minecraft:purple_banner",item:"minecraft:purple_banner"},{group:26,type:"minecraft:red_banner",item:"minecraft:red_banner"},{group:26,type:"minecraft:white_banner",item:"minecraft:white_banner"},{group:26,type:"minecraft:yellow_banner",item:"minecraft:yellow_banner"},{group:27,type:"minecraft:black_bed",item:"minecraft:black_bed"},{group:27,type:"minecraft:blue_bed",item:"minecraft:blue_bed"},{group:27,type:"minecraft:brown_bed",item:"minecraft:brown_bed"},{group:27,type:"minecraft:cyan_bed",item:"minecraft:cyan_bed"},{group:27,type:"minecraft:gray_bed",item:"minecraft:gray_bed"},{group:27,type:"minecraft:green_bed",item:"minecraft:green_bed"},{group:27,type:"minecraft:light_blue_bed",item:"minecraft:light_blue_bed"},{group:27,type:"minecraft:light_gray_bed",item:"minecraft:light_gray_bed"},{group:27,type:"minecraft:lime_bed",item:"minecraft:lime_bed"},{group:27,type:"minecraft:magenta_bed",item:"minecraft:magenta_bed"},{group:27,type:"minecraft:orange_bed",item:"minecraft:orange_bed"},{group:27,type:"minecraft:pink_bed",item:"minecraft:pink_bed"},{group:27,type:"minecraft:purple_bed",item:"minecraft:purple_bed"},{group:27,type:"minecraft:red_bed",item:"minecraft:red_bed"},{group:27,type:"minecraft:white_bed",item:"minecraft:white_bed"},{group:27,type:"minecraft:yellow_bed",item:"minecraft:yellow_bed"},{group:28,type:"minecraft:black_candle",item:"minecraft:black_candle"},{group:28,type:"minecraft:blue_candle",item:"minecraft:blue_candle"},{group:28,type:"minecraft:brown_candle",item:"minecraft:brown_candle"},{group:28,type:"minecraft:candle",item:"minecraft:candle"},{group:28,type:"minecraft:cyan_candle",item:"minecraft:cyan_candle"},{group:28,type:"minecraft:gray_candle",item:"minecraft:gray_candle"},{group:28,type:"minecraft:green_candle",item:"minecraft:green_candle"},{group:28,type:"minecraft:light_blue_candle",item:"minecraft:light_blue_candle"},{group:28,type:"minecraft:light_gray_candle",item:"minecraft:light_gray_candle"},{group:28,type:"minecraft:lime_candle",item:"minecraft:lime_candle"},{group:28,type:"minecraft:magenta_candle",item:"minecraft:magenta_candle"},{group:28,type:"minecraft:orange_candle",item:"minecraft:orange_candle"},{group:28,type:"minecraft:pink_candle",item:"minecraft:pink_candle"},{group:28,type:"minecraft:purple_candle",item:"minecraft:purple_candle"},{group:28,type:"minecraft:red_candle",item:"minecraft:red_candle"},{group:28,type:"minecraft:white_candle",item:"minecraft:white_candle"},{group:28,type:"minecraft:yellow_candle",item:"minecraft:yellow_candle"},{group:29,type:"minecraft:black_candle_cake"},{group:29,type:"minecraft:blue_candle_cake"},{group:29,type:"minecraft:brown_candle_cake"},{group:29,type:"minecraft:candle_cake"},{group:29,type:"minecraft:cyan_candle_cake"},{group:29,type:"minecraft:deepslate_redstone_ore",item:"minecraft:deepslate_redstone_ore"},{group:29,type:"minecraft:gray_candle_cake"},{group:29,type:"minecraft:green_candle_cake"},{group:29,type:"minecraft:light_blue_candle_cake"},{group:29,type:"minecraft:light_gray_candle_cake"},{group:29,type:"minecraft:lime_candle_cake"},{group:29,type:"minecraft:magenta_candle_cake"},{group:29,type:"minecraft:orange_candle_cake"},{group:29,type:"minecraft:pink_candle_cake"},{group:29,type:"minecraft:purple_candle_cake"},{group:29,type:"minecraft:red_candle_cake"},{group:29,type:"minecraft:redstone_lamp",item:"minecraft:redstone_lamp"},{group:29,type:"minecraft:redstone_ore",item:"minecraft:redstone_ore"},{group:29,type:"minecraft:white_candle_cake"},{group:29,type:"minecraft:yellow_candle_cake"},{group:30,type:"minecraft:black_shulker_box",item:"minecraft:black_shulker_box"},{group:30,type:"minecraft:blue_shulker_box",item:"minecraft:blue_shulker_box"},{group:30,type:"minecraft:brown_shulker_box",item:"minecraft:brown_shulker_box"},{group:30,type:"minecraft:cyan_shulker_box",item:"minecraft:cyan_shulker_box"},{group:30,type:"minecraft:end_rod",item:"minecraft:end_rod"},{group:30,type:"minecraft:gray_shulker_box",item:"minecraft:gray_shulker_box"},{group:30,type:"minecraft:green_shulker_box",item:"minecraft:green_shulker_box"},{group:30,type:"minecraft:light_blue_shulker_box",item:"minecraft:light_blue_shulker_box"},{group:30,type:"minecraft:light_gray_shulker_box",item:"minecraft:light_gray_shulker_box"},{group:30,type:"minecraft:lime_shulker_box",item:"minecraft:lime_shulker_box"},{group:30,type:"minecraft:magenta_shulker_box",item:"minecraft:magenta_shulker_box"},{group:30,type:"minecraft:orange_shulker_box",item:"minecraft:orange_shulker_box"},{group:30,type:"minecraft:pink_shulker_box",item:"minecraft:pink_shulker_box"},{group:30,type:"minecraft:purple_shulker_box",item:"minecraft:purple_shulker_box"},{group:30,type:"minecraft:red_shulker_box",item:"minecraft:red_shulker_box"},{group:30,type:"minecraft:shulker_box",item:"minecraft:shulker_box"},{group:30,type:"minecraft:white_shulker_box",item:"minecraft:white_shulker_box"},{group:30,type:"minecraft:yellow_shulker_box",item:"minecraft:yellow_shulker_box"},{group:31,type:"minecraft:blast_furnace",item:"minecraft:blast_furnace"},{group:31,type:"minecraft:furnace",item:"minecraft:furnace"},{group:31,type:"minecraft:smoker",item:"minecraft:smoker"},{group:32,type:"minecraft:brain_coral",item:"minecraft:brain_coral"},{group:32,type:"minecraft:brain_coral_fan",item:"minecraft:brain_coral_fan"},{group:32,type:"minecraft:bubble_coral",item:"minecraft:bubble_coral"},{group:32,type:"minecraft:bubble_coral_fan",item:"minecraft:bubble_coral_fan"},{group:32,type:"minecraft:conduit",item:"minecraft:conduit"},{group:32,type:"minecraft:dead_brain_coral",item:"minecraft:dead_brain_coral"},{group:32,type:"minecraft:dead_brain_coral_fan",item:"minecraft:dead_brain_coral_fan"},{group:32,type:"minecraft:dead_bubble_coral",item:"minecraft:dead_bubble_coral"},{group:32,type:"minecraft:dead_bubble_coral_fan",item:"minecraft:dead_bubble_coral_fan"},{group:32,type:"minecraft:dead_fire_coral",item:"minecraft:dead_fire_coral"},{group:32,type:"minecraft:dead_fire_coral_fan",item:"minecraft:dead_fire_coral_fan"},{group:32,type:"minecraft:dead_horn_coral",item:"minecraft:dead_horn_coral"},{group:32,type:"minecraft:dead_horn_coral_fan",item:"minecraft:dead_horn_coral_fan"},{group:32,type:"minecraft:dead_tube_coral",item:"minecraft:dead_tube_coral"},{group:32,type:"minecraft:dead_tube_coral_fan",item:"minecraft:dead_tube_coral_fan"},{group:32,type:"minecraft:fire_coral",item:"minecraft:fire_coral"},{group:32,type:"minecraft:fire_coral_fan",item:"minecraft:fire_coral_fan"},{group:32,type:"minecraft:horn_coral",item:"minecraft:horn_coral"},{group:32,type:"minecraft:horn_coral_fan",item:"minecraft:horn_coral_fan"},{group:32,type:"minecraft:tube_coral",item:"minecraft:tube_coral"},{group:32,type:"minecraft:tube_coral_fan",item:"minecraft:tube_coral_fan"},{group:33,type:"minecraft:brain_coral_wall_fan",item:"minecraft:brain_coral_fan"},{group:33,type:"minecraft:bubble_coral_wall_fan",item:"minecraft:bubble_coral_fan"},{group:33,type:"minecraft:dead_brain_coral_wall_fan",item:"minecraft:dead_brain_coral_fan"},{group:33,type:"minecraft:dead_bubble_coral_wall_fan",item:"minecraft:dead_bubble_coral_fan"},{group:33,type:"minecraft:dead_fire_coral_wall_fan",item:"minecraft:dead_fire_coral_fan"},{group:33,type:"minecraft:dead_horn_coral_wall_fan",item:"minecraft:dead_horn_coral_fan"},{group:33,type:"minecraft:dead_tube_coral_wall_fan",item:"minecraft:dead_tube_coral_fan"},{group:33,type:"minecraft:fire_coral_wall_fan",item:"minecraft:fire_coral_fan"},{group:33,type:"minecraft:horn_coral_wall_fan",item:"minecraft:horn_coral_fan"},{group:33,type:"minecraft:tube_coral_wall_fan",item:"minecraft:tube_coral_fan"},{group:34,type:"minecraft:brewing_stand",item:"minecraft:brewing_stand"},{group:35,type:"minecraft:brown_mushroom_block",item:"minecraft:brown_mushroom_block"},{group:35,type:"minecraft:mushroom_stem",item:"minecraft:mushroom_stem"},{group:35,type:"minecraft:red_mushroom_block",item:"minecraft:red_mushroom_block"},{group:36,type:"minecraft:bubble_column"},{group:37,type:"minecraft:cactus",item:"minecraft:cactus"},{group:37,type:"minecraft:sugar_cane",item:"minecraft:sugar_cane"},{group:38,type:"minecraft:cake",item:"minecraft:cake"},{group:39,type:"minecraft:calibrated_sculk_sensor",item:"minecraft:calibrated_sculk_sensor"},{group:40,type:"minecraft:campfire",item:"minecraft:campfire"},{group:40,type:"minecraft:soul_campfire",item:"minecraft:soul_campfire"},{group:41,type:"minecraft:carrots",item:"minecraft:carrot"},{group:41,type:"minecraft:melon_stem",item:"minecraft:pumpkin_seeds"},{group:41,type:"minecraft:potatoes",item:"minecraft:potato"},{group:41,type:"minecraft:pumpkin_stem",item:"minecraft:pumpkin_seeds"},{group:41,type:"minecraft:wheat",item:"minecraft:wheat_seeds"},{group:42,type:"minecraft:cave_vines",item:"minecraft:glow_berries"},{group:43,type:"minecraft:cave_vines_plant",item:"minecraft:glow_berries"},{group:44,type:"minecraft:chain",item:"minecraft:chain"},{group:45,type:"minecraft:chain_command_block",item:"minecraft:chain_command_block"},{group:45,type:"minecraft:command_block",item:"minecraft:command_block"},{group:45,type:"minecraft:repeating_command_block",item:"minecraft:repeating_command_block"},{group:46,type:"minecraft:chest",item:"minecraft:chest"},{group:46,type:"minecraft:trapped_chest",item:"minecraft:trapped_chest"},{group:47,type:"minecraft:chiseled_bookshelf",item:"minecraft:chiseled_bookshelf"},{group:48,type:"minecraft:chorus_flower",item:"minecraft:chorus_flower"},{group:49,type:"minecraft:chorus_plant",item:"minecraft:chorus_plant"},{group:50,type:"minecraft:cocoa",item:"minecraft:cocoa_beans"},{group:51,type:"minecraft:comparator",item:"minecraft:comparator"},{group:52,type:"minecraft:composter",item:"minecraft:composter"},{group:53,type:"minecraft:copper_bulb",item:"minecraft:copper_bulb"},{group:53,type:"minecraft:exposed_copper_bulb",item:"minecraft:exposed_copper_bulb"},{group:53,type:"minecraft:oxidized_copper_bulb",item:"minecraft:oxidized_copper_bulb"},{group:53,type:"minecraft:waxed_copper_bulb",item:"minecraft:waxed_copper_bulb"},{group:53,type:"minecraft:waxed_exposed_copper_bulb",item:"minecraft:waxed_exposed_copper_bulb"},{group:53,type:"minecraft:waxed_oxidized_copper_bulb",item:"minecraft:waxed_oxidized_copper_bulb"},{group:53,type:"minecraft:waxed_weathered_copper_bulb",item:"minecraft:waxed_weathered_copper_bulb"},{group:53,type:"minecraft:weathered_copper_bulb",item:"minecraft:weathered_copper_bulb"},{group:54,type:"minecraft:crafter",item:"minecraft:crafter"},{group:55,type:"minecraft:creeper_head",item:"minecraft:creeper_head"},{group:55,type:"minecraft:dragon_head",item:"minecraft:dragon_head"},{group:55,type:"minecraft:piglin_head",item:"minecraft:piglin_head"},{group:55,type:"minecraft:player_head",item:"minecraft:player_head"},{group:55,type:"minecraft:skeleton_skull",item:"minecraft:skeleton_skull"},{group:55,type:"minecraft:wither_skeleton_skull",item:"minecraft:wither_skeleton_skull"},{group:55,type:"minecraft:zombie_head",item:"minecraft:zombie_head"},{group:56,type:"minecraft:creeper_wall_head",item:"minecraft:creeper_head"},{group:56,type:"minecraft:dragon_wall_head",item:"minecraft:dragon_head"},{group:56,type:"minecraft:piglin_wall_head",item:"minecraft:piglin_head"},{group:56,type:"minecraft:player_wall_head",item:"minecraft:player_head"},{group:56,type:"minecraft:skeleton_wall_skull",item:"minecraft:skeleton_skull"},{group:56,type:"minecraft:wither_skeleton_wall_skull",item:"minecraft:wither_skeleton_skull"},{group:56,type:"minecraft:zombie_wall_head",item:"minecraft:zombie_head"},{group:57,type:"minecraft:daylight_detector",item:"minecraft:daylight_detector"},{group:58,type:"minecraft:decorated_pot",item:"minecraft:decorated_pot"},{group:59,type:"minecraft:dispenser",item:"minecraft:dispenser"},{group:59,type:"minecraft:dropper",item:"minecraft:dropper"},{group:60,type:"minecraft:end_portal_frame",item:"minecraft:end_portal_frame"},{group:61,type:"minecraft:farmland",item:"minecraft:farmland"},{group:62,type:"minecraft:fire"},{group:63,type:"minecraft:glow_lichen",item:"minecraft:glow_lichen"},{group:63,type:"minecraft:sculk_vein",item:"minecraft:sculk_vein"},{group:64,type:"minecraft:grass_block",item:"minecraft:grass_block"},{group:64,type:"minecraft:mycelium",item:"minecraft:mycelium"},{group:64,type:"minecraft:podzol",item:"minecraft:podzol"},{group:65,type:"minecraft:grindstone",item:"minecraft:grindstone"},{group:66,type:"minecraft:heavy_weighted_pressure_plate",item:"minecraft:heavy_weighted_pressure_plate"},{group:66,type:"minecraft:light_weighted_pressure_plate",item:"minecraft:light_weighted_pressure_plate"},{group:66,type:"minecraft:target",item:"minecraft:target"},{group:67,type:"minecraft:hopper",item:"minecraft:hopper"},{group:68,type:"minecraft:jigsaw",item:"minecraft:jigsaw"},{group:69,type:"minecraft:jukebox",item:"minecraft:jukebox"},{group:70,type:"minecraft:kelp",item:"minecraft:kelp"},{group:70,type:"minecraft:twisting_vines",item:"minecraft:twisting_vines"},{group:70,type:"minecraft:weeping_vines",item:"minecraft:weeping_vines"},{group:71,type:"minecraft:lantern",item:"minecraft:lantern"},{group:71,type:"minecraft:soul_lantern",item:"minecraft:soul_lantern"},{group:72,type:"minecraft:large_fern",item:"minecraft:large_fern"},{group:72,type:"minecraft:lilac",item:"minecraft:lilac"},{group:72,type:"minecraft:peony",item:"minecraft:peony"},{group:72,type:"minecraft:pitcher_plant",item:"minecraft:pitcher_plant"},{group:72,type:"minecraft:rose_bush",item:"minecraft:rose_bush"},{group:72,type:"minecraft:sunflower",item:"minecraft:sunflower"},{group:72,type:"minecraft:tall_grass",item:"minecraft:tall_grass"},{group:72,type:"minecraft:tall_seagrass"},{group:73,type:"minecraft:lava",item:"minecraft:lava_bucket"},{group:73,type:"minecraft:water",item:"minecraft:water_bucket"},{group:74,type:"minecraft:lectern",item:"minecraft:lectern"},{group:75,type:"minecraft:light",item:"minecraft:light"},{group:76,type:"minecraft:lightning_rod",item:"minecraft:lightning_rod"},{group:77,type:"minecraft:mangrove_propagule",item:"minecraft:mangrove_propagule"},{group:78,type:"minecraft:moving_piston"},{group:79,type:"minecraft:nether_portal"},{group:80,type:"minecraft:note_block",item:"minecraft:note_block"},{group:81,type:"minecraft:observer",item:"minecraft:observer"},{group:82,type:"minecraft:pink_petals",item:"minecraft:pink_petals"},{group:83,type:"minecraft:piston",item:"minecraft:piston"},{group:83,type:"minecraft:sticky_piston",item:"minecraft:sticky_piston"},{group:84,type:"minecraft:piston_head"},{group:85,type:"minecraft:pitcher_crop",item:"minecraft:pitcher_pod"},{group:86,type:"minecraft:pointed_dripstone",item:"minecraft:pointed_dripstone"},{group:87,type:"minecraft:powder_snow_cauldron",item:"minecraft:cauldron"},{group:87,type:"minecraft:water_cauldron",item:"minecraft:cauldron"},{group:88,type:"minecraft:rail",item:"minecraft:rail"},{group:89,type:"minecraft:redstone_torch",item:"minecraft:redstone_torch"},{group:90,type:"minecraft:redstone_wall_torch",item:"minecraft:redstone_torch"},{group:91,type:"minecraft:redstone_wire",item:"minecraft:redstone"},{group:92,type:"minecraft:repeater",item:"minecraft:repeater"},{group:93,type:"minecraft:respawn_anchor",item:"minecraft:respawn_anchor"},{group:94,type:"minecraft:scaffolding",item:"minecraft:scaffolding"},{group:95,type:"minecraft:sculk_catalyst",item:"minecraft:sculk_catalyst"},{group:96,type:"minecraft:sculk_sensor",item:"minecraft:sculk_sensor"},{group:97,type:"minecraft:sculk_shrieker",item:"minecraft:sculk_shrieker"},{group:98,type:"minecraft:sea_pickle",item:"minecraft:sea_pickle"},{group:99,type:"minecraft:small_dripleaf",item:"minecraft:small_dripleaf"},{group:100,type:"minecraft:sniffer_egg",item:"minecraft:sniffer_egg"},{group:101,type:"minecraft:snow",item:"minecraft:snow"},{group:102,type:"minecraft:structure_block",item:"minecraft:structure_block"},{group:103,type:"minecraft:suspicious_gravel",item:"minecraft:suspicious_gravel"},{group:103,type:"minecraft:suspicious_sand",item:"minecraft:suspicious_sand"},{group:104,type:"minecraft:tnt",item:"minecraft:tnt"},{group:105,type:"minecraft:torchflower_crop",item:"minecraft:torchflower_seeds"},{group:106,type:"minecraft:trial_spawner",item:"minecraft:trial_spawner"},{group:107,type:"minecraft:tripwire",item:"minecraft:string"},{group:108,type:"minecraft:tripwire_hook",item:"minecraft:tripwire_hook"},{group:109,type:"minecraft:turtle_egg",item:"minecraft:turtle_egg"},{group:110,type:"minecraft:vault",item:"minecraft:vault"},{group:111,type:"minecraft:vine",item:"minecraft:vine"}]
diff --git a/datapacks/Bookshelf/data/bs.block/function/load/items_table.mcfunction b/datapacks/Bookshelf/data/bs.block/function/load/items_table.mcfunction
index 9e75fe8807..813c4327e5 100644
--- a/datapacks/Bookshelf/data/bs.block/function/load/items_table.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/load/items_table.mcfunction
@@ -1,2 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
# This file was automatically generated, do not edit it
data modify storage bs:const block.items set value {"minecraft:acacia_planks":0,"acacia_planks":0,"minecraft:air":1,"air":1,"minecraft:allium":2,"allium":2,"minecraft:amethyst_block":3,"amethyst_block":3,"minecraft:ancient_debris":4,"ancient_debris":4,"minecraft:andesite":5,"andesite":5,"minecraft:azalea":6,"azalea":6,"minecraft:azure_bluet":7,"azure_bluet":7,"minecraft:bamboo_mosaic":8,"bamboo_mosaic":8,"minecraft:bamboo_planks":9,"bamboo_planks":9,"minecraft:beacon":11,"beacon":11,"minecraft:bedrock":12,"bedrock":12,"minecraft:birch_planks":13,"birch_planks":13,"minecraft:black_carpet":14,"black_carpet":14,"minecraft:black_concrete":15,"black_concrete":15,"minecraft:black_concrete_powder":16,"black_concrete_powder":16,"minecraft:black_stained_glass":17,"black_stained_glass":17,"minecraft:black_terracotta":18,"black_terracotta":18,"minecraft:black_wool":19,"black_wool":19,"minecraft:blackstone":20,"blackstone":20,"minecraft:blue_carpet":21,"blue_carpet":21,"minecraft:blue_concrete":22,"blue_concrete":22,"minecraft:blue_concrete_powder":23,"blue_concrete_powder":23,"minecraft:blue_ice":24,"blue_ice":24,"minecraft:blue_orchid":25,"blue_orchid":25,"minecraft:blue_stained_glass":26,"blue_stained_glass":26,"minecraft:blue_terracotta":27,"blue_terracotta":27,"minecraft:blue_wool":28,"blue_wool":28,"minecraft:bookshelf":29,"bookshelf":29,"minecraft:brain_coral_block":30,"brain_coral_block":30,"minecraft:bricks":31,"bricks":31,"minecraft:brown_carpet":32,"brown_carpet":32,"minecraft:brown_concrete":33,"brown_concrete":33,"minecraft:brown_concrete_powder":34,"brown_concrete_powder":34,"minecraft:brown_mushroom":35,"brown_mushroom":35,"minecraft:brown_stained_glass":36,"brown_stained_glass":36,"minecraft:brown_terracotta":37,"brown_terracotta":37,"minecraft:brown_wool":38,"brown_wool":38,"minecraft:bubble_coral_block":39,"bubble_coral_block":39,"minecraft:budding_amethyst":40,"budding_amethyst":40,"minecraft:calcite":41,"calcite":41,"minecraft:cartography_table":42,"cartography_table":42,"minecraft:cauldron":43,"cauldron":43,"minecraft:cherry_planks":45,"cherry_planks":45,"minecraft:chiseled_copper":46,"chiseled_copper":46,"minecraft:chiseled_deepslate":47,"chiseled_deepslate":47,"minecraft:chiseled_nether_bricks":48,"chiseled_nether_bricks":48,"minecraft:chiseled_polished_blackstone":49,"chiseled_polished_blackstone":49,"minecraft:chiseled_quartz_block":50,"chiseled_quartz_block":50,"minecraft:chiseled_red_sandstone":51,"chiseled_red_sandstone":51,"minecraft:chiseled_sandstone":52,"chiseled_sandstone":52,"minecraft:chiseled_stone_bricks":53,"chiseled_stone_bricks":53,"minecraft:chiseled_tuff":54,"chiseled_tuff":54,"minecraft:chiseled_tuff_bricks":55,"chiseled_tuff_bricks":55,"minecraft:clay":56,"clay":56,"minecraft:coal_block":57,"coal_block":57,"minecraft:coal_ore":58,"coal_ore":58,"minecraft:coarse_dirt":59,"coarse_dirt":59,"minecraft:cobbled_deepslate":60,"cobbled_deepslate":60,"minecraft:cobblestone":61,"cobblestone":61,"minecraft:cobweb":62,"cobweb":62,"minecraft:copper_block":63,"copper_block":63,"minecraft:copper_ore":64,"copper_ore":64,"minecraft:cornflower":65,"cornflower":65,"minecraft:cracked_deepslate_bricks":66,"cracked_deepslate_bricks":66,"minecraft:cracked_deepslate_tiles":67,"cracked_deepslate_tiles":67,"minecraft:cracked_nether_bricks":68,"cracked_nether_bricks":68,"minecraft:cracked_polished_blackstone_bricks":69,"cracked_polished_blackstone_bricks":69,"minecraft:cracked_stone_bricks":70,"cracked_stone_bricks":70,"minecraft:crafting_table":71,"crafting_table":71,"minecraft:crimson_fungus":72,"crimson_fungus":72,"minecraft:crimson_nylium":73,"crimson_nylium":73,"minecraft:crimson_planks":74,"crimson_planks":74,"minecraft:crimson_roots":75,"crimson_roots":75,"minecraft:crying_obsidian":76,"crying_obsidian":76,"minecraft:cut_copper":77,"cut_copper":77,"minecraft:cut_red_sandstone":78,"cut_red_sandstone":78,"minecraft:cut_sandstone":79,"cut_sandstone":79,"minecraft:cyan_carpet":80,"cyan_carpet":80,"minecraft:cyan_concrete":81,"cyan_concrete":81,"minecraft:cyan_concrete_powder":82,"cyan_concrete_powder":82,"minecraft:cyan_stained_glass":83,"cyan_stained_glass":83,"minecraft:cyan_terracotta":84,"cyan_terracotta":84,"minecraft:cyan_wool":85,"cyan_wool":85,"minecraft:dandelion":86,"dandelion":86,"minecraft:dark_oak_planks":87,"dark_oak_planks":87,"minecraft:dark_prismarine":88,"dark_prismarine":88,"minecraft:dead_brain_coral_block":89,"dead_brain_coral_block":89,"minecraft:dead_bubble_coral_block":90,"dead_bubble_coral_block":90,"minecraft:dead_bush":91,"dead_bush":91,"minecraft:dead_fire_coral_block":92,"dead_fire_coral_block":92,"minecraft:dead_horn_coral_block":93,"dead_horn_coral_block":93,"minecraft:dead_tube_coral_block":94,"dead_tube_coral_block":94,"minecraft:deepslate_bricks":95,"deepslate_bricks":95,"minecraft:deepslate_coal_ore":96,"deepslate_coal_ore":96,"minecraft:deepslate_copper_ore":97,"deepslate_copper_ore":97,"minecraft:deepslate_diamond_ore":98,"deepslate_diamond_ore":98,"minecraft:deepslate_emerald_ore":99,"deepslate_emerald_ore":99,"minecraft:deepslate_gold_ore":100,"deepslate_gold_ore":100,"minecraft:deepslate_iron_ore":101,"deepslate_iron_ore":101,"minecraft:deepslate_lapis_ore":102,"deepslate_lapis_ore":102,"minecraft:deepslate_tiles":103,"deepslate_tiles":103,"minecraft:diamond_block":104,"diamond_block":104,"minecraft:diamond_ore":105,"diamond_ore":105,"minecraft:diorite":106,"diorite":106,"minecraft:dirt":107,"dirt":107,"minecraft:dirt_path":108,"dirt_path":108,"minecraft:dragon_egg":109,"dragon_egg":109,"minecraft:dried_kelp_block":110,"dried_kelp_block":110,"minecraft:dripstone_block":111,"dripstone_block":111,"minecraft:emerald_block":112,"emerald_block":112,"minecraft:emerald_ore":113,"emerald_ore":113,"minecraft:enchanting_table":114,"enchanting_table":114,"minecraft:end_stone":117,"end_stone":117,"minecraft:end_stone_bricks":118,"end_stone_bricks":118,"minecraft:exposed_chiseled_copper":119,"exposed_chiseled_copper":119,"minecraft:exposed_copper":120,"exposed_copper":120,"minecraft:exposed_cut_copper":121,"exposed_cut_copper":121,"minecraft:fern":122,"fern":122,"minecraft:fire_coral_block":123,"fire_coral_block":123,"minecraft:fletching_table":124,"fletching_table":124,"minecraft:flower_pot":125,"flower_pot":125,"minecraft:flowering_azalea":126,"flowering_azalea":126,"minecraft:frogspawn":127,"frogspawn":127,"minecraft:gilded_blackstone":128,"gilded_blackstone":128,"minecraft:glass":129,"glass":129,"minecraft:glowstone":130,"glowstone":130,"minecraft:gold_block":131,"gold_block":131,"minecraft:gold_ore":132,"gold_ore":132,"minecraft:granite":133,"granite":133,"minecraft:gravel":134,"gravel":134,"minecraft:gray_carpet":135,"gray_carpet":135,"minecraft:gray_concrete":136,"gray_concrete":136,"minecraft:gray_concrete_powder":137,"gray_concrete_powder":137,"minecraft:gray_stained_glass":138,"gray_stained_glass":138,"minecraft:gray_terracotta":139,"gray_terracotta":139,"minecraft:gray_wool":140,"gray_wool":140,"minecraft:green_carpet":141,"green_carpet":141,"minecraft:green_concrete":142,"green_concrete":142,"minecraft:green_concrete_powder":143,"green_concrete_powder":143,"minecraft:green_stained_glass":144,"green_stained_glass":144,"minecraft:green_terracotta":145,"green_terracotta":145,"minecraft:green_wool":146,"green_wool":146,"minecraft:honey_block":147,"honey_block":147,"minecraft:honeycomb_block":148,"honeycomb_block":148,"minecraft:horn_coral_block":149,"horn_coral_block":149,"minecraft:ice":150,"ice":150,"minecraft:infested_chiseled_stone_bricks":151,"infested_chiseled_stone_bricks":151,"minecraft:infested_cobblestone":152,"infested_cobblestone":152,"minecraft:infested_cracked_stone_bricks":153,"infested_cracked_stone_bricks":153,"minecraft:infested_mossy_stone_bricks":154,"infested_mossy_stone_bricks":154,"minecraft:infested_stone":155,"infested_stone":155,"minecraft:infested_stone_bricks":156,"infested_stone_bricks":156,"minecraft:iron_block":157,"iron_block":157,"minecraft:iron_ore":158,"iron_ore":158,"minecraft:jungle_planks":159,"jungle_planks":159,"minecraft:lapis_block":161,"lapis_block":161,"minecraft:lapis_ore":162,"lapis_ore":162,"minecraft:light_blue_carpet":164,"light_blue_carpet":164,"minecraft:light_blue_concrete":165,"light_blue_concrete":165,"minecraft:light_blue_concrete_powder":166,"light_blue_concrete_powder":166,"minecraft:light_blue_stained_glass":167,"light_blue_stained_glass":167,"minecraft:light_blue_terracotta":168,"light_blue_terracotta":168,"minecraft:light_blue_wool":169,"light_blue_wool":169,"minecraft:light_gray_carpet":170,"light_gray_carpet":170,"minecraft:light_gray_concrete":171,"light_gray_concrete":171,"minecraft:light_gray_concrete_powder":172,"light_gray_concrete_powder":172,"minecraft:light_gray_stained_glass":173,"light_gray_stained_glass":173,"minecraft:light_gray_terracotta":174,"light_gray_terracotta":174,"minecraft:light_gray_wool":175,"light_gray_wool":175,"minecraft:lily_of_the_valley":176,"lily_of_the_valley":176,"minecraft:lily_pad":177,"lily_pad":177,"minecraft:lime_carpet":178,"lime_carpet":178,"minecraft:lime_concrete":179,"lime_concrete":179,"minecraft:lime_concrete_powder":180,"lime_concrete_powder":180,"minecraft:lime_stained_glass":181,"lime_stained_glass":181,"minecraft:lime_terracotta":182,"lime_terracotta":182,"minecraft:lime_wool":183,"lime_wool":183,"minecraft:lodestone":184,"lodestone":184,"minecraft:magenta_carpet":185,"magenta_carpet":185,"minecraft:magenta_concrete":186,"magenta_concrete":186,"minecraft:magenta_concrete_powder":187,"magenta_concrete_powder":187,"minecraft:magenta_stained_glass":188,"magenta_stained_glass":188,"minecraft:magenta_terracotta":189,"magenta_terracotta":189,"minecraft:magenta_wool":190,"magenta_wool":190,"minecraft:magma_block":191,"magma_block":191,"minecraft:mangrove_planks":192,"mangrove_planks":192,"minecraft:melon":193,"melon":193,"minecraft:moss_block":194,"moss_block":194,"minecraft:moss_carpet":195,"moss_carpet":195,"minecraft:mossy_cobblestone":196,"mossy_cobblestone":196,"minecraft:mossy_stone_bricks":197,"mossy_stone_bricks":197,"minecraft:mud":198,"mud":198,"minecraft:mud_bricks":199,"mud_bricks":199,"minecraft:nether_bricks":200,"nether_bricks":200,"minecraft:nether_gold_ore":201,"nether_gold_ore":201,"minecraft:nether_quartz_ore":202,"nether_quartz_ore":202,"minecraft:nether_sprouts":203,"nether_sprouts":203,"minecraft:nether_wart_block":204,"nether_wart_block":204,"minecraft:netherite_block":205,"netherite_block":205,"minecraft:netherrack":206,"netherrack":206,"minecraft:oak_planks":207,"oak_planks":207,"minecraft:obsidian":208,"obsidian":208,"minecraft:orange_carpet":209,"orange_carpet":209,"minecraft:orange_concrete":210,"orange_concrete":210,"minecraft:orange_concrete_powder":211,"orange_concrete_powder":211,"minecraft:orange_stained_glass":212,"orange_stained_glass":212,"minecraft:orange_terracotta":213,"orange_terracotta":213,"minecraft:orange_tulip":214,"orange_tulip":214,"minecraft:orange_wool":215,"orange_wool":215,"minecraft:oxeye_daisy":216,"oxeye_daisy":216,"minecraft:oxidized_chiseled_copper":217,"oxidized_chiseled_copper":217,"minecraft:oxidized_copper":218,"oxidized_copper":218,"minecraft:oxidized_cut_copper":219,"oxidized_cut_copper":219,"minecraft:packed_ice":220,"packed_ice":220,"minecraft:packed_mud":221,"packed_mud":221,"minecraft:pink_carpet":222,"pink_carpet":222,"minecraft:pink_concrete":223,"pink_concrete":223,"minecraft:pink_concrete_powder":224,"pink_concrete_powder":224,"minecraft:pink_stained_glass":225,"pink_stained_glass":225,"minecraft:pink_terracotta":226,"pink_terracotta":226,"minecraft:pink_tulip":227,"pink_tulip":227,"minecraft:pink_wool":228,"pink_wool":228,"minecraft:polished_andesite":229,"polished_andesite":229,"minecraft:polished_blackstone":230,"polished_blackstone":230,"minecraft:polished_blackstone_bricks":231,"polished_blackstone_bricks":231,"minecraft:polished_deepslate":232,"polished_deepslate":232,"minecraft:polished_diorite":233,"polished_diorite":233,"minecraft:polished_granite":234,"polished_granite":234,"minecraft:polished_tuff":235,"polished_tuff":235,"minecraft:poppy":236,"poppy":236,"minecraft:powder_snow_bucket":271,"powder_snow_bucket":271,"minecraft:prismarine":272,"prismarine":272,"minecraft:prismarine_bricks":273,"prismarine_bricks":273,"minecraft:pumpkin":274,"pumpkin":274,"minecraft:purple_carpet":275,"purple_carpet":275,"minecraft:purple_concrete":276,"purple_concrete":276,"minecraft:purple_concrete_powder":277,"purple_concrete_powder":277,"minecraft:purple_stained_glass":278,"purple_stained_glass":278,"minecraft:purple_terracotta":279,"purple_terracotta":279,"minecraft:purple_wool":280,"purple_wool":280,"minecraft:purpur_block":281,"purpur_block":281,"minecraft:quartz_block":282,"quartz_block":282,"minecraft:quartz_bricks":283,"quartz_bricks":283,"minecraft:raw_copper_block":284,"raw_copper_block":284,"minecraft:raw_gold_block":285,"raw_gold_block":285,"minecraft:raw_iron_block":286,"raw_iron_block":286,"minecraft:red_carpet":287,"red_carpet":287,"minecraft:red_concrete":288,"red_concrete":288,"minecraft:red_concrete_powder":289,"red_concrete_powder":289,"minecraft:red_mushroom":290,"red_mushroom":290,"minecraft:red_nether_bricks":291,"red_nether_bricks":291,"minecraft:red_sand":292,"red_sand":292,"minecraft:red_sandstone":293,"red_sandstone":293,"minecraft:red_stained_glass":294,"red_stained_glass":294,"minecraft:red_terracotta":295,"red_terracotta":295,"minecraft:red_tulip":296,"red_tulip":296,"minecraft:red_wool":297,"red_wool":297,"minecraft:redstone_block":298,"redstone_block":298,"minecraft:reinforced_deepslate":299,"reinforced_deepslate":299,"minecraft:rooted_dirt":300,"rooted_dirt":300,"minecraft:sand":301,"sand":301,"minecraft:sandstone":302,"sandstone":302,"minecraft:sculk":303,"sculk":303,"minecraft:sea_lantern":304,"sea_lantern":304,"minecraft:seagrass":305,"seagrass":305,"minecraft:short_grass":306,"short_grass":306,"minecraft:shroomlight":307,"shroomlight":307,"minecraft:slime_block":308,"slime_block":308,"minecraft:smithing_table":309,"smithing_table":309,"minecraft:smooth_basalt":310,"smooth_basalt":310,"minecraft:smooth_quartz":311,"smooth_quartz":311,"minecraft:smooth_red_sandstone":312,"smooth_red_sandstone":312,"minecraft:smooth_sandstone":313,"smooth_sandstone":313,"minecraft:smooth_stone":314,"smooth_stone":314,"minecraft:snow_block":315,"snow_block":315,"minecraft:soul_sand":317,"soul_sand":317,"minecraft:soul_soil":318,"soul_soil":318,"minecraft:soul_torch":319,"soul_torch":319,"minecraft:spawner":320,"spawner":320,"minecraft:sponge":321,"sponge":321,"minecraft:spore_blossom":322,"spore_blossom":322,"minecraft:spruce_planks":323,"spruce_planks":323,"minecraft:stone":324,"stone":324,"minecraft:stone_bricks":325,"stone_bricks":325,"minecraft:structure_void":326,"structure_void":326,"minecraft:terracotta":327,"terracotta":327,"minecraft:tinted_glass":328,"tinted_glass":328,"minecraft:torch":329,"torch":329,"minecraft:torchflower":330,"torchflower":330,"minecraft:tube_coral_block":331,"tube_coral_block":331,"minecraft:tuff":332,"tuff":332,"minecraft:tuff_bricks":333,"tuff_bricks":333,"minecraft:warped_fungus":336,"warped_fungus":336,"minecraft:warped_nylium":337,"warped_nylium":337,"minecraft:warped_planks":338,"warped_planks":338,"minecraft:warped_roots":339,"warped_roots":339,"minecraft:warped_wart_block":340,"warped_wart_block":340,"minecraft:waxed_chiseled_copper":341,"waxed_chiseled_copper":341,"minecraft:waxed_copper_block":342,"waxed_copper_block":342,"minecraft:waxed_cut_copper":343,"waxed_cut_copper":343,"minecraft:waxed_exposed_chiseled_copper":344,"waxed_exposed_chiseled_copper":344,"minecraft:waxed_exposed_copper":345,"waxed_exposed_copper":345,"minecraft:waxed_exposed_cut_copper":346,"waxed_exposed_cut_copper":346,"minecraft:waxed_oxidized_chiseled_copper":347,"waxed_oxidized_chiseled_copper":347,"minecraft:waxed_oxidized_copper":348,"waxed_oxidized_copper":348,"minecraft:waxed_oxidized_cut_copper":349,"waxed_oxidized_cut_copper":349,"minecraft:waxed_weathered_chiseled_copper":350,"waxed_weathered_chiseled_copper":350,"minecraft:waxed_weathered_copper":351,"waxed_weathered_copper":351,"minecraft:waxed_weathered_cut_copper":352,"waxed_weathered_cut_copper":352,"minecraft:weathered_chiseled_copper":353,"weathered_chiseled_copper":353,"minecraft:weathered_copper":354,"weathered_copper":354,"minecraft:weathered_cut_copper":355,"weathered_cut_copper":355,"minecraft:wet_sponge":357,"wet_sponge":357,"minecraft:white_carpet":358,"white_carpet":358,"minecraft:white_concrete":359,"white_concrete":359,"minecraft:white_concrete_powder":360,"white_concrete_powder":360,"minecraft:white_stained_glass":361,"white_stained_glass":361,"minecraft:white_terracotta":362,"white_terracotta":362,"minecraft:white_tulip":363,"white_tulip":363,"minecraft:white_wool":364,"white_wool":364,"minecraft:wither_rose":365,"wither_rose":365,"minecraft:yellow_carpet":366,"yellow_carpet":366,"minecraft:yellow_concrete":367,"yellow_concrete":367,"minecraft:yellow_concrete_powder":368,"yellow_concrete_powder":368,"minecraft:yellow_stained_glass":369,"yellow_stained_glass":369,"minecraft:yellow_terracotta":370,"yellow_terracotta":370,"minecraft:yellow_wool":371,"yellow_wool":371,"minecraft:acacia_button":372,"acacia_button":372,"minecraft:bamboo_button":373,"bamboo_button":373,"minecraft:birch_button":374,"birch_button":374,"minecraft:cherry_button":375,"cherry_button":375,"minecraft:crimson_button":376,"crimson_button":376,"minecraft:dark_oak_button":377,"dark_oak_button":377,"minecraft:jungle_button":378,"jungle_button":378,"minecraft:lever":379,"lever":379,"minecraft:mangrove_button":380,"mangrove_button":380,"minecraft:oak_button":381,"oak_button":381,"minecraft:polished_blackstone_button":382,"polished_blackstone_button":382,"minecraft:spruce_button":383,"spruce_button":383,"minecraft:stone_button":384,"stone_button":384,"minecraft:warped_button":385,"warped_button":385,"minecraft:acacia_door":386,"acacia_door":386,"minecraft:bamboo_door":387,"bamboo_door":387,"minecraft:birch_door":388,"birch_door":388,"minecraft:cherry_door":389,"cherry_door":389,"minecraft:copper_door":390,"copper_door":390,"minecraft:crimson_door":391,"crimson_door":391,"minecraft:dark_oak_door":392,"dark_oak_door":392,"minecraft:exposed_copper_door":393,"exposed_copper_door":393,"minecraft:iron_door":394,"iron_door":394,"minecraft:jungle_door":395,"jungle_door":395,"minecraft:mangrove_door":396,"mangrove_door":396,"minecraft:oak_door":397,"oak_door":397,"minecraft:oxidized_copper_door":398,"oxidized_copper_door":398,"minecraft:spruce_door":399,"spruce_door":399,"minecraft:warped_door":400,"warped_door":400,"minecraft:waxed_copper_door":401,"waxed_copper_door":401,"minecraft:waxed_exposed_copper_door":402,"waxed_exposed_copper_door":402,"minecraft:waxed_oxidized_copper_door":403,"waxed_oxidized_copper_door":403,"minecraft:waxed_weathered_copper_door":404,"waxed_weathered_copper_door":404,"minecraft:weathered_copper_door":405,"weathered_copper_door":405,"minecraft:acacia_fence":406,"acacia_fence":406,"minecraft:bamboo_fence":407,"bamboo_fence":407,"minecraft:birch_fence":408,"birch_fence":408,"minecraft:black_stained_glass_pane":409,"black_stained_glass_pane":409,"minecraft:blue_stained_glass_pane":410,"blue_stained_glass_pane":410,"minecraft:brown_stained_glass_pane":411,"brown_stained_glass_pane":411,"minecraft:cherry_fence":412,"cherry_fence":412,"minecraft:crimson_fence":413,"crimson_fence":413,"minecraft:cyan_stained_glass_pane":414,"cyan_stained_glass_pane":414,"minecraft:dark_oak_fence":415,"dark_oak_fence":415,"minecraft:glass_pane":416,"glass_pane":416,"minecraft:gray_stained_glass_pane":417,"gray_stained_glass_pane":417,"minecraft:green_stained_glass_pane":418,"green_stained_glass_pane":418,"minecraft:iron_bars":419,"iron_bars":419,"minecraft:jungle_fence":420,"jungle_fence":420,"minecraft:light_blue_stained_glass_pane":421,"light_blue_stained_glass_pane":421,"minecraft:light_gray_stained_glass_pane":422,"light_gray_stained_glass_pane":422,"minecraft:lime_stained_glass_pane":423,"lime_stained_glass_pane":423,"minecraft:magenta_stained_glass_pane":424,"magenta_stained_glass_pane":424,"minecraft:mangrove_fence":425,"mangrove_fence":425,"minecraft:nether_brick_fence":426,"nether_brick_fence":426,"minecraft:oak_fence":427,"oak_fence":427,"minecraft:orange_stained_glass_pane":428,"orange_stained_glass_pane":428,"minecraft:pink_stained_glass_pane":429,"pink_stained_glass_pane":429,"minecraft:purple_stained_glass_pane":430,"purple_stained_glass_pane":430,"minecraft:red_stained_glass_pane":431,"red_stained_glass_pane":431,"minecraft:spruce_fence":432,"spruce_fence":432,"minecraft:warped_fence":433,"warped_fence":433,"minecraft:white_stained_glass_pane":434,"white_stained_glass_pane":434,"minecraft:yellow_stained_glass_pane":435,"yellow_stained_glass_pane":435,"minecraft:acacia_fence_gate":436,"acacia_fence_gate":436,"minecraft:bamboo_fence_gate":437,"bamboo_fence_gate":437,"minecraft:birch_fence_gate":438,"birch_fence_gate":438,"minecraft:cherry_fence_gate":439,"cherry_fence_gate":439,"minecraft:crimson_fence_gate":440,"crimson_fence_gate":440,"minecraft:dark_oak_fence_gate":441,"dark_oak_fence_gate":441,"minecraft:jungle_fence_gate":442,"jungle_fence_gate":442,"minecraft:mangrove_fence_gate":443,"mangrove_fence_gate":443,"minecraft:oak_fence_gate":444,"oak_fence_gate":444,"minecraft:spruce_fence_gate":445,"spruce_fence_gate":445,"minecraft:warped_fence_gate":446,"warped_fence_gate":446,"minecraft:acacia_hanging_sign":447,"acacia_hanging_sign":447,"minecraft:bamboo_hanging_sign":448,"bamboo_hanging_sign":448,"minecraft:birch_hanging_sign":449,"birch_hanging_sign":449,"minecraft:cherry_hanging_sign":450,"cherry_hanging_sign":450,"minecraft:crimson_hanging_sign":451,"crimson_hanging_sign":451,"minecraft:dark_oak_hanging_sign":452,"dark_oak_hanging_sign":452,"minecraft:jungle_hanging_sign":453,"jungle_hanging_sign":453,"minecraft:mangrove_hanging_sign":454,"mangrove_hanging_sign":454,"minecraft:oak_hanging_sign":455,"oak_hanging_sign":455,"minecraft:spruce_hanging_sign":456,"spruce_hanging_sign":456,"minecraft:warped_hanging_sign":457,"warped_hanging_sign":457,"minecraft:acacia_leaves":458,"acacia_leaves":458,"minecraft:azalea_leaves":459,"azalea_leaves":459,"minecraft:birch_leaves":460,"birch_leaves":460,"minecraft:cherry_leaves":461,"cherry_leaves":461,"minecraft:dark_oak_leaves":462,"dark_oak_leaves":462,"minecraft:flowering_azalea_leaves":463,"flowering_azalea_leaves":463,"minecraft:jungle_leaves":464,"jungle_leaves":464,"minecraft:mangrove_leaves":465,"mangrove_leaves":465,"minecraft:oak_leaves":466,"oak_leaves":466,"minecraft:spruce_leaves":467,"spruce_leaves":467,"minecraft:acacia_log":468,"acacia_log":468,"minecraft:acacia_wood":469,"acacia_wood":469,"minecraft:bamboo_block":470,"bamboo_block":470,"minecraft:basalt":471,"basalt":471,"minecraft:birch_log":472,"birch_log":472,"minecraft:birch_wood":473,"birch_wood":473,"minecraft:bone_block":474,"bone_block":474,"minecraft:cherry_log":475,"cherry_log":475,"minecraft:cherry_wood":476,"cherry_wood":476,"minecraft:crimson_hyphae":477,"crimson_hyphae":477,"minecraft:crimson_stem":478,"crimson_stem":478,"minecraft:dark_oak_log":479,"dark_oak_log":479,"minecraft:dark_oak_wood":480,"dark_oak_wood":480,"minecraft:deepslate":481,"deepslate":481,"minecraft:hay_block":482,"hay_block":482,"minecraft:infested_deepslate":483,"infested_deepslate":483,"minecraft:jungle_log":484,"jungle_log":484,"minecraft:jungle_wood":485,"jungle_wood":485,"minecraft:mangrove_log":486,"mangrove_log":486,"minecraft:mangrove_wood":487,"mangrove_wood":487,"minecraft:muddy_mangrove_roots":488,"muddy_mangrove_roots":488,"minecraft:oak_log":489,"oak_log":489,"minecraft:oak_wood":490,"oak_wood":490,"minecraft:ochre_froglight":491,"ochre_froglight":491,"minecraft:pearlescent_froglight":492,"pearlescent_froglight":492,"minecraft:polished_basalt":493,"polished_basalt":493,"minecraft:purpur_pillar":494,"purpur_pillar":494,"minecraft:quartz_pillar":495,"quartz_pillar":495,"minecraft:spruce_log":496,"spruce_log":496,"minecraft:spruce_wood":497,"spruce_wood":497,"minecraft:stripped_acacia_log":498,"stripped_acacia_log":498,"minecraft:stripped_acacia_wood":499,"stripped_acacia_wood":499,"minecraft:stripped_bamboo_block":500,"stripped_bamboo_block":500,"minecraft:stripped_birch_log":501,"stripped_birch_log":501,"minecraft:stripped_birch_wood":502,"stripped_birch_wood":502,"minecraft:stripped_cherry_log":503,"stripped_cherry_log":503,"minecraft:stripped_cherry_wood":504,"stripped_cherry_wood":504,"minecraft:stripped_crimson_hyphae":505,"stripped_crimson_hyphae":505,"minecraft:stripped_crimson_stem":506,"stripped_crimson_stem":506,"minecraft:stripped_dark_oak_log":507,"stripped_dark_oak_log":507,"minecraft:stripped_dark_oak_wood":508,"stripped_dark_oak_wood":508,"minecraft:stripped_jungle_log":509,"stripped_jungle_log":509,"minecraft:stripped_jungle_wood":510,"stripped_jungle_wood":510,"minecraft:stripped_mangrove_log":511,"stripped_mangrove_log":511,"minecraft:stripped_mangrove_wood":512,"stripped_mangrove_wood":512,"minecraft:stripped_oak_log":513,"stripped_oak_log":513,"minecraft:stripped_oak_wood":514,"stripped_oak_wood":514,"minecraft:stripped_spruce_log":515,"stripped_spruce_log":515,"minecraft:stripped_spruce_wood":516,"stripped_spruce_wood":516,"minecraft:stripped_warped_hyphae":517,"stripped_warped_hyphae":517,"minecraft:stripped_warped_stem":518,"stripped_warped_stem":518,"minecraft:verdant_froglight":519,"verdant_froglight":519,"minecraft:warped_hyphae":520,"warped_hyphae":520,"minecraft:warped_stem":521,"warped_stem":521,"minecraft:acacia_pressure_plate":522,"acacia_pressure_plate":522,"minecraft:bamboo_pressure_plate":523,"bamboo_pressure_plate":523,"minecraft:birch_pressure_plate":524,"birch_pressure_plate":524,"minecraft:cherry_pressure_plate":525,"cherry_pressure_plate":525,"minecraft:crimson_pressure_plate":526,"crimson_pressure_plate":526,"minecraft:dark_oak_pressure_plate":527,"dark_oak_pressure_plate":527,"minecraft:jungle_pressure_plate":528,"jungle_pressure_plate":528,"minecraft:mangrove_pressure_plate":529,"mangrove_pressure_plate":529,"minecraft:oak_pressure_plate":530,"oak_pressure_plate":530,"minecraft:polished_blackstone_pressure_plate":531,"polished_blackstone_pressure_plate":531,"minecraft:spruce_pressure_plate":532,"spruce_pressure_plate":532,"minecraft:stone_pressure_plate":533,"stone_pressure_plate":533,"minecraft:warped_pressure_plate":534,"warped_pressure_plate":534,"minecraft:acacia_sapling":535,"acacia_sapling":535,"minecraft:birch_sapling":536,"birch_sapling":536,"minecraft:cherry_sapling":537,"cherry_sapling":537,"minecraft:dark_oak_sapling":538,"dark_oak_sapling":538,"minecraft:jungle_sapling":539,"jungle_sapling":539,"minecraft:oak_sapling":540,"oak_sapling":540,"minecraft:spruce_sapling":541,"spruce_sapling":541,"minecraft:acacia_sign":542,"acacia_sign":542,"minecraft:bamboo_sign":543,"bamboo_sign":543,"minecraft:birch_sign":544,"birch_sign":544,"minecraft:cherry_sign":545,"cherry_sign":545,"minecraft:crimson_sign":546,"crimson_sign":546,"minecraft:dark_oak_sign":547,"dark_oak_sign":547,"minecraft:jungle_sign":548,"jungle_sign":548,"minecraft:mangrove_sign":549,"mangrove_sign":549,"minecraft:oak_sign":550,"oak_sign":550,"minecraft:spruce_sign":551,"spruce_sign":551,"minecraft:warped_sign":552,"warped_sign":552,"minecraft:acacia_slab":553,"acacia_slab":553,"minecraft:andesite_slab":554,"andesite_slab":554,"minecraft:bamboo_mosaic_slab":555,"bamboo_mosaic_slab":555,"minecraft:bamboo_slab":556,"bamboo_slab":556,"minecraft:birch_slab":557,"birch_slab":557,"minecraft:blackstone_slab":558,"blackstone_slab":558,"minecraft:brick_slab":559,"brick_slab":559,"minecraft:cherry_slab":560,"cherry_slab":560,"minecraft:cobbled_deepslate_slab":561,"cobbled_deepslate_slab":561,"minecraft:cobblestone_slab":562,"cobblestone_slab":562,"minecraft:crimson_slab":563,"crimson_slab":563,"minecraft:cut_copper_slab":564,"cut_copper_slab":564,"minecraft:cut_red_sandstone_slab":565,"cut_red_sandstone_slab":565,"minecraft:cut_sandstone_slab":566,"cut_sandstone_slab":566,"minecraft:dark_oak_slab":567,"dark_oak_slab":567,"minecraft:dark_prismarine_slab":568,"dark_prismarine_slab":568,"minecraft:deepslate_brick_slab":569,"deepslate_brick_slab":569,"minecraft:deepslate_tile_slab":570,"deepslate_tile_slab":570,"minecraft:diorite_slab":571,"diorite_slab":571,"minecraft:end_stone_brick_slab":572,"end_stone_brick_slab":572,"minecraft:exposed_cut_copper_slab":573,"exposed_cut_copper_slab":573,"minecraft:granite_slab":574,"granite_slab":574,"minecraft:jungle_slab":575,"jungle_slab":575,"minecraft:mangrove_slab":576,"mangrove_slab":576,"minecraft:mossy_cobblestone_slab":577,"mossy_cobblestone_slab":577,"minecraft:mossy_stone_brick_slab":578,"mossy_stone_brick_slab":578,"minecraft:mud_brick_slab":579,"mud_brick_slab":579,"minecraft:nether_brick_slab":580,"nether_brick_slab":580,"minecraft:oak_slab":581,"oak_slab":581,"minecraft:oxidized_cut_copper_slab":582,"oxidized_cut_copper_slab":582,"minecraft:petrified_oak_slab":583,"petrified_oak_slab":583,"minecraft:polished_andesite_slab":584,"polished_andesite_slab":584,"minecraft:polished_blackstone_brick_slab":585,"polished_blackstone_brick_slab":585,"minecraft:polished_blackstone_slab":586,"polished_blackstone_slab":586,"minecraft:polished_deepslate_slab":587,"polished_deepslate_slab":587,"minecraft:polished_diorite_slab":588,"polished_diorite_slab":588,"minecraft:polished_granite_slab":589,"polished_granite_slab":589,"minecraft:polished_tuff_slab":590,"polished_tuff_slab":590,"minecraft:prismarine_brick_slab":591,"prismarine_brick_slab":591,"minecraft:prismarine_slab":592,"prismarine_slab":592,"minecraft:purpur_slab":593,"purpur_slab":593,"minecraft:quartz_slab":594,"quartz_slab":594,"minecraft:red_nether_brick_slab":595,"red_nether_brick_slab":595,"minecraft:red_sandstone_slab":596,"red_sandstone_slab":596,"minecraft:sandstone_slab":597,"sandstone_slab":597,"minecraft:smooth_quartz_slab":598,"smooth_quartz_slab":598,"minecraft:smooth_red_sandstone_slab":599,"smooth_red_sandstone_slab":599,"minecraft:smooth_sandstone_slab":600,"smooth_sandstone_slab":600,"minecraft:smooth_stone_slab":601,"smooth_stone_slab":601,"minecraft:spruce_slab":602,"spruce_slab":602,"minecraft:stone_brick_slab":603,"stone_brick_slab":603,"minecraft:stone_slab":604,"stone_slab":604,"minecraft:tuff_brick_slab":605,"tuff_brick_slab":605,"minecraft:tuff_slab":606,"tuff_slab":606,"minecraft:warped_slab":607,"warped_slab":607,"minecraft:waxed_cut_copper_slab":608,"waxed_cut_copper_slab":608,"minecraft:waxed_exposed_cut_copper_slab":609,"waxed_exposed_cut_copper_slab":609,"minecraft:waxed_oxidized_cut_copper_slab":610,"waxed_oxidized_cut_copper_slab":610,"minecraft:waxed_weathered_cut_copper_slab":611,"waxed_weathered_cut_copper_slab":611,"minecraft:weathered_cut_copper_slab":612,"weathered_cut_copper_slab":612,"minecraft:acacia_stairs":613,"acacia_stairs":613,"minecraft:andesite_stairs":614,"andesite_stairs":614,"minecraft:bamboo_mosaic_stairs":615,"bamboo_mosaic_stairs":615,"minecraft:bamboo_stairs":616,"bamboo_stairs":616,"minecraft:birch_stairs":617,"birch_stairs":617,"minecraft:blackstone_stairs":618,"blackstone_stairs":618,"minecraft:brick_stairs":619,"brick_stairs":619,"minecraft:cherry_stairs":620,"cherry_stairs":620,"minecraft:cobbled_deepslate_stairs":621,"cobbled_deepslate_stairs":621,"minecraft:cobblestone_stairs":622,"cobblestone_stairs":622,"minecraft:crimson_stairs":623,"crimson_stairs":623,"minecraft:cut_copper_stairs":624,"cut_copper_stairs":624,"minecraft:dark_oak_stairs":625,"dark_oak_stairs":625,"minecraft:dark_prismarine_stairs":626,"dark_prismarine_stairs":626,"minecraft:deepslate_brick_stairs":627,"deepslate_brick_stairs":627,"minecraft:deepslate_tile_stairs":628,"deepslate_tile_stairs":628,"minecraft:diorite_stairs":629,"diorite_stairs":629,"minecraft:end_stone_brick_stairs":630,"end_stone_brick_stairs":630,"minecraft:exposed_cut_copper_stairs":631,"exposed_cut_copper_stairs":631,"minecraft:granite_stairs":632,"granite_stairs":632,"minecraft:jungle_stairs":633,"jungle_stairs":633,"minecraft:mangrove_stairs":634,"mangrove_stairs":634,"minecraft:mossy_cobblestone_stairs":635,"mossy_cobblestone_stairs":635,"minecraft:mossy_stone_brick_stairs":636,"mossy_stone_brick_stairs":636,"minecraft:mud_brick_stairs":637,"mud_brick_stairs":637,"minecraft:nether_brick_stairs":638,"nether_brick_stairs":638,"minecraft:oak_stairs":639,"oak_stairs":639,"minecraft:oxidized_cut_copper_stairs":640,"oxidized_cut_copper_stairs":640,"minecraft:polished_andesite_stairs":641,"polished_andesite_stairs":641,"minecraft:polished_blackstone_brick_stairs":642,"polished_blackstone_brick_stairs":642,"minecraft:polished_blackstone_stairs":643,"polished_blackstone_stairs":643,"minecraft:polished_deepslate_stairs":644,"polished_deepslate_stairs":644,"minecraft:polished_diorite_stairs":645,"polished_diorite_stairs":645,"minecraft:polished_granite_stairs":646,"polished_granite_stairs":646,"minecraft:polished_tuff_stairs":647,"polished_tuff_stairs":647,"minecraft:prismarine_brick_stairs":648,"prismarine_brick_stairs":648,"minecraft:prismarine_stairs":649,"prismarine_stairs":649,"minecraft:purpur_stairs":650,"purpur_stairs":650,"minecraft:quartz_stairs":651,"quartz_stairs":651,"minecraft:red_nether_brick_stairs":652,"red_nether_brick_stairs":652,"minecraft:red_sandstone_stairs":653,"red_sandstone_stairs":653,"minecraft:sandstone_stairs":654,"sandstone_stairs":654,"minecraft:smooth_quartz_stairs":655,"smooth_quartz_stairs":655,"minecraft:smooth_red_sandstone_stairs":656,"smooth_red_sandstone_stairs":656,"minecraft:smooth_sandstone_stairs":657,"smooth_sandstone_stairs":657,"minecraft:spruce_stairs":658,"spruce_stairs":658,"minecraft:stone_brick_stairs":659,"stone_brick_stairs":659,"minecraft:stone_stairs":660,"stone_stairs":660,"minecraft:tuff_brick_stairs":661,"tuff_brick_stairs":661,"minecraft:tuff_stairs":662,"tuff_stairs":662,"minecraft:warped_stairs":663,"warped_stairs":663,"minecraft:waxed_cut_copper_stairs":664,"waxed_cut_copper_stairs":664,"minecraft:waxed_exposed_cut_copper_stairs":665,"waxed_exposed_cut_copper_stairs":665,"minecraft:waxed_oxidized_cut_copper_stairs":666,"waxed_oxidized_cut_copper_stairs":666,"minecraft:waxed_weathered_cut_copper_stairs":667,"waxed_weathered_cut_copper_stairs":667,"minecraft:weathered_cut_copper_stairs":668,"weathered_cut_copper_stairs":668,"minecraft:acacia_trapdoor":669,"acacia_trapdoor":669,"minecraft:bamboo_trapdoor":670,"bamboo_trapdoor":670,"minecraft:birch_trapdoor":671,"birch_trapdoor":671,"minecraft:cherry_trapdoor":672,"cherry_trapdoor":672,"minecraft:copper_trapdoor":673,"copper_trapdoor":673,"minecraft:crimson_trapdoor":674,"crimson_trapdoor":674,"minecraft:dark_oak_trapdoor":675,"dark_oak_trapdoor":675,"minecraft:exposed_copper_trapdoor":676,"exposed_copper_trapdoor":676,"minecraft:iron_trapdoor":677,"iron_trapdoor":677,"minecraft:jungle_trapdoor":678,"jungle_trapdoor":678,"minecraft:mangrove_trapdoor":679,"mangrove_trapdoor":679,"minecraft:oak_trapdoor":680,"oak_trapdoor":680,"minecraft:oxidized_copper_trapdoor":681,"oxidized_copper_trapdoor":681,"minecraft:spruce_trapdoor":682,"spruce_trapdoor":682,"minecraft:warped_trapdoor":683,"warped_trapdoor":683,"minecraft:waxed_copper_trapdoor":684,"waxed_copper_trapdoor":684,"minecraft:waxed_exposed_copper_trapdoor":685,"waxed_exposed_copper_trapdoor":685,"minecraft:waxed_oxidized_copper_trapdoor":686,"waxed_oxidized_copper_trapdoor":686,"minecraft:waxed_weathered_copper_trapdoor":687,"waxed_weathered_copper_trapdoor":687,"minecraft:weathered_copper_trapdoor":688,"weathered_copper_trapdoor":688,"minecraft:big_dripleaf":693,"big_dripleaf":693,"minecraft:ender_chest":702,"ender_chest":702,"minecraft:ladder":705,"ladder":705,"minecraft:activator_rail":714,"activator_rail":714,"minecraft:detector_rail":715,"detector_rail":715,"minecraft:powered_rail":716,"powered_rail":716,"minecraft:amethyst_cluster":717,"amethyst_cluster":717,"minecraft:large_amethyst_bud":718,"large_amethyst_bud":718,"minecraft:medium_amethyst_bud":719,"medium_amethyst_bud":719,"minecraft:small_amethyst_bud":720,"small_amethyst_bud":720,"minecraft:andesite_wall":721,"andesite_wall":721,"minecraft:blackstone_wall":722,"blackstone_wall":722,"minecraft:brick_wall":723,"brick_wall":723,"minecraft:cobbled_deepslate_wall":724,"cobbled_deepslate_wall":724,"minecraft:cobblestone_wall":725,"cobblestone_wall":725,"minecraft:deepslate_brick_wall":726,"deepslate_brick_wall":726,"minecraft:deepslate_tile_wall":727,"deepslate_tile_wall":727,"minecraft:diorite_wall":728,"diorite_wall":728,"minecraft:end_stone_brick_wall":729,"end_stone_brick_wall":729,"minecraft:granite_wall":730,"granite_wall":730,"minecraft:mossy_cobblestone_wall":731,"mossy_cobblestone_wall":731,"minecraft:mossy_stone_brick_wall":732,"mossy_stone_brick_wall":732,"minecraft:mud_brick_wall":733,"mud_brick_wall":733,"minecraft:nether_brick_wall":734,"nether_brick_wall":734,"minecraft:polished_blackstone_brick_wall":735,"polished_blackstone_brick_wall":735,"minecraft:polished_blackstone_wall":736,"polished_blackstone_wall":736,"minecraft:polished_deepslate_wall":737,"polished_deepslate_wall":737,"minecraft:polished_tuff_wall":738,"polished_tuff_wall":738,"minecraft:prismarine_wall":739,"prismarine_wall":739,"minecraft:red_nether_brick_wall":740,"red_nether_brick_wall":740,"minecraft:red_sandstone_wall":741,"red_sandstone_wall":741,"minecraft:sandstone_wall":742,"sandstone_wall":742,"minecraft:stone_brick_wall":743,"stone_brick_wall":743,"minecraft:tuff_brick_wall":744,"tuff_brick_wall":744,"minecraft:tuff_wall":745,"tuff_wall":745,"minecraft:anvil":746,"anvil":746,"minecraft:melon_seeds":747,"melon_seeds":747,"minecraft:black_glazed_terracotta":749,"black_glazed_terracotta":749,"minecraft:black_banner":750,"black_banner":750,"minecraft:blue_glazed_terracotta":751,"blue_glazed_terracotta":751,"minecraft:blue_banner":752,"blue_banner":752,"minecraft:brown_glazed_terracotta":753,"brown_glazed_terracotta":753,"minecraft:brown_banner":754,"brown_banner":754,"minecraft:carved_pumpkin":755,"carved_pumpkin":755,"minecraft:chipped_anvil":756,"chipped_anvil":756,"minecraft:cyan_glazed_terracotta":757,"cyan_glazed_terracotta":757,"minecraft:cyan_banner":758,"cyan_banner":758,"minecraft:damaged_anvil":759,"damaged_anvil":759,"minecraft:gray_glazed_terracotta":760,"gray_glazed_terracotta":760,"minecraft:gray_banner":761,"gray_banner":761,"minecraft:green_glazed_terracotta":762,"green_glazed_terracotta":762,"minecraft:green_banner":763,"green_banner":763,"minecraft:jack_o_lantern":764,"jack_o_lantern":764,"minecraft:light_blue_glazed_terracotta":765,"light_blue_glazed_terracotta":765,"minecraft:light_blue_banner":766,"light_blue_banner":766,"minecraft:light_gray_glazed_terracotta":767,"light_gray_glazed_terracotta":767,"minecraft:light_gray_banner":768,"light_gray_banner":768,"minecraft:lime_glazed_terracotta":769,"lime_glazed_terracotta":769,"minecraft:lime_banner":770,"lime_banner":770,"minecraft:loom":771,"loom":771,"minecraft:magenta_glazed_terracotta":772,"magenta_glazed_terracotta":772,"minecraft:magenta_banner":773,"magenta_banner":773,"minecraft:orange_glazed_terracotta":774,"orange_glazed_terracotta":774,"minecraft:orange_banner":775,"orange_banner":775,"minecraft:pink_glazed_terracotta":776,"pink_glazed_terracotta":776,"minecraft:pink_banner":777,"pink_banner":777,"minecraft:purple_glazed_terracotta":778,"purple_glazed_terracotta":778,"minecraft:purple_banner":779,"purple_banner":779,"minecraft:red_glazed_terracotta":780,"red_glazed_terracotta":780,"minecraft:red_banner":781,"red_banner":781,"minecraft:stonecutter":783,"stonecutter":783,"minecraft:white_glazed_terracotta":785,"white_glazed_terracotta":785,"minecraft:white_banner":786,"white_banner":786,"minecraft:yellow_glazed_terracotta":787,"yellow_glazed_terracotta":787,"minecraft:yellow_banner":788,"yellow_banner":788,"minecraft:bamboo":789,"bamboo":789,"minecraft:barrel":790,"barrel":790,"minecraft:barrier":791,"barrier":791,"minecraft:copper_grate":792,"copper_grate":792,"minecraft:exposed_copper_grate":793,"exposed_copper_grate":793,"minecraft:hanging_roots":794,"hanging_roots":794,"minecraft:heavy_core":795,"heavy_core":795,"minecraft:mangrove_roots":796,"mangrove_roots":796,"minecraft:oxidized_copper_grate":797,"oxidized_copper_grate":797,"minecraft:waxed_copper_grate":798,"waxed_copper_grate":798,"minecraft:waxed_exposed_copper_grate":799,"waxed_exposed_copper_grate":799,"minecraft:waxed_oxidized_copper_grate":800,"waxed_oxidized_copper_grate":800,"minecraft:waxed_weathered_copper_grate":801,"waxed_weathered_copper_grate":801,"minecraft:weathered_copper_grate":802,"weathered_copper_grate":802,"minecraft:bee_nest":803,"bee_nest":803,"minecraft:beehive":804,"beehive":804,"minecraft:beetroot_seeds":805,"beetroot_seeds":805,"minecraft:nether_wart":807,"nether_wart":807,"minecraft:sweet_berries":808,"sweet_berries":808,"minecraft:bell":809,"bell":809,"minecraft:black_bed":827,"black_bed":827,"minecraft:blue_bed":828,"blue_bed":828,"minecraft:brown_bed":829,"brown_bed":829,"minecraft:cyan_bed":830,"cyan_bed":830,"minecraft:gray_bed":831,"gray_bed":831,"minecraft:green_bed":832,"green_bed":832,"minecraft:light_blue_bed":833,"light_blue_bed":833,"minecraft:light_gray_bed":834,"light_gray_bed":834,"minecraft:lime_bed":835,"lime_bed":835,"minecraft:magenta_bed":836,"magenta_bed":836,"minecraft:orange_bed":837,"orange_bed":837,"minecraft:pink_bed":838,"pink_bed":838,"minecraft:purple_bed":839,"purple_bed":839,"minecraft:red_bed":840,"red_bed":840,"minecraft:white_bed":841,"white_bed":841,"minecraft:yellow_bed":842,"yellow_bed":842,"minecraft:black_candle":843,"black_candle":843,"minecraft:blue_candle":844,"blue_candle":844,"minecraft:brown_candle":845,"brown_candle":845,"minecraft:candle":846,"candle":846,"minecraft:cyan_candle":847,"cyan_candle":847,"minecraft:gray_candle":848,"gray_candle":848,"minecraft:green_candle":849,"green_candle":849,"minecraft:light_blue_candle":850,"light_blue_candle":850,"minecraft:light_gray_candle":851,"light_gray_candle":851,"minecraft:lime_candle":852,"lime_candle":852,"minecraft:magenta_candle":853,"magenta_candle":853,"minecraft:orange_candle":854,"orange_candle":854,"minecraft:pink_candle":855,"pink_candle":855,"minecraft:purple_candle":856,"purple_candle":856,"minecraft:red_candle":857,"red_candle":857,"minecraft:white_candle":858,"white_candle":858,"minecraft:yellow_candle":859,"yellow_candle":859,"minecraft:deepslate_redstone_ore":865,"deepslate_redstone_ore":865,"minecraft:redstone_lamp":876,"redstone_lamp":876,"minecraft:redstone_ore":877,"redstone_ore":877,"minecraft:black_shulker_box":880,"black_shulker_box":880,"minecraft:blue_shulker_box":881,"blue_shulker_box":881,"minecraft:brown_shulker_box":882,"brown_shulker_box":882,"minecraft:cyan_shulker_box":883,"cyan_shulker_box":883,"minecraft:end_rod":884,"end_rod":884,"minecraft:gray_shulker_box":885,"gray_shulker_box":885,"minecraft:green_shulker_box":886,"green_shulker_box":886,"minecraft:light_blue_shulker_box":887,"light_blue_shulker_box":887,"minecraft:light_gray_shulker_box":888,"light_gray_shulker_box":888,"minecraft:lime_shulker_box":889,"lime_shulker_box":889,"minecraft:magenta_shulker_box":890,"magenta_shulker_box":890,"minecraft:orange_shulker_box":891,"orange_shulker_box":891,"minecraft:pink_shulker_box":892,"pink_shulker_box":892,"minecraft:purple_shulker_box":893,"purple_shulker_box":893,"minecraft:red_shulker_box":894,"red_shulker_box":894,"minecraft:shulker_box":895,"shulker_box":895,"minecraft:white_shulker_box":896,"white_shulker_box":896,"minecraft:yellow_shulker_box":897,"yellow_shulker_box":897,"minecraft:blast_furnace":898,"blast_furnace":898,"minecraft:furnace":899,"furnace":899,"minecraft:smoker":900,"smoker":900,"minecraft:brain_coral":901,"brain_coral":901,"minecraft:brain_coral_fan":902,"brain_coral_fan":902,"minecraft:bubble_coral":903,"bubble_coral":903,"minecraft:bubble_coral_fan":904,"bubble_coral_fan":904,"minecraft:conduit":905,"conduit":905,"minecraft:dead_brain_coral":906,"dead_brain_coral":906,"minecraft:dead_brain_coral_fan":907,"dead_brain_coral_fan":907,"minecraft:dead_bubble_coral":908,"dead_bubble_coral":908,"minecraft:dead_bubble_coral_fan":909,"dead_bubble_coral_fan":909,"minecraft:dead_fire_coral":910,"dead_fire_coral":910,"minecraft:dead_fire_coral_fan":911,"dead_fire_coral_fan":911,"minecraft:dead_horn_coral":912,"dead_horn_coral":912,"minecraft:dead_horn_coral_fan":913,"dead_horn_coral_fan":913,"minecraft:dead_tube_coral":914,"dead_tube_coral":914,"minecraft:dead_tube_coral_fan":915,"dead_tube_coral_fan":915,"minecraft:fire_coral":916,"fire_coral":916,"minecraft:fire_coral_fan":917,"fire_coral_fan":917,"minecraft:horn_coral":918,"horn_coral":918,"minecraft:horn_coral_fan":919,"horn_coral_fan":919,"minecraft:tube_coral":920,"tube_coral":920,"minecraft:tube_coral_fan":921,"tube_coral_fan":921,"minecraft:brewing_stand":932,"brewing_stand":932,"minecraft:brown_mushroom_block":933,"brown_mushroom_block":933,"minecraft:mushroom_stem":934,"mushroom_stem":934,"minecraft:red_mushroom_block":935,"red_mushroom_block":935,"minecraft:cactus":937,"cactus":937,"minecraft:sugar_cane":938,"sugar_cane":938,"minecraft:cake":939,"cake":939,"minecraft:calibrated_sculk_sensor":940,"calibrated_sculk_sensor":940,"minecraft:campfire":941,"campfire":941,"minecraft:soul_campfire":942,"soul_campfire":942,"minecraft:carrot":943,"carrot":943,"minecraft:pumpkin_seeds":944,"pumpkin_seeds":944,"minecraft:potato":945,"potato":945,"minecraft:wheat_seeds":947,"wheat_seeds":947,"minecraft:glow_berries":948,"glow_berries":948,"minecraft:chain":950,"chain":950,"minecraft:chain_command_block":951,"chain_command_block":951,"minecraft:command_block":952,"command_block":952,"minecraft:repeating_command_block":953,"repeating_command_block":953,"minecraft:chest":954,"chest":954,"minecraft:trapped_chest":955,"trapped_chest":955,"minecraft:chiseled_bookshelf":956,"chiseled_bookshelf":956,"minecraft:chorus_flower":957,"chorus_flower":957,"minecraft:chorus_plant":958,"chorus_plant":958,"minecraft:cocoa_beans":959,"cocoa_beans":959,"minecraft:comparator":960,"comparator":960,"minecraft:composter":961,"composter":961,"minecraft:copper_bulb":962,"copper_bulb":962,"minecraft:exposed_copper_bulb":963,"exposed_copper_bulb":963,"minecraft:oxidized_copper_bulb":964,"oxidized_copper_bulb":964,"minecraft:waxed_copper_bulb":965,"waxed_copper_bulb":965,"minecraft:waxed_exposed_copper_bulb":966,"waxed_exposed_copper_bulb":966,"minecraft:waxed_oxidized_copper_bulb":967,"waxed_oxidized_copper_bulb":967,"minecraft:waxed_weathered_copper_bulb":968,"waxed_weathered_copper_bulb":968,"minecraft:weathered_copper_bulb":969,"weathered_copper_bulb":969,"minecraft:crafter":970,"crafter":970,"minecraft:creeper_head":971,"creeper_head":971,"minecraft:dragon_head":972,"dragon_head":972,"minecraft:piglin_head":973,"piglin_head":973,"minecraft:player_head":974,"player_head":974,"minecraft:skeleton_skull":975,"skeleton_skull":975,"minecraft:wither_skeleton_skull":976,"wither_skeleton_skull":976,"minecraft:zombie_head":977,"zombie_head":977,"minecraft:daylight_detector":985,"daylight_detector":985,"minecraft:decorated_pot":986,"decorated_pot":986,"minecraft:dispenser":987,"dispenser":987,"minecraft:dropper":988,"dropper":988,"minecraft:end_portal_frame":989,"end_portal_frame":989,"minecraft:farmland":990,"farmland":990,"minecraft:glow_lichen":992,"glow_lichen":992,"minecraft:sculk_vein":993,"sculk_vein":993,"minecraft:grass_block":994,"grass_block":994,"minecraft:mycelium":995,"mycelium":995,"minecraft:podzol":996,"podzol":996,"minecraft:grindstone":997,"grindstone":997,"minecraft:heavy_weighted_pressure_plate":998,"heavy_weighted_pressure_plate":998,"minecraft:light_weighted_pressure_plate":999,"light_weighted_pressure_plate":999,"minecraft:target":1000,"target":1000,"minecraft:hopper":1001,"hopper":1001,"minecraft:jigsaw":1002,"jigsaw":1002,"minecraft:jukebox":1003,"jukebox":1003,"minecraft:kelp":1004,"kelp":1004,"minecraft:twisting_vines":1005,"twisting_vines":1005,"minecraft:weeping_vines":1006,"weeping_vines":1006,"minecraft:lantern":1007,"lantern":1007,"minecraft:soul_lantern":1008,"soul_lantern":1008,"minecraft:large_fern":1009,"large_fern":1009,"minecraft:lilac":1010,"lilac":1010,"minecraft:peony":1011,"peony":1011,"minecraft:pitcher_plant":1012,"pitcher_plant":1012,"minecraft:rose_bush":1013,"rose_bush":1013,"minecraft:sunflower":1014,"sunflower":1014,"minecraft:tall_grass":1015,"tall_grass":1015,"minecraft:lava_bucket":1017,"lava_bucket":1017,"minecraft:water_bucket":1018,"water_bucket":1018,"minecraft:lectern":1019,"lectern":1019,"minecraft:light":1020,"light":1020,"minecraft:lightning_rod":1021,"lightning_rod":1021,"minecraft:mangrove_propagule":1022,"mangrove_propagule":1022,"minecraft:note_block":1025,"note_block":1025,"minecraft:observer":1026,"observer":1026,"minecraft:pink_petals":1027,"pink_petals":1027,"minecraft:piston":1028,"piston":1028,"minecraft:sticky_piston":1029,"sticky_piston":1029,"minecraft:pitcher_pod":1031,"pitcher_pod":1031,"minecraft:pointed_dripstone":1032,"pointed_dripstone":1032,"minecraft:rail":1035,"rail":1035,"minecraft:redstone_torch":1036,"redstone_torch":1036,"minecraft:redstone":1038,"redstone":1038,"minecraft:repeater":1039,"repeater":1039,"minecraft:respawn_anchor":1040,"respawn_anchor":1040,"minecraft:scaffolding":1041,"scaffolding":1041,"minecraft:sculk_catalyst":1042,"sculk_catalyst":1042,"minecraft:sculk_sensor":1043,"sculk_sensor":1043,"minecraft:sculk_shrieker":1044,"sculk_shrieker":1044,"minecraft:sea_pickle":1045,"sea_pickle":1045,"minecraft:small_dripleaf":1046,"small_dripleaf":1046,"minecraft:sniffer_egg":1047,"sniffer_egg":1047,"minecraft:snow":1048,"snow":1048,"minecraft:structure_block":1049,"structure_block":1049,"minecraft:suspicious_gravel":1050,"suspicious_gravel":1050,"minecraft:suspicious_sand":1051,"suspicious_sand":1051,"minecraft:tnt":1052,"tnt":1052,"minecraft:torchflower_seeds":1053,"torchflower_seeds":1053,"minecraft:trial_spawner":1054,"trial_spawner":1054,"minecraft:string":1055,"string":1055,"minecraft:tripwire_hook":1056,"tripwire_hook":1056,"minecraft:turtle_egg":1057,"turtle_egg":1057,"minecraft:vault":1058,"vault":1058,"minecraft:vine":1059,"vine":1059}
diff --git a/datapacks/Bookshelf/data/bs.block/function/load/mapping_sets.mcfunction b/datapacks/Bookshelf/data/bs.block/function/load/mapping_sets.mcfunction
index 234607a256..e521c6cff0 100644
--- a/datapacks/Bookshelf/data/bs.block/function/load/mapping_sets.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/load/mapping_sets.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:const block.mapping_sets.bs.shapes set value [ \
{id:0,set:0,type:"minecraft:oak_planks"}, \
{id:1,set:0,type:"minecraft:spruce_planks"}, \
diff --git a/datapacks/Bookshelf/data/bs.block/function/load/states_table.mcfunction b/datapacks/Bookshelf/data/bs.block/function/load/states_table.mcfunction
index 6a20f9f546..a6ea877710 100644
--- a/datapacks/Bookshelf/data/bs.block/function/load/states_table.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/load/states_table.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# This file was automatically generated, do not edit it
data modify storage bs:const block.table[{group:1}]._ set value [{n:"face",o:[{i:0,v:"wall",s:{0:"face=wall,"},p:{face:"wall"}},{i:1,v:"ceiling",s:{0:"face=ceiling,"},p:{face:"ceiling"}},{i:2,v:"floor",s:{0:"face=floor,"},p:{face:"floor"}}]},{n:"facing",o:[{i:0,v:"north",s:{1:"facing=north,"},p:{facing:"north"}},{i:1,v:"south",s:{1:"facing=south,"},p:{facing:"south"}},{i:2,v:"west",s:{1:"facing=west,"},p:{facing:"west"}},{i:3,v:"east",s:{1:"facing=east,"},p:{facing:"east"}}]},{n:"powered",o:[{i:0,v:"false",s:{2:"powered=false,"},p:{powered:"false"}},{i:1,v:"true",s:{2:"powered=true,"},p:{powered:"true"}}]}]
data modify storage bs:const block.table[{group:2}]._ set value [{n:"facing",o:[{i:0,v:"north",s:{0:"facing=north,"},p:{facing:"north"}},{i:1,v:"south",s:{0:"facing=south,"},p:{facing:"south"}},{i:2,v:"west",s:{0:"facing=west,"},p:{facing:"west"}},{i:3,v:"east",s:{0:"facing=east,"},p:{facing:"east"}}]},{n:"half",o:[{i:0,v:"lower",s:{1:"half=lower,"},p:{half:"lower"}},{i:1,v:"upper",s:{1:"half=upper,"},p:{half:"upper"}}]},{n:"hinge",o:[{i:0,v:"left",s:{2:"hinge=left,"},p:{hinge:"left"}},{i:1,v:"right",s:{2:"hinge=right,"},p:{hinge:"right"}}]},{n:"open",o:[{i:0,v:"false",s:{3:"open=false,"},p:{open:"false"}},{i:1,v:"true",s:{3:"open=true,"},p:{open:"true"}}]},{n:"powered",o:[{i:0,v:"false",s:{4:"powered=false,"},p:{powered:"false"}},{i:1,v:"true",s:{4:"powered=true,"},p:{powered:"true"}}]}]
diff --git a/datapacks/Bookshelf/data/bs.block/function/load/types_table.mcfunction b/datapacks/Bookshelf/data/bs.block/function/load/types_table.mcfunction
index 5d1cfac2f5..cc6f07b233 100644
--- a/datapacks/Bookshelf/data/bs.block/function/load/types_table.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/load/types_table.mcfunction
@@ -1,2 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
# This file was automatically generated, do not edit it
data modify storage bs:const block.types set value {"minecraft:acacia_planks":0,"minecraft:air":1,"minecraft:allium":2,"minecraft:amethyst_block":3,"minecraft:ancient_debris":4,"minecraft:andesite":5,"minecraft:azalea":6,"minecraft:azure_bluet":7,"minecraft:bamboo_mosaic":8,"minecraft:bamboo_planks":9,"minecraft:bamboo_sapling":10,"minecraft:beacon":11,"minecraft:bedrock":12,"minecraft:birch_planks":13,"minecraft:black_carpet":14,"minecraft:black_concrete":15,"minecraft:black_concrete_powder":16,"minecraft:black_stained_glass":17,"minecraft:black_terracotta":18,"minecraft:black_wool":19,"minecraft:blackstone":20,"minecraft:blue_carpet":21,"minecraft:blue_concrete":22,"minecraft:blue_concrete_powder":23,"minecraft:blue_ice":24,"minecraft:blue_orchid":25,"minecraft:blue_stained_glass":26,"minecraft:blue_terracotta":27,"minecraft:blue_wool":28,"minecraft:bookshelf":29,"minecraft:brain_coral_block":30,"minecraft:bricks":31,"minecraft:brown_carpet":32,"minecraft:brown_concrete":33,"minecraft:brown_concrete_powder":34,"minecraft:brown_mushroom":35,"minecraft:brown_stained_glass":36,"minecraft:brown_terracotta":37,"minecraft:brown_wool":38,"minecraft:bubble_coral_block":39,"minecraft:budding_amethyst":40,"minecraft:calcite":41,"minecraft:cartography_table":42,"minecraft:cauldron":43,"minecraft:cave_air":44,"minecraft:cherry_planks":45,"minecraft:chiseled_copper":46,"minecraft:chiseled_deepslate":47,"minecraft:chiseled_nether_bricks":48,"minecraft:chiseled_polished_blackstone":49,"minecraft:chiseled_quartz_block":50,"minecraft:chiseled_red_sandstone":51,"minecraft:chiseled_sandstone":52,"minecraft:chiseled_stone_bricks":53,"minecraft:chiseled_tuff":54,"minecraft:chiseled_tuff_bricks":55,"minecraft:clay":56,"minecraft:coal_block":57,"minecraft:coal_ore":58,"minecraft:coarse_dirt":59,"minecraft:cobbled_deepslate":60,"minecraft:cobblestone":61,"minecraft:cobweb":62,"minecraft:copper_block":63,"minecraft:copper_ore":64,"minecraft:cornflower":65,"minecraft:cracked_deepslate_bricks":66,"minecraft:cracked_deepslate_tiles":67,"minecraft:cracked_nether_bricks":68,"minecraft:cracked_polished_blackstone_bricks":69,"minecraft:cracked_stone_bricks":70,"minecraft:crafting_table":71,"minecraft:crimson_fungus":72,"minecraft:crimson_nylium":73,"minecraft:crimson_planks":74,"minecraft:crimson_roots":75,"minecraft:crying_obsidian":76,"minecraft:cut_copper":77,"minecraft:cut_red_sandstone":78,"minecraft:cut_sandstone":79,"minecraft:cyan_carpet":80,"minecraft:cyan_concrete":81,"minecraft:cyan_concrete_powder":82,"minecraft:cyan_stained_glass":83,"minecraft:cyan_terracotta":84,"minecraft:cyan_wool":85,"minecraft:dandelion":86,"minecraft:dark_oak_planks":87,"minecraft:dark_prismarine":88,"minecraft:dead_brain_coral_block":89,"minecraft:dead_bubble_coral_block":90,"minecraft:dead_bush":91,"minecraft:dead_fire_coral_block":92,"minecraft:dead_horn_coral_block":93,"minecraft:dead_tube_coral_block":94,"minecraft:deepslate_bricks":95,"minecraft:deepslate_coal_ore":96,"minecraft:deepslate_copper_ore":97,"minecraft:deepslate_diamond_ore":98,"minecraft:deepslate_emerald_ore":99,"minecraft:deepslate_gold_ore":100,"minecraft:deepslate_iron_ore":101,"minecraft:deepslate_lapis_ore":102,"minecraft:deepslate_tiles":103,"minecraft:diamond_block":104,"minecraft:diamond_ore":105,"minecraft:diorite":106,"minecraft:dirt":107,"minecraft:dirt_path":108,"minecraft:dragon_egg":109,"minecraft:dried_kelp_block":110,"minecraft:dripstone_block":111,"minecraft:emerald_block":112,"minecraft:emerald_ore":113,"minecraft:enchanting_table":114,"minecraft:end_gateway":115,"minecraft:end_portal":116,"minecraft:end_stone":117,"minecraft:end_stone_bricks":118,"minecraft:exposed_chiseled_copper":119,"minecraft:exposed_copper":120,"minecraft:exposed_cut_copper":121,"minecraft:fern":122,"minecraft:fire_coral_block":123,"minecraft:fletching_table":124,"minecraft:flower_pot":125,"minecraft:flowering_azalea":126,"minecraft:frogspawn":127,"minecraft:gilded_blackstone":128,"minecraft:glass":129,"minecraft:glowstone":130,"minecraft:gold_block":131,"minecraft:gold_ore":132,"minecraft:granite":133,"minecraft:gravel":134,"minecraft:gray_carpet":135,"minecraft:gray_concrete":136,"minecraft:gray_concrete_powder":137,"minecraft:gray_stained_glass":138,"minecraft:gray_terracotta":139,"minecraft:gray_wool":140,"minecraft:green_carpet":141,"minecraft:green_concrete":142,"minecraft:green_concrete_powder":143,"minecraft:green_stained_glass":144,"minecraft:green_terracotta":145,"minecraft:green_wool":146,"minecraft:honey_block":147,"minecraft:honeycomb_block":148,"minecraft:horn_coral_block":149,"minecraft:ice":150,"minecraft:infested_chiseled_stone_bricks":151,"minecraft:infested_cobblestone":152,"minecraft:infested_cracked_stone_bricks":153,"minecraft:infested_mossy_stone_bricks":154,"minecraft:infested_stone":155,"minecraft:infested_stone_bricks":156,"minecraft:iron_block":157,"minecraft:iron_ore":158,"minecraft:jungle_planks":159,"minecraft:kelp_plant":160,"minecraft:lapis_block":161,"minecraft:lapis_ore":162,"minecraft:lava_cauldron":163,"minecraft:light_blue_carpet":164,"minecraft:light_blue_concrete":165,"minecraft:light_blue_concrete_powder":166,"minecraft:light_blue_stained_glass":167,"minecraft:light_blue_terracotta":168,"minecraft:light_blue_wool":169,"minecraft:light_gray_carpet":170,"minecraft:light_gray_concrete":171,"minecraft:light_gray_concrete_powder":172,"minecraft:light_gray_stained_glass":173,"minecraft:light_gray_terracotta":174,"minecraft:light_gray_wool":175,"minecraft:lily_of_the_valley":176,"minecraft:lily_pad":177,"minecraft:lime_carpet":178,"minecraft:lime_concrete":179,"minecraft:lime_concrete_powder":180,"minecraft:lime_stained_glass":181,"minecraft:lime_terracotta":182,"minecraft:lime_wool":183,"minecraft:lodestone":184,"minecraft:magenta_carpet":185,"minecraft:magenta_concrete":186,"minecraft:magenta_concrete_powder":187,"minecraft:magenta_stained_glass":188,"minecraft:magenta_terracotta":189,"minecraft:magenta_wool":190,"minecraft:magma_block":191,"minecraft:mangrove_planks":192,"minecraft:melon":193,"minecraft:moss_block":194,"minecraft:moss_carpet":195,"minecraft:mossy_cobblestone":196,"minecraft:mossy_stone_bricks":197,"minecraft:mud":198,"minecraft:mud_bricks":199,"minecraft:nether_bricks":200,"minecraft:nether_gold_ore":201,"minecraft:nether_quartz_ore":202,"minecraft:nether_sprouts":203,"minecraft:nether_wart_block":204,"minecraft:netherite_block":205,"minecraft:netherrack":206,"minecraft:oak_planks":207,"minecraft:obsidian":208,"minecraft:orange_carpet":209,"minecraft:orange_concrete":210,"minecraft:orange_concrete_powder":211,"minecraft:orange_stained_glass":212,"minecraft:orange_terracotta":213,"minecraft:orange_tulip":214,"minecraft:orange_wool":215,"minecraft:oxeye_daisy":216,"minecraft:oxidized_chiseled_copper":217,"minecraft:oxidized_copper":218,"minecraft:oxidized_cut_copper":219,"minecraft:packed_ice":220,"minecraft:packed_mud":221,"minecraft:pink_carpet":222,"minecraft:pink_concrete":223,"minecraft:pink_concrete_powder":224,"minecraft:pink_stained_glass":225,"minecraft:pink_terracotta":226,"minecraft:pink_tulip":227,"minecraft:pink_wool":228,"minecraft:polished_andesite":229,"minecraft:polished_blackstone":230,"minecraft:polished_blackstone_bricks":231,"minecraft:polished_deepslate":232,"minecraft:polished_diorite":233,"minecraft:polished_granite":234,"minecraft:polished_tuff":235,"minecraft:poppy":236,"minecraft:potted_acacia_sapling":237,"minecraft:potted_allium":238,"minecraft:potted_azalea_bush":239,"minecraft:potted_azure_bluet":240,"minecraft:potted_bamboo":241,"minecraft:potted_birch_sapling":242,"minecraft:potted_blue_orchid":243,"minecraft:potted_brown_mushroom":244,"minecraft:potted_cactus":245,"minecraft:potted_cherry_sapling":246,"minecraft:potted_cornflower":247,"minecraft:potted_crimson_fungus":248,"minecraft:potted_crimson_roots":249,"minecraft:potted_dandelion":250,"minecraft:potted_dark_oak_sapling":251,"minecraft:potted_dead_bush":252,"minecraft:potted_fern":253,"minecraft:potted_flowering_azalea_bush":254,"minecraft:potted_jungle_sapling":255,"minecraft:potted_lily_of_the_valley":256,"minecraft:potted_mangrove_propagule":257,"minecraft:potted_oak_sapling":258,"minecraft:potted_orange_tulip":259,"minecraft:potted_oxeye_daisy":260,"minecraft:potted_pink_tulip":261,"minecraft:potted_poppy":262,"minecraft:potted_red_mushroom":263,"minecraft:potted_red_tulip":264,"minecraft:potted_spruce_sapling":265,"minecraft:potted_torchflower":266,"minecraft:potted_warped_fungus":267,"minecraft:potted_warped_roots":268,"minecraft:potted_white_tulip":269,"minecraft:potted_wither_rose":270,"minecraft:powder_snow":271,"minecraft:prismarine":272,"minecraft:prismarine_bricks":273,"minecraft:pumpkin":274,"minecraft:purple_carpet":275,"minecraft:purple_concrete":276,"minecraft:purple_concrete_powder":277,"minecraft:purple_stained_glass":278,"minecraft:purple_terracotta":279,"minecraft:purple_wool":280,"minecraft:purpur_block":281,"minecraft:quartz_block":282,"minecraft:quartz_bricks":283,"minecraft:raw_copper_block":284,"minecraft:raw_gold_block":285,"minecraft:raw_iron_block":286,"minecraft:red_carpet":287,"minecraft:red_concrete":288,"minecraft:red_concrete_powder":289,"minecraft:red_mushroom":290,"minecraft:red_nether_bricks":291,"minecraft:red_sand":292,"minecraft:red_sandstone":293,"minecraft:red_stained_glass":294,"minecraft:red_terracotta":295,"minecraft:red_tulip":296,"minecraft:red_wool":297,"minecraft:redstone_block":298,"minecraft:reinforced_deepslate":299,"minecraft:rooted_dirt":300,"minecraft:sand":301,"minecraft:sandstone":302,"minecraft:sculk":303,"minecraft:sea_lantern":304,"minecraft:seagrass":305,"minecraft:short_grass":306,"minecraft:shroomlight":307,"minecraft:slime_block":308,"minecraft:smithing_table":309,"minecraft:smooth_basalt":310,"minecraft:smooth_quartz":311,"minecraft:smooth_red_sandstone":312,"minecraft:smooth_sandstone":313,"minecraft:smooth_stone":314,"minecraft:snow_block":315,"minecraft:soul_fire":316,"minecraft:soul_sand":317,"minecraft:soul_soil":318,"minecraft:soul_torch":319,"minecraft:spawner":320,"minecraft:sponge":321,"minecraft:spore_blossom":322,"minecraft:spruce_planks":323,"minecraft:stone":324,"minecraft:stone_bricks":325,"minecraft:structure_void":326,"minecraft:terracotta":327,"minecraft:tinted_glass":328,"minecraft:torch":329,"minecraft:torchflower":330,"minecraft:tube_coral_block":331,"minecraft:tuff":332,"minecraft:tuff_bricks":333,"minecraft:twisting_vines_plant":334,"minecraft:void_air":335,"minecraft:warped_fungus":336,"minecraft:warped_nylium":337,"minecraft:warped_planks":338,"minecraft:warped_roots":339,"minecraft:warped_wart_block":340,"minecraft:waxed_chiseled_copper":341,"minecraft:waxed_copper_block":342,"minecraft:waxed_cut_copper":343,"minecraft:waxed_exposed_chiseled_copper":344,"minecraft:waxed_exposed_copper":345,"minecraft:waxed_exposed_cut_copper":346,"minecraft:waxed_oxidized_chiseled_copper":347,"minecraft:waxed_oxidized_copper":348,"minecraft:waxed_oxidized_cut_copper":349,"minecraft:waxed_weathered_chiseled_copper":350,"minecraft:waxed_weathered_copper":351,"minecraft:waxed_weathered_cut_copper":352,"minecraft:weathered_chiseled_copper":353,"minecraft:weathered_copper":354,"minecraft:weathered_cut_copper":355,"minecraft:weeping_vines_plant":356,"minecraft:wet_sponge":357,"minecraft:white_carpet":358,"minecraft:white_concrete":359,"minecraft:white_concrete_powder":360,"minecraft:white_stained_glass":361,"minecraft:white_terracotta":362,"minecraft:white_tulip":363,"minecraft:white_wool":364,"minecraft:wither_rose":365,"minecraft:yellow_carpet":366,"minecraft:yellow_concrete":367,"minecraft:yellow_concrete_powder":368,"minecraft:yellow_stained_glass":369,"minecraft:yellow_terracotta":370,"minecraft:yellow_wool":371,"minecraft:acacia_button":372,"minecraft:bamboo_button":373,"minecraft:birch_button":374,"minecraft:cherry_button":375,"minecraft:crimson_button":376,"minecraft:dark_oak_button":377,"minecraft:jungle_button":378,"minecraft:lever":379,"minecraft:mangrove_button":380,"minecraft:oak_button":381,"minecraft:polished_blackstone_button":382,"minecraft:spruce_button":383,"minecraft:stone_button":384,"minecraft:warped_button":385,"minecraft:acacia_door":386,"minecraft:bamboo_door":387,"minecraft:birch_door":388,"minecraft:cherry_door":389,"minecraft:copper_door":390,"minecraft:crimson_door":391,"minecraft:dark_oak_door":392,"minecraft:exposed_copper_door":393,"minecraft:iron_door":394,"minecraft:jungle_door":395,"minecraft:mangrove_door":396,"minecraft:oak_door":397,"minecraft:oxidized_copper_door":398,"minecraft:spruce_door":399,"minecraft:warped_door":400,"minecraft:waxed_copper_door":401,"minecraft:waxed_exposed_copper_door":402,"minecraft:waxed_oxidized_copper_door":403,"minecraft:waxed_weathered_copper_door":404,"minecraft:weathered_copper_door":405,"minecraft:acacia_fence":406,"minecraft:bamboo_fence":407,"minecraft:birch_fence":408,"minecraft:black_stained_glass_pane":409,"minecraft:blue_stained_glass_pane":410,"minecraft:brown_stained_glass_pane":411,"minecraft:cherry_fence":412,"minecraft:crimson_fence":413,"minecraft:cyan_stained_glass_pane":414,"minecraft:dark_oak_fence":415,"minecraft:glass_pane":416,"minecraft:gray_stained_glass_pane":417,"minecraft:green_stained_glass_pane":418,"minecraft:iron_bars":419,"minecraft:jungle_fence":420,"minecraft:light_blue_stained_glass_pane":421,"minecraft:light_gray_stained_glass_pane":422,"minecraft:lime_stained_glass_pane":423,"minecraft:magenta_stained_glass_pane":424,"minecraft:mangrove_fence":425,"minecraft:nether_brick_fence":426,"minecraft:oak_fence":427,"minecraft:orange_stained_glass_pane":428,"minecraft:pink_stained_glass_pane":429,"minecraft:purple_stained_glass_pane":430,"minecraft:red_stained_glass_pane":431,"minecraft:spruce_fence":432,"minecraft:warped_fence":433,"minecraft:white_stained_glass_pane":434,"minecraft:yellow_stained_glass_pane":435,"minecraft:acacia_fence_gate":436,"minecraft:bamboo_fence_gate":437,"minecraft:birch_fence_gate":438,"minecraft:cherry_fence_gate":439,"minecraft:crimson_fence_gate":440,"minecraft:dark_oak_fence_gate":441,"minecraft:jungle_fence_gate":442,"minecraft:mangrove_fence_gate":443,"minecraft:oak_fence_gate":444,"minecraft:spruce_fence_gate":445,"minecraft:warped_fence_gate":446,"minecraft:acacia_hanging_sign":447,"minecraft:bamboo_hanging_sign":448,"minecraft:birch_hanging_sign":449,"minecraft:cherry_hanging_sign":450,"minecraft:crimson_hanging_sign":451,"minecraft:dark_oak_hanging_sign":452,"minecraft:jungle_hanging_sign":453,"minecraft:mangrove_hanging_sign":454,"minecraft:oak_hanging_sign":455,"minecraft:spruce_hanging_sign":456,"minecraft:warped_hanging_sign":457,"minecraft:acacia_leaves":458,"minecraft:azalea_leaves":459,"minecraft:birch_leaves":460,"minecraft:cherry_leaves":461,"minecraft:dark_oak_leaves":462,"minecraft:flowering_azalea_leaves":463,"minecraft:jungle_leaves":464,"minecraft:mangrove_leaves":465,"minecraft:oak_leaves":466,"minecraft:spruce_leaves":467,"minecraft:acacia_log":468,"minecraft:acacia_wood":469,"minecraft:bamboo_block":470,"minecraft:basalt":471,"minecraft:birch_log":472,"minecraft:birch_wood":473,"minecraft:bone_block":474,"minecraft:cherry_log":475,"minecraft:cherry_wood":476,"minecraft:crimson_hyphae":477,"minecraft:crimson_stem":478,"minecraft:dark_oak_log":479,"minecraft:dark_oak_wood":480,"minecraft:deepslate":481,"minecraft:hay_block":482,"minecraft:infested_deepslate":483,"minecraft:jungle_log":484,"minecraft:jungle_wood":485,"minecraft:mangrove_log":486,"minecraft:mangrove_wood":487,"minecraft:muddy_mangrove_roots":488,"minecraft:oak_log":489,"minecraft:oak_wood":490,"minecraft:ochre_froglight":491,"minecraft:pearlescent_froglight":492,"minecraft:polished_basalt":493,"minecraft:purpur_pillar":494,"minecraft:quartz_pillar":495,"minecraft:spruce_log":496,"minecraft:spruce_wood":497,"minecraft:stripped_acacia_log":498,"minecraft:stripped_acacia_wood":499,"minecraft:stripped_bamboo_block":500,"minecraft:stripped_birch_log":501,"minecraft:stripped_birch_wood":502,"minecraft:stripped_cherry_log":503,"minecraft:stripped_cherry_wood":504,"minecraft:stripped_crimson_hyphae":505,"minecraft:stripped_crimson_stem":506,"minecraft:stripped_dark_oak_log":507,"minecraft:stripped_dark_oak_wood":508,"minecraft:stripped_jungle_log":509,"minecraft:stripped_jungle_wood":510,"minecraft:stripped_mangrove_log":511,"minecraft:stripped_mangrove_wood":512,"minecraft:stripped_oak_log":513,"minecraft:stripped_oak_wood":514,"minecraft:stripped_spruce_log":515,"minecraft:stripped_spruce_wood":516,"minecraft:stripped_warped_hyphae":517,"minecraft:stripped_warped_stem":518,"minecraft:verdant_froglight":519,"minecraft:warped_hyphae":520,"minecraft:warped_stem":521,"minecraft:acacia_pressure_plate":522,"minecraft:bamboo_pressure_plate":523,"minecraft:birch_pressure_plate":524,"minecraft:cherry_pressure_plate":525,"minecraft:crimson_pressure_plate":526,"minecraft:dark_oak_pressure_plate":527,"minecraft:jungle_pressure_plate":528,"minecraft:mangrove_pressure_plate":529,"minecraft:oak_pressure_plate":530,"minecraft:polished_blackstone_pressure_plate":531,"minecraft:spruce_pressure_plate":532,"minecraft:stone_pressure_plate":533,"minecraft:warped_pressure_plate":534,"minecraft:acacia_sapling":535,"minecraft:birch_sapling":536,"minecraft:cherry_sapling":537,"minecraft:dark_oak_sapling":538,"minecraft:jungle_sapling":539,"minecraft:oak_sapling":540,"minecraft:spruce_sapling":541,"minecraft:acacia_sign":542,"minecraft:bamboo_sign":543,"minecraft:birch_sign":544,"minecraft:cherry_sign":545,"minecraft:crimson_sign":546,"minecraft:dark_oak_sign":547,"minecraft:jungle_sign":548,"minecraft:mangrove_sign":549,"minecraft:oak_sign":550,"minecraft:spruce_sign":551,"minecraft:warped_sign":552,"minecraft:acacia_slab":553,"minecraft:andesite_slab":554,"minecraft:bamboo_mosaic_slab":555,"minecraft:bamboo_slab":556,"minecraft:birch_slab":557,"minecraft:blackstone_slab":558,"minecraft:brick_slab":559,"minecraft:cherry_slab":560,"minecraft:cobbled_deepslate_slab":561,"minecraft:cobblestone_slab":562,"minecraft:crimson_slab":563,"minecraft:cut_copper_slab":564,"minecraft:cut_red_sandstone_slab":565,"minecraft:cut_sandstone_slab":566,"minecraft:dark_oak_slab":567,"minecraft:dark_prismarine_slab":568,"minecraft:deepslate_brick_slab":569,"minecraft:deepslate_tile_slab":570,"minecraft:diorite_slab":571,"minecraft:end_stone_brick_slab":572,"minecraft:exposed_cut_copper_slab":573,"minecraft:granite_slab":574,"minecraft:jungle_slab":575,"minecraft:mangrove_slab":576,"minecraft:mossy_cobblestone_slab":577,"minecraft:mossy_stone_brick_slab":578,"minecraft:mud_brick_slab":579,"minecraft:nether_brick_slab":580,"minecraft:oak_slab":581,"minecraft:oxidized_cut_copper_slab":582,"minecraft:petrified_oak_slab":583,"minecraft:polished_andesite_slab":584,"minecraft:polished_blackstone_brick_slab":585,"minecraft:polished_blackstone_slab":586,"minecraft:polished_deepslate_slab":587,"minecraft:polished_diorite_slab":588,"minecraft:polished_granite_slab":589,"minecraft:polished_tuff_slab":590,"minecraft:prismarine_brick_slab":591,"minecraft:prismarine_slab":592,"minecraft:purpur_slab":593,"minecraft:quartz_slab":594,"minecraft:red_nether_brick_slab":595,"minecraft:red_sandstone_slab":596,"minecraft:sandstone_slab":597,"minecraft:smooth_quartz_slab":598,"minecraft:smooth_red_sandstone_slab":599,"minecraft:smooth_sandstone_slab":600,"minecraft:smooth_stone_slab":601,"minecraft:spruce_slab":602,"minecraft:stone_brick_slab":603,"minecraft:stone_slab":604,"minecraft:tuff_brick_slab":605,"minecraft:tuff_slab":606,"minecraft:warped_slab":607,"minecraft:waxed_cut_copper_slab":608,"minecraft:waxed_exposed_cut_copper_slab":609,"minecraft:waxed_oxidized_cut_copper_slab":610,"minecraft:waxed_weathered_cut_copper_slab":611,"minecraft:weathered_cut_copper_slab":612,"minecraft:acacia_stairs":613,"minecraft:andesite_stairs":614,"minecraft:bamboo_mosaic_stairs":615,"minecraft:bamboo_stairs":616,"minecraft:birch_stairs":617,"minecraft:blackstone_stairs":618,"minecraft:brick_stairs":619,"minecraft:cherry_stairs":620,"minecraft:cobbled_deepslate_stairs":621,"minecraft:cobblestone_stairs":622,"minecraft:crimson_stairs":623,"minecraft:cut_copper_stairs":624,"minecraft:dark_oak_stairs":625,"minecraft:dark_prismarine_stairs":626,"minecraft:deepslate_brick_stairs":627,"minecraft:deepslate_tile_stairs":628,"minecraft:diorite_stairs":629,"minecraft:end_stone_brick_stairs":630,"minecraft:exposed_cut_copper_stairs":631,"minecraft:granite_stairs":632,"minecraft:jungle_stairs":633,"minecraft:mangrove_stairs":634,"minecraft:mossy_cobblestone_stairs":635,"minecraft:mossy_stone_brick_stairs":636,"minecraft:mud_brick_stairs":637,"minecraft:nether_brick_stairs":638,"minecraft:oak_stairs":639,"minecraft:oxidized_cut_copper_stairs":640,"minecraft:polished_andesite_stairs":641,"minecraft:polished_blackstone_brick_stairs":642,"minecraft:polished_blackstone_stairs":643,"minecraft:polished_deepslate_stairs":644,"minecraft:polished_diorite_stairs":645,"minecraft:polished_granite_stairs":646,"minecraft:polished_tuff_stairs":647,"minecraft:prismarine_brick_stairs":648,"minecraft:prismarine_stairs":649,"minecraft:purpur_stairs":650,"minecraft:quartz_stairs":651,"minecraft:red_nether_brick_stairs":652,"minecraft:red_sandstone_stairs":653,"minecraft:sandstone_stairs":654,"minecraft:smooth_quartz_stairs":655,"minecraft:smooth_red_sandstone_stairs":656,"minecraft:smooth_sandstone_stairs":657,"minecraft:spruce_stairs":658,"minecraft:stone_brick_stairs":659,"minecraft:stone_stairs":660,"minecraft:tuff_brick_stairs":661,"minecraft:tuff_stairs":662,"minecraft:warped_stairs":663,"minecraft:waxed_cut_copper_stairs":664,"minecraft:waxed_exposed_cut_copper_stairs":665,"minecraft:waxed_oxidized_cut_copper_stairs":666,"minecraft:waxed_weathered_cut_copper_stairs":667,"minecraft:weathered_cut_copper_stairs":668,"minecraft:acacia_trapdoor":669,"minecraft:bamboo_trapdoor":670,"minecraft:birch_trapdoor":671,"minecraft:cherry_trapdoor":672,"minecraft:copper_trapdoor":673,"minecraft:crimson_trapdoor":674,"minecraft:dark_oak_trapdoor":675,"minecraft:exposed_copper_trapdoor":676,"minecraft:iron_trapdoor":677,"minecraft:jungle_trapdoor":678,"minecraft:mangrove_trapdoor":679,"minecraft:oak_trapdoor":680,"minecraft:oxidized_copper_trapdoor":681,"minecraft:spruce_trapdoor":682,"minecraft:warped_trapdoor":683,"minecraft:waxed_copper_trapdoor":684,"minecraft:waxed_exposed_copper_trapdoor":685,"minecraft:waxed_oxidized_copper_trapdoor":686,"minecraft:waxed_weathered_copper_trapdoor":687,"minecraft:weathered_copper_trapdoor":688,"minecraft:acacia_wall_hanging_sign":689,"minecraft:acacia_wall_sign":690,"minecraft:bamboo_wall_hanging_sign":691,"minecraft:bamboo_wall_sign":692,"minecraft:big_dripleaf_stem":693,"minecraft:birch_wall_hanging_sign":694,"minecraft:birch_wall_sign":695,"minecraft:cherry_wall_hanging_sign":696,"minecraft:cherry_wall_sign":697,"minecraft:crimson_wall_hanging_sign":698,"minecraft:crimson_wall_sign":699,"minecraft:dark_oak_wall_hanging_sign":700,"minecraft:dark_oak_wall_sign":701,"minecraft:ender_chest":702,"minecraft:jungle_wall_hanging_sign":703,"minecraft:jungle_wall_sign":704,"minecraft:ladder":705,"minecraft:mangrove_wall_hanging_sign":706,"minecraft:mangrove_wall_sign":707,"minecraft:oak_wall_hanging_sign":708,"minecraft:oak_wall_sign":709,"minecraft:spruce_wall_hanging_sign":710,"minecraft:spruce_wall_sign":711,"minecraft:warped_wall_hanging_sign":712,"minecraft:warped_wall_sign":713,"minecraft:activator_rail":714,"minecraft:detector_rail":715,"minecraft:powered_rail":716,"minecraft:amethyst_cluster":717,"minecraft:large_amethyst_bud":718,"minecraft:medium_amethyst_bud":719,"minecraft:small_amethyst_bud":720,"minecraft:andesite_wall":721,"minecraft:blackstone_wall":722,"minecraft:brick_wall":723,"minecraft:cobbled_deepslate_wall":724,"minecraft:cobblestone_wall":725,"minecraft:deepslate_brick_wall":726,"minecraft:deepslate_tile_wall":727,"minecraft:diorite_wall":728,"minecraft:end_stone_brick_wall":729,"minecraft:granite_wall":730,"minecraft:mossy_cobblestone_wall":731,"minecraft:mossy_stone_brick_wall":732,"minecraft:mud_brick_wall":733,"minecraft:nether_brick_wall":734,"minecraft:polished_blackstone_brick_wall":735,"minecraft:polished_blackstone_wall":736,"minecraft:polished_deepslate_wall":737,"minecraft:polished_tuff_wall":738,"minecraft:prismarine_wall":739,"minecraft:red_nether_brick_wall":740,"minecraft:red_sandstone_wall":741,"minecraft:sandstone_wall":742,"minecraft:stone_brick_wall":743,"minecraft:tuff_brick_wall":744,"minecraft:tuff_wall":745,"minecraft:anvil":746,"minecraft:attached_melon_stem":747,"minecraft:attached_pumpkin_stem":748,"minecraft:black_glazed_terracotta":749,"minecraft:black_wall_banner":750,"minecraft:blue_glazed_terracotta":751,"minecraft:blue_wall_banner":752,"minecraft:brown_glazed_terracotta":753,"minecraft:brown_wall_banner":754,"minecraft:carved_pumpkin":755,"minecraft:chipped_anvil":756,"minecraft:cyan_glazed_terracotta":757,"minecraft:cyan_wall_banner":758,"minecraft:damaged_anvil":759,"minecraft:gray_glazed_terracotta":760,"minecraft:gray_wall_banner":761,"minecraft:green_glazed_terracotta":762,"minecraft:green_wall_banner":763,"minecraft:jack_o_lantern":764,"minecraft:light_blue_glazed_terracotta":765,"minecraft:light_blue_wall_banner":766,"minecraft:light_gray_glazed_terracotta":767,"minecraft:light_gray_wall_banner":768,"minecraft:lime_glazed_terracotta":769,"minecraft:lime_wall_banner":770,"minecraft:loom":771,"minecraft:magenta_glazed_terracotta":772,"minecraft:magenta_wall_banner":773,"minecraft:orange_glazed_terracotta":774,"minecraft:orange_wall_banner":775,"minecraft:pink_glazed_terracotta":776,"minecraft:pink_wall_banner":777,"minecraft:purple_glazed_terracotta":778,"minecraft:purple_wall_banner":779,"minecraft:red_glazed_terracotta":780,"minecraft:red_wall_banner":781,"minecraft:soul_wall_torch":782,"minecraft:stonecutter":783,"minecraft:wall_torch":784,"minecraft:white_glazed_terracotta":785,"minecraft:white_wall_banner":786,"minecraft:yellow_glazed_terracotta":787,"minecraft:yellow_wall_banner":788,"minecraft:bamboo":789,"minecraft:barrel":790,"minecraft:barrier":791,"minecraft:copper_grate":792,"minecraft:exposed_copper_grate":793,"minecraft:hanging_roots":794,"minecraft:heavy_core":795,"minecraft:mangrove_roots":796,"minecraft:oxidized_copper_grate":797,"minecraft:waxed_copper_grate":798,"minecraft:waxed_exposed_copper_grate":799,"minecraft:waxed_oxidized_copper_grate":800,"minecraft:waxed_weathered_copper_grate":801,"minecraft:weathered_copper_grate":802,"minecraft:bee_nest":803,"minecraft:beehive":804,"minecraft:beetroots":805,"minecraft:frosted_ice":806,"minecraft:nether_wart":807,"minecraft:sweet_berry_bush":808,"minecraft:bell":809,"minecraft:big_dripleaf":810,"minecraft:black_banner":811,"minecraft:blue_banner":812,"minecraft:brown_banner":813,"minecraft:cyan_banner":814,"minecraft:gray_banner":815,"minecraft:green_banner":816,"minecraft:light_blue_banner":817,"minecraft:light_gray_banner":818,"minecraft:lime_banner":819,"minecraft:magenta_banner":820,"minecraft:orange_banner":821,"minecraft:pink_banner":822,"minecraft:purple_banner":823,"minecraft:red_banner":824,"minecraft:white_banner":825,"minecraft:yellow_banner":826,"minecraft:black_bed":827,"minecraft:blue_bed":828,"minecraft:brown_bed":829,"minecraft:cyan_bed":830,"minecraft:gray_bed":831,"minecraft:green_bed":832,"minecraft:light_blue_bed":833,"minecraft:light_gray_bed":834,"minecraft:lime_bed":835,"minecraft:magenta_bed":836,"minecraft:orange_bed":837,"minecraft:pink_bed":838,"minecraft:purple_bed":839,"minecraft:red_bed":840,"minecraft:white_bed":841,"minecraft:yellow_bed":842,"minecraft:black_candle":843,"minecraft:blue_candle":844,"minecraft:brown_candle":845,"minecraft:candle":846,"minecraft:cyan_candle":847,"minecraft:gray_candle":848,"minecraft:green_candle":849,"minecraft:light_blue_candle":850,"minecraft:light_gray_candle":851,"minecraft:lime_candle":852,"minecraft:magenta_candle":853,"minecraft:orange_candle":854,"minecraft:pink_candle":855,"minecraft:purple_candle":856,"minecraft:red_candle":857,"minecraft:white_candle":858,"minecraft:yellow_candle":859,"minecraft:black_candle_cake":860,"minecraft:blue_candle_cake":861,"minecraft:brown_candle_cake":862,"minecraft:candle_cake":863,"minecraft:cyan_candle_cake":864,"minecraft:deepslate_redstone_ore":865,"minecraft:gray_candle_cake":866,"minecraft:green_candle_cake":867,"minecraft:light_blue_candle_cake":868,"minecraft:light_gray_candle_cake":869,"minecraft:lime_candle_cake":870,"minecraft:magenta_candle_cake":871,"minecraft:orange_candle_cake":872,"minecraft:pink_candle_cake":873,"minecraft:purple_candle_cake":874,"minecraft:red_candle_cake":875,"minecraft:redstone_lamp":876,"minecraft:redstone_ore":877,"minecraft:white_candle_cake":878,"minecraft:yellow_candle_cake":879,"minecraft:black_shulker_box":880,"minecraft:blue_shulker_box":881,"minecraft:brown_shulker_box":882,"minecraft:cyan_shulker_box":883,"minecraft:end_rod":884,"minecraft:gray_shulker_box":885,"minecraft:green_shulker_box":886,"minecraft:light_blue_shulker_box":887,"minecraft:light_gray_shulker_box":888,"minecraft:lime_shulker_box":889,"minecraft:magenta_shulker_box":890,"minecraft:orange_shulker_box":891,"minecraft:pink_shulker_box":892,"minecraft:purple_shulker_box":893,"minecraft:red_shulker_box":894,"minecraft:shulker_box":895,"minecraft:white_shulker_box":896,"minecraft:yellow_shulker_box":897,"minecraft:blast_furnace":898,"minecraft:furnace":899,"minecraft:smoker":900,"minecraft:brain_coral":901,"minecraft:brain_coral_fan":902,"minecraft:bubble_coral":903,"minecraft:bubble_coral_fan":904,"minecraft:conduit":905,"minecraft:dead_brain_coral":906,"minecraft:dead_brain_coral_fan":907,"minecraft:dead_bubble_coral":908,"minecraft:dead_bubble_coral_fan":909,"minecraft:dead_fire_coral":910,"minecraft:dead_fire_coral_fan":911,"minecraft:dead_horn_coral":912,"minecraft:dead_horn_coral_fan":913,"minecraft:dead_tube_coral":914,"minecraft:dead_tube_coral_fan":915,"minecraft:fire_coral":916,"minecraft:fire_coral_fan":917,"minecraft:horn_coral":918,"minecraft:horn_coral_fan":919,"minecraft:tube_coral":920,"minecraft:tube_coral_fan":921,"minecraft:brain_coral_wall_fan":922,"minecraft:bubble_coral_wall_fan":923,"minecraft:dead_brain_coral_wall_fan":924,"minecraft:dead_bubble_coral_wall_fan":925,"minecraft:dead_fire_coral_wall_fan":926,"minecraft:dead_horn_coral_wall_fan":927,"minecraft:dead_tube_coral_wall_fan":928,"minecraft:fire_coral_wall_fan":929,"minecraft:horn_coral_wall_fan":930,"minecraft:tube_coral_wall_fan":931,"minecraft:brewing_stand":932,"minecraft:brown_mushroom_block":933,"minecraft:mushroom_stem":934,"minecraft:red_mushroom_block":935,"minecraft:bubble_column":936,"minecraft:cactus":937,"minecraft:sugar_cane":938,"minecraft:cake":939,"minecraft:calibrated_sculk_sensor":940,"minecraft:campfire":941,"minecraft:soul_campfire":942,"minecraft:carrots":943,"minecraft:melon_stem":944,"minecraft:potatoes":945,"minecraft:pumpkin_stem":946,"minecraft:wheat":947,"minecraft:cave_vines":948,"minecraft:cave_vines_plant":949,"minecraft:chain":950,"minecraft:chain_command_block":951,"minecraft:command_block":952,"minecraft:repeating_command_block":953,"minecraft:chest":954,"minecraft:trapped_chest":955,"minecraft:chiseled_bookshelf":956,"minecraft:chorus_flower":957,"minecraft:chorus_plant":958,"minecraft:cocoa":959,"minecraft:comparator":960,"minecraft:composter":961,"minecraft:copper_bulb":962,"minecraft:exposed_copper_bulb":963,"minecraft:oxidized_copper_bulb":964,"minecraft:waxed_copper_bulb":965,"minecraft:waxed_exposed_copper_bulb":966,"minecraft:waxed_oxidized_copper_bulb":967,"minecraft:waxed_weathered_copper_bulb":968,"minecraft:weathered_copper_bulb":969,"minecraft:crafter":970,"minecraft:creeper_head":971,"minecraft:dragon_head":972,"minecraft:piglin_head":973,"minecraft:player_head":974,"minecraft:skeleton_skull":975,"minecraft:wither_skeleton_skull":976,"minecraft:zombie_head":977,"minecraft:creeper_wall_head":978,"minecraft:dragon_wall_head":979,"minecraft:piglin_wall_head":980,"minecraft:player_wall_head":981,"minecraft:skeleton_wall_skull":982,"minecraft:wither_skeleton_wall_skull":983,"minecraft:zombie_wall_head":984,"minecraft:daylight_detector":985,"minecraft:decorated_pot":986,"minecraft:dispenser":987,"minecraft:dropper":988,"minecraft:end_portal_frame":989,"minecraft:farmland":990,"minecraft:fire":991,"minecraft:glow_lichen":992,"minecraft:sculk_vein":993,"minecraft:grass_block":994,"minecraft:mycelium":995,"minecraft:podzol":996,"minecraft:grindstone":997,"minecraft:heavy_weighted_pressure_plate":998,"minecraft:light_weighted_pressure_plate":999,"minecraft:target":1000,"minecraft:hopper":1001,"minecraft:jigsaw":1002,"minecraft:jukebox":1003,"minecraft:kelp":1004,"minecraft:twisting_vines":1005,"minecraft:weeping_vines":1006,"minecraft:lantern":1007,"minecraft:soul_lantern":1008,"minecraft:large_fern":1009,"minecraft:lilac":1010,"minecraft:peony":1011,"minecraft:pitcher_plant":1012,"minecraft:rose_bush":1013,"minecraft:sunflower":1014,"minecraft:tall_grass":1015,"minecraft:tall_seagrass":1016,"minecraft:lava":1017,"minecraft:water":1018,"minecraft:lectern":1019,"minecraft:light":1020,"minecraft:lightning_rod":1021,"minecraft:mangrove_propagule":1022,"minecraft:moving_piston":1023,"minecraft:nether_portal":1024,"minecraft:note_block":1025,"minecraft:observer":1026,"minecraft:pink_petals":1027,"minecraft:piston":1028,"minecraft:sticky_piston":1029,"minecraft:piston_head":1030,"minecraft:pitcher_crop":1031,"minecraft:pointed_dripstone":1032,"minecraft:powder_snow_cauldron":1033,"minecraft:water_cauldron":1034,"minecraft:rail":1035,"minecraft:redstone_torch":1036,"minecraft:redstone_wall_torch":1037,"minecraft:redstone_wire":1038,"minecraft:repeater":1039,"minecraft:respawn_anchor":1040,"minecraft:scaffolding":1041,"minecraft:sculk_catalyst":1042,"minecraft:sculk_sensor":1043,"minecraft:sculk_shrieker":1044,"minecraft:sea_pickle":1045,"minecraft:small_dripleaf":1046,"minecraft:sniffer_egg":1047,"minecraft:snow":1048,"minecraft:structure_block":1049,"minecraft:suspicious_gravel":1050,"minecraft:suspicious_sand":1051,"minecraft:tnt":1052,"minecraft:torchflower_crop":1053,"minecraft:trial_spawner":1054,"minecraft:tripwire":1055,"minecraft:tripwire_hook":1056,"minecraft:turtle_egg":1057,"minecraft:vault":1058,"minecraft:vine":1059,"acacia_planks":0,"air":1,"allium":2,"amethyst_block":3,"ancient_debris":4,"andesite":5,"azalea":6,"azure_bluet":7,"bamboo_mosaic":8,"bamboo_planks":9,"bamboo_sapling":10,"beacon":11,"bedrock":12,"birch_planks":13,"black_carpet":14,"black_concrete":15,"black_concrete_powder":16,"black_stained_glass":17,"black_terracotta":18,"black_wool":19,"blackstone":20,"blue_carpet":21,"blue_concrete":22,"blue_concrete_powder":23,"blue_ice":24,"blue_orchid":25,"blue_stained_glass":26,"blue_terracotta":27,"blue_wool":28,"bookshelf":29,"brain_coral_block":30,"bricks":31,"brown_carpet":32,"brown_concrete":33,"brown_concrete_powder":34,"brown_mushroom":35,"brown_stained_glass":36,"brown_terracotta":37,"brown_wool":38,"bubble_coral_block":39,"budding_amethyst":40,"calcite":41,"cartography_table":42,"cauldron":43,"cave_air":44,"cherry_planks":45,"chiseled_copper":46,"chiseled_deepslate":47,"chiseled_nether_bricks":48,"chiseled_polished_blackstone":49,"chiseled_quartz_block":50,"chiseled_red_sandstone":51,"chiseled_sandstone":52,"chiseled_stone_bricks":53,"chiseled_tuff":54,"chiseled_tuff_bricks":55,"clay":56,"coal_block":57,"coal_ore":58,"coarse_dirt":59,"cobbled_deepslate":60,"cobblestone":61,"cobweb":62,"copper_block":63,"copper_ore":64,"cornflower":65,"cracked_deepslate_bricks":66,"cracked_deepslate_tiles":67,"cracked_nether_bricks":68,"cracked_polished_blackstone_bricks":69,"cracked_stone_bricks":70,"crafting_table":71,"crimson_fungus":72,"crimson_nylium":73,"crimson_planks":74,"crimson_roots":75,"crying_obsidian":76,"cut_copper":77,"cut_red_sandstone":78,"cut_sandstone":79,"cyan_carpet":80,"cyan_concrete":81,"cyan_concrete_powder":82,"cyan_stained_glass":83,"cyan_terracotta":84,"cyan_wool":85,"dandelion":86,"dark_oak_planks":87,"dark_prismarine":88,"dead_brain_coral_block":89,"dead_bubble_coral_block":90,"dead_bush":91,"dead_fire_coral_block":92,"dead_horn_coral_block":93,"dead_tube_coral_block":94,"deepslate_bricks":95,"deepslate_coal_ore":96,"deepslate_copper_ore":97,"deepslate_diamond_ore":98,"deepslate_emerald_ore":99,"deepslate_gold_ore":100,"deepslate_iron_ore":101,"deepslate_lapis_ore":102,"deepslate_tiles":103,"diamond_block":104,"diamond_ore":105,"diorite":106,"dirt":107,"dirt_path":108,"dragon_egg":109,"dried_kelp_block":110,"dripstone_block":111,"emerald_block":112,"emerald_ore":113,"enchanting_table":114,"end_gateway":115,"end_portal":116,"end_stone":117,"end_stone_bricks":118,"exposed_chiseled_copper":119,"exposed_copper":120,"exposed_cut_copper":121,"fern":122,"fire_coral_block":123,"fletching_table":124,"flower_pot":125,"flowering_azalea":126,"frogspawn":127,"gilded_blackstone":128,"glass":129,"glowstone":130,"gold_block":131,"gold_ore":132,"granite":133,"gravel":134,"gray_carpet":135,"gray_concrete":136,"gray_concrete_powder":137,"gray_stained_glass":138,"gray_terracotta":139,"gray_wool":140,"green_carpet":141,"green_concrete":142,"green_concrete_powder":143,"green_stained_glass":144,"green_terracotta":145,"green_wool":146,"honey_block":147,"honeycomb_block":148,"horn_coral_block":149,"ice":150,"infested_chiseled_stone_bricks":151,"infested_cobblestone":152,"infested_cracked_stone_bricks":153,"infested_mossy_stone_bricks":154,"infested_stone":155,"infested_stone_bricks":156,"iron_block":157,"iron_ore":158,"jungle_planks":159,"kelp_plant":160,"lapis_block":161,"lapis_ore":162,"lava_cauldron":163,"light_blue_carpet":164,"light_blue_concrete":165,"light_blue_concrete_powder":166,"light_blue_stained_glass":167,"light_blue_terracotta":168,"light_blue_wool":169,"light_gray_carpet":170,"light_gray_concrete":171,"light_gray_concrete_powder":172,"light_gray_stained_glass":173,"light_gray_terracotta":174,"light_gray_wool":175,"lily_of_the_valley":176,"lily_pad":177,"lime_carpet":178,"lime_concrete":179,"lime_concrete_powder":180,"lime_stained_glass":181,"lime_terracotta":182,"lime_wool":183,"lodestone":184,"magenta_carpet":185,"magenta_concrete":186,"magenta_concrete_powder":187,"magenta_stained_glass":188,"magenta_terracotta":189,"magenta_wool":190,"magma_block":191,"mangrove_planks":192,"melon":193,"moss_block":194,"moss_carpet":195,"mossy_cobblestone":196,"mossy_stone_bricks":197,"mud":198,"mud_bricks":199,"nether_bricks":200,"nether_gold_ore":201,"nether_quartz_ore":202,"nether_sprouts":203,"nether_wart_block":204,"netherite_block":205,"netherrack":206,"oak_planks":207,"obsidian":208,"orange_carpet":209,"orange_concrete":210,"orange_concrete_powder":211,"orange_stained_glass":212,"orange_terracotta":213,"orange_tulip":214,"orange_wool":215,"oxeye_daisy":216,"oxidized_chiseled_copper":217,"oxidized_copper":218,"oxidized_cut_copper":219,"packed_ice":220,"packed_mud":221,"pink_carpet":222,"pink_concrete":223,"pink_concrete_powder":224,"pink_stained_glass":225,"pink_terracotta":226,"pink_tulip":227,"pink_wool":228,"polished_andesite":229,"polished_blackstone":230,"polished_blackstone_bricks":231,"polished_deepslate":232,"polished_diorite":233,"polished_granite":234,"polished_tuff":235,"poppy":236,"potted_acacia_sapling":237,"potted_allium":238,"potted_azalea_bush":239,"potted_azure_bluet":240,"potted_bamboo":241,"potted_birch_sapling":242,"potted_blue_orchid":243,"potted_brown_mushroom":244,"potted_cactus":245,"potted_cherry_sapling":246,"potted_cornflower":247,"potted_crimson_fungus":248,"potted_crimson_roots":249,"potted_dandelion":250,"potted_dark_oak_sapling":251,"potted_dead_bush":252,"potted_fern":253,"potted_flowering_azalea_bush":254,"potted_jungle_sapling":255,"potted_lily_of_the_valley":256,"potted_mangrove_propagule":257,"potted_oak_sapling":258,"potted_orange_tulip":259,"potted_oxeye_daisy":260,"potted_pink_tulip":261,"potted_poppy":262,"potted_red_mushroom":263,"potted_red_tulip":264,"potted_spruce_sapling":265,"potted_torchflower":266,"potted_warped_fungus":267,"potted_warped_roots":268,"potted_white_tulip":269,"potted_wither_rose":270,"powder_snow":271,"prismarine":272,"prismarine_bricks":273,"pumpkin":274,"purple_carpet":275,"purple_concrete":276,"purple_concrete_powder":277,"purple_stained_glass":278,"purple_terracotta":279,"purple_wool":280,"purpur_block":281,"quartz_block":282,"quartz_bricks":283,"raw_copper_block":284,"raw_gold_block":285,"raw_iron_block":286,"red_carpet":287,"red_concrete":288,"red_concrete_powder":289,"red_mushroom":290,"red_nether_bricks":291,"red_sand":292,"red_sandstone":293,"red_stained_glass":294,"red_terracotta":295,"red_tulip":296,"red_wool":297,"redstone_block":298,"reinforced_deepslate":299,"rooted_dirt":300,"sand":301,"sandstone":302,"sculk":303,"sea_lantern":304,"seagrass":305,"short_grass":306,"shroomlight":307,"slime_block":308,"smithing_table":309,"smooth_basalt":310,"smooth_quartz":311,"smooth_red_sandstone":312,"smooth_sandstone":313,"smooth_stone":314,"snow_block":315,"soul_fire":316,"soul_sand":317,"soul_soil":318,"soul_torch":319,"spawner":320,"sponge":321,"spore_blossom":322,"spruce_planks":323,"stone":324,"stone_bricks":325,"structure_void":326,"terracotta":327,"tinted_glass":328,"torch":329,"torchflower":330,"tube_coral_block":331,"tuff":332,"tuff_bricks":333,"twisting_vines_plant":334,"void_air":335,"warped_fungus":336,"warped_nylium":337,"warped_planks":338,"warped_roots":339,"warped_wart_block":340,"waxed_chiseled_copper":341,"waxed_copper_block":342,"waxed_cut_copper":343,"waxed_exposed_chiseled_copper":344,"waxed_exposed_copper":345,"waxed_exposed_cut_copper":346,"waxed_oxidized_chiseled_copper":347,"waxed_oxidized_copper":348,"waxed_oxidized_cut_copper":349,"waxed_weathered_chiseled_copper":350,"waxed_weathered_copper":351,"waxed_weathered_cut_copper":352,"weathered_chiseled_copper":353,"weathered_copper":354,"weathered_cut_copper":355,"weeping_vines_plant":356,"wet_sponge":357,"white_carpet":358,"white_concrete":359,"white_concrete_powder":360,"white_stained_glass":361,"white_terracotta":362,"white_tulip":363,"white_wool":364,"wither_rose":365,"yellow_carpet":366,"yellow_concrete":367,"yellow_concrete_powder":368,"yellow_stained_glass":369,"yellow_terracotta":370,"yellow_wool":371,"acacia_button":372,"bamboo_button":373,"birch_button":374,"cherry_button":375,"crimson_button":376,"dark_oak_button":377,"jungle_button":378,"lever":379,"mangrove_button":380,"oak_button":381,"polished_blackstone_button":382,"spruce_button":383,"stone_button":384,"warped_button":385,"acacia_door":386,"bamboo_door":387,"birch_door":388,"cherry_door":389,"copper_door":390,"crimson_door":391,"dark_oak_door":392,"exposed_copper_door":393,"iron_door":394,"jungle_door":395,"mangrove_door":396,"oak_door":397,"oxidized_copper_door":398,"spruce_door":399,"warped_door":400,"waxed_copper_door":401,"waxed_exposed_copper_door":402,"waxed_oxidized_copper_door":403,"waxed_weathered_copper_door":404,"weathered_copper_door":405,"acacia_fence":406,"bamboo_fence":407,"birch_fence":408,"black_stained_glass_pane":409,"blue_stained_glass_pane":410,"brown_stained_glass_pane":411,"cherry_fence":412,"crimson_fence":413,"cyan_stained_glass_pane":414,"dark_oak_fence":415,"glass_pane":416,"gray_stained_glass_pane":417,"green_stained_glass_pane":418,"iron_bars":419,"jungle_fence":420,"light_blue_stained_glass_pane":421,"light_gray_stained_glass_pane":422,"lime_stained_glass_pane":423,"magenta_stained_glass_pane":424,"mangrove_fence":425,"nether_brick_fence":426,"oak_fence":427,"orange_stained_glass_pane":428,"pink_stained_glass_pane":429,"purple_stained_glass_pane":430,"red_stained_glass_pane":431,"spruce_fence":432,"warped_fence":433,"white_stained_glass_pane":434,"yellow_stained_glass_pane":435,"acacia_fence_gate":436,"bamboo_fence_gate":437,"birch_fence_gate":438,"cherry_fence_gate":439,"crimson_fence_gate":440,"dark_oak_fence_gate":441,"jungle_fence_gate":442,"mangrove_fence_gate":443,"oak_fence_gate":444,"spruce_fence_gate":445,"warped_fence_gate":446,"acacia_hanging_sign":447,"bamboo_hanging_sign":448,"birch_hanging_sign":449,"cherry_hanging_sign":450,"crimson_hanging_sign":451,"dark_oak_hanging_sign":452,"jungle_hanging_sign":453,"mangrove_hanging_sign":454,"oak_hanging_sign":455,"spruce_hanging_sign":456,"warped_hanging_sign":457,"acacia_leaves":458,"azalea_leaves":459,"birch_leaves":460,"cherry_leaves":461,"dark_oak_leaves":462,"flowering_azalea_leaves":463,"jungle_leaves":464,"mangrove_leaves":465,"oak_leaves":466,"spruce_leaves":467,"acacia_log":468,"acacia_wood":469,"bamboo_block":470,"basalt":471,"birch_log":472,"birch_wood":473,"bone_block":474,"cherry_log":475,"cherry_wood":476,"crimson_hyphae":477,"crimson_stem":478,"dark_oak_log":479,"dark_oak_wood":480,"deepslate":481,"hay_block":482,"infested_deepslate":483,"jungle_log":484,"jungle_wood":485,"mangrove_log":486,"mangrove_wood":487,"muddy_mangrove_roots":488,"oak_log":489,"oak_wood":490,"ochre_froglight":491,"pearlescent_froglight":492,"polished_basalt":493,"purpur_pillar":494,"quartz_pillar":495,"spruce_log":496,"spruce_wood":497,"stripped_acacia_log":498,"stripped_acacia_wood":499,"stripped_bamboo_block":500,"stripped_birch_log":501,"stripped_birch_wood":502,"stripped_cherry_log":503,"stripped_cherry_wood":504,"stripped_crimson_hyphae":505,"stripped_crimson_stem":506,"stripped_dark_oak_log":507,"stripped_dark_oak_wood":508,"stripped_jungle_log":509,"stripped_jungle_wood":510,"stripped_mangrove_log":511,"stripped_mangrove_wood":512,"stripped_oak_log":513,"stripped_oak_wood":514,"stripped_spruce_log":515,"stripped_spruce_wood":516,"stripped_warped_hyphae":517,"stripped_warped_stem":518,"verdant_froglight":519,"warped_hyphae":520,"warped_stem":521,"acacia_pressure_plate":522,"bamboo_pressure_plate":523,"birch_pressure_plate":524,"cherry_pressure_plate":525,"crimson_pressure_plate":526,"dark_oak_pressure_plate":527,"jungle_pressure_plate":528,"mangrove_pressure_plate":529,"oak_pressure_plate":530,"polished_blackstone_pressure_plate":531,"spruce_pressure_plate":532,"stone_pressure_plate":533,"warped_pressure_plate":534,"acacia_sapling":535,"birch_sapling":536,"cherry_sapling":537,"dark_oak_sapling":538,"jungle_sapling":539,"oak_sapling":540,"spruce_sapling":541,"acacia_sign":542,"bamboo_sign":543,"birch_sign":544,"cherry_sign":545,"crimson_sign":546,"dark_oak_sign":547,"jungle_sign":548,"mangrove_sign":549,"oak_sign":550,"spruce_sign":551,"warped_sign":552,"acacia_slab":553,"andesite_slab":554,"bamboo_mosaic_slab":555,"bamboo_slab":556,"birch_slab":557,"blackstone_slab":558,"brick_slab":559,"cherry_slab":560,"cobbled_deepslate_slab":561,"cobblestone_slab":562,"crimson_slab":563,"cut_copper_slab":564,"cut_red_sandstone_slab":565,"cut_sandstone_slab":566,"dark_oak_slab":567,"dark_prismarine_slab":568,"deepslate_brick_slab":569,"deepslate_tile_slab":570,"diorite_slab":571,"end_stone_brick_slab":572,"exposed_cut_copper_slab":573,"granite_slab":574,"jungle_slab":575,"mangrove_slab":576,"mossy_cobblestone_slab":577,"mossy_stone_brick_slab":578,"mud_brick_slab":579,"nether_brick_slab":580,"oak_slab":581,"oxidized_cut_copper_slab":582,"petrified_oak_slab":583,"polished_andesite_slab":584,"polished_blackstone_brick_slab":585,"polished_blackstone_slab":586,"polished_deepslate_slab":587,"polished_diorite_slab":588,"polished_granite_slab":589,"polished_tuff_slab":590,"prismarine_brick_slab":591,"prismarine_slab":592,"purpur_slab":593,"quartz_slab":594,"red_nether_brick_slab":595,"red_sandstone_slab":596,"sandstone_slab":597,"smooth_quartz_slab":598,"smooth_red_sandstone_slab":599,"smooth_sandstone_slab":600,"smooth_stone_slab":601,"spruce_slab":602,"stone_brick_slab":603,"stone_slab":604,"tuff_brick_slab":605,"tuff_slab":606,"warped_slab":607,"waxed_cut_copper_slab":608,"waxed_exposed_cut_copper_slab":609,"waxed_oxidized_cut_copper_slab":610,"waxed_weathered_cut_copper_slab":611,"weathered_cut_copper_slab":612,"acacia_stairs":613,"andesite_stairs":614,"bamboo_mosaic_stairs":615,"bamboo_stairs":616,"birch_stairs":617,"blackstone_stairs":618,"brick_stairs":619,"cherry_stairs":620,"cobbled_deepslate_stairs":621,"cobblestone_stairs":622,"crimson_stairs":623,"cut_copper_stairs":624,"dark_oak_stairs":625,"dark_prismarine_stairs":626,"deepslate_brick_stairs":627,"deepslate_tile_stairs":628,"diorite_stairs":629,"end_stone_brick_stairs":630,"exposed_cut_copper_stairs":631,"granite_stairs":632,"jungle_stairs":633,"mangrove_stairs":634,"mossy_cobblestone_stairs":635,"mossy_stone_brick_stairs":636,"mud_brick_stairs":637,"nether_brick_stairs":638,"oak_stairs":639,"oxidized_cut_copper_stairs":640,"polished_andesite_stairs":641,"polished_blackstone_brick_stairs":642,"polished_blackstone_stairs":643,"polished_deepslate_stairs":644,"polished_diorite_stairs":645,"polished_granite_stairs":646,"polished_tuff_stairs":647,"prismarine_brick_stairs":648,"prismarine_stairs":649,"purpur_stairs":650,"quartz_stairs":651,"red_nether_brick_stairs":652,"red_sandstone_stairs":653,"sandstone_stairs":654,"smooth_quartz_stairs":655,"smooth_red_sandstone_stairs":656,"smooth_sandstone_stairs":657,"spruce_stairs":658,"stone_brick_stairs":659,"stone_stairs":660,"tuff_brick_stairs":661,"tuff_stairs":662,"warped_stairs":663,"waxed_cut_copper_stairs":664,"waxed_exposed_cut_copper_stairs":665,"waxed_oxidized_cut_copper_stairs":666,"waxed_weathered_cut_copper_stairs":667,"weathered_cut_copper_stairs":668,"acacia_trapdoor":669,"bamboo_trapdoor":670,"birch_trapdoor":671,"cherry_trapdoor":672,"copper_trapdoor":673,"crimson_trapdoor":674,"dark_oak_trapdoor":675,"exposed_copper_trapdoor":676,"iron_trapdoor":677,"jungle_trapdoor":678,"mangrove_trapdoor":679,"oak_trapdoor":680,"oxidized_copper_trapdoor":681,"spruce_trapdoor":682,"warped_trapdoor":683,"waxed_copper_trapdoor":684,"waxed_exposed_copper_trapdoor":685,"waxed_oxidized_copper_trapdoor":686,"waxed_weathered_copper_trapdoor":687,"weathered_copper_trapdoor":688,"acacia_wall_hanging_sign":689,"acacia_wall_sign":690,"bamboo_wall_hanging_sign":691,"bamboo_wall_sign":692,"big_dripleaf_stem":693,"birch_wall_hanging_sign":694,"birch_wall_sign":695,"cherry_wall_hanging_sign":696,"cherry_wall_sign":697,"crimson_wall_hanging_sign":698,"crimson_wall_sign":699,"dark_oak_wall_hanging_sign":700,"dark_oak_wall_sign":701,"ender_chest":702,"jungle_wall_hanging_sign":703,"jungle_wall_sign":704,"ladder":705,"mangrove_wall_hanging_sign":706,"mangrove_wall_sign":707,"oak_wall_hanging_sign":708,"oak_wall_sign":709,"spruce_wall_hanging_sign":710,"spruce_wall_sign":711,"warped_wall_hanging_sign":712,"warped_wall_sign":713,"activator_rail":714,"detector_rail":715,"powered_rail":716,"amethyst_cluster":717,"large_amethyst_bud":718,"medium_amethyst_bud":719,"small_amethyst_bud":720,"andesite_wall":721,"blackstone_wall":722,"brick_wall":723,"cobbled_deepslate_wall":724,"cobblestone_wall":725,"deepslate_brick_wall":726,"deepslate_tile_wall":727,"diorite_wall":728,"end_stone_brick_wall":729,"granite_wall":730,"mossy_cobblestone_wall":731,"mossy_stone_brick_wall":732,"mud_brick_wall":733,"nether_brick_wall":734,"polished_blackstone_brick_wall":735,"polished_blackstone_wall":736,"polished_deepslate_wall":737,"polished_tuff_wall":738,"prismarine_wall":739,"red_nether_brick_wall":740,"red_sandstone_wall":741,"sandstone_wall":742,"stone_brick_wall":743,"tuff_brick_wall":744,"tuff_wall":745,"anvil":746,"attached_melon_stem":747,"attached_pumpkin_stem":748,"black_glazed_terracotta":749,"black_wall_banner":750,"blue_glazed_terracotta":751,"blue_wall_banner":752,"brown_glazed_terracotta":753,"brown_wall_banner":754,"carved_pumpkin":755,"chipped_anvil":756,"cyan_glazed_terracotta":757,"cyan_wall_banner":758,"damaged_anvil":759,"gray_glazed_terracotta":760,"gray_wall_banner":761,"green_glazed_terracotta":762,"green_wall_banner":763,"jack_o_lantern":764,"light_blue_glazed_terracotta":765,"light_blue_wall_banner":766,"light_gray_glazed_terracotta":767,"light_gray_wall_banner":768,"lime_glazed_terracotta":769,"lime_wall_banner":770,"loom":771,"magenta_glazed_terracotta":772,"magenta_wall_banner":773,"orange_glazed_terracotta":774,"orange_wall_banner":775,"pink_glazed_terracotta":776,"pink_wall_banner":777,"purple_glazed_terracotta":778,"purple_wall_banner":779,"red_glazed_terracotta":780,"red_wall_banner":781,"soul_wall_torch":782,"stonecutter":783,"wall_torch":784,"white_glazed_terracotta":785,"white_wall_banner":786,"yellow_glazed_terracotta":787,"yellow_wall_banner":788,"bamboo":789,"barrel":790,"barrier":791,"copper_grate":792,"exposed_copper_grate":793,"hanging_roots":794,"heavy_core":795,"mangrove_roots":796,"oxidized_copper_grate":797,"waxed_copper_grate":798,"waxed_exposed_copper_grate":799,"waxed_oxidized_copper_grate":800,"waxed_weathered_copper_grate":801,"weathered_copper_grate":802,"bee_nest":803,"beehive":804,"beetroots":805,"frosted_ice":806,"nether_wart":807,"sweet_berry_bush":808,"bell":809,"big_dripleaf":810,"black_banner":811,"blue_banner":812,"brown_banner":813,"cyan_banner":814,"gray_banner":815,"green_banner":816,"light_blue_banner":817,"light_gray_banner":818,"lime_banner":819,"magenta_banner":820,"orange_banner":821,"pink_banner":822,"purple_banner":823,"red_banner":824,"white_banner":825,"yellow_banner":826,"black_bed":827,"blue_bed":828,"brown_bed":829,"cyan_bed":830,"gray_bed":831,"green_bed":832,"light_blue_bed":833,"light_gray_bed":834,"lime_bed":835,"magenta_bed":836,"orange_bed":837,"pink_bed":838,"purple_bed":839,"red_bed":840,"white_bed":841,"yellow_bed":842,"black_candle":843,"blue_candle":844,"brown_candle":845,"candle":846,"cyan_candle":847,"gray_candle":848,"green_candle":849,"light_blue_candle":850,"light_gray_candle":851,"lime_candle":852,"magenta_candle":853,"orange_candle":854,"pink_candle":855,"purple_candle":856,"red_candle":857,"white_candle":858,"yellow_candle":859,"black_candle_cake":860,"blue_candle_cake":861,"brown_candle_cake":862,"candle_cake":863,"cyan_candle_cake":864,"deepslate_redstone_ore":865,"gray_candle_cake":866,"green_candle_cake":867,"light_blue_candle_cake":868,"light_gray_candle_cake":869,"lime_candle_cake":870,"magenta_candle_cake":871,"orange_candle_cake":872,"pink_candle_cake":873,"purple_candle_cake":874,"red_candle_cake":875,"redstone_lamp":876,"redstone_ore":877,"white_candle_cake":878,"yellow_candle_cake":879,"black_shulker_box":880,"blue_shulker_box":881,"brown_shulker_box":882,"cyan_shulker_box":883,"end_rod":884,"gray_shulker_box":885,"green_shulker_box":886,"light_blue_shulker_box":887,"light_gray_shulker_box":888,"lime_shulker_box":889,"magenta_shulker_box":890,"orange_shulker_box":891,"pink_shulker_box":892,"purple_shulker_box":893,"red_shulker_box":894,"shulker_box":895,"white_shulker_box":896,"yellow_shulker_box":897,"blast_furnace":898,"furnace":899,"smoker":900,"brain_coral":901,"brain_coral_fan":902,"bubble_coral":903,"bubble_coral_fan":904,"conduit":905,"dead_brain_coral":906,"dead_brain_coral_fan":907,"dead_bubble_coral":908,"dead_bubble_coral_fan":909,"dead_fire_coral":910,"dead_fire_coral_fan":911,"dead_horn_coral":912,"dead_horn_coral_fan":913,"dead_tube_coral":914,"dead_tube_coral_fan":915,"fire_coral":916,"fire_coral_fan":917,"horn_coral":918,"horn_coral_fan":919,"tube_coral":920,"tube_coral_fan":921,"brain_coral_wall_fan":922,"bubble_coral_wall_fan":923,"dead_brain_coral_wall_fan":924,"dead_bubble_coral_wall_fan":925,"dead_fire_coral_wall_fan":926,"dead_horn_coral_wall_fan":927,"dead_tube_coral_wall_fan":928,"fire_coral_wall_fan":929,"horn_coral_wall_fan":930,"tube_coral_wall_fan":931,"brewing_stand":932,"brown_mushroom_block":933,"mushroom_stem":934,"red_mushroom_block":935,"bubble_column":936,"cactus":937,"sugar_cane":938,"cake":939,"calibrated_sculk_sensor":940,"campfire":941,"soul_campfire":942,"carrots":943,"melon_stem":944,"potatoes":945,"pumpkin_stem":946,"wheat":947,"cave_vines":948,"cave_vines_plant":949,"chain":950,"chain_command_block":951,"command_block":952,"repeating_command_block":953,"chest":954,"trapped_chest":955,"chiseled_bookshelf":956,"chorus_flower":957,"chorus_plant":958,"cocoa":959,"comparator":960,"composter":961,"copper_bulb":962,"exposed_copper_bulb":963,"oxidized_copper_bulb":964,"waxed_copper_bulb":965,"waxed_exposed_copper_bulb":966,"waxed_oxidized_copper_bulb":967,"waxed_weathered_copper_bulb":968,"weathered_copper_bulb":969,"crafter":970,"creeper_head":971,"dragon_head":972,"piglin_head":973,"player_head":974,"skeleton_skull":975,"wither_skeleton_skull":976,"zombie_head":977,"creeper_wall_head":978,"dragon_wall_head":979,"piglin_wall_head":980,"player_wall_head":981,"skeleton_wall_skull":982,"wither_skeleton_wall_skull":983,"zombie_wall_head":984,"daylight_detector":985,"decorated_pot":986,"dispenser":987,"dropper":988,"end_portal_frame":989,"farmland":990,"fire":991,"glow_lichen":992,"sculk_vein":993,"grass_block":994,"mycelium":995,"podzol":996,"grindstone":997,"heavy_weighted_pressure_plate":998,"light_weighted_pressure_plate":999,"target":1000,"hopper":1001,"jigsaw":1002,"jukebox":1003,"kelp":1004,"twisting_vines":1005,"weeping_vines":1006,"lantern":1007,"soul_lantern":1008,"large_fern":1009,"lilac":1010,"peony":1011,"pitcher_plant":1012,"rose_bush":1013,"sunflower":1014,"tall_grass":1015,"tall_seagrass":1016,"lava":1017,"water":1018,"lectern":1019,"light":1020,"lightning_rod":1021,"mangrove_propagule":1022,"moving_piston":1023,"nether_portal":1024,"note_block":1025,"observer":1026,"pink_petals":1027,"piston":1028,"sticky_piston":1029,"piston_head":1030,"pitcher_crop":1031,"pointed_dripstone":1032,"powder_snow_cauldron":1033,"water_cauldron":1034,"rail":1035,"redstone_torch":1036,"redstone_wall_torch":1037,"redstone_wire":1038,"repeater":1039,"respawn_anchor":1040,"scaffolding":1041,"sculk_catalyst":1042,"sculk_sensor":1043,"sculk_shrieker":1044,"sea_pickle":1045,"small_dripleaf":1046,"sniffer_egg":1047,"snow":1048,"structure_block":1049,"suspicious_gravel":1050,"suspicious_sand":1051,"tnt":1052,"torchflower_crop":1053,"trial_spawner":1054,"tripwire":1055,"tripwire_hook":1056,"turtle_egg":1057,"vault":1058,"vine":1059}
diff --git a/datapacks/Bookshelf/data/bs.block/function/lookup/lookup_item.mcfunction b/datapacks/Bookshelf/data/bs.block/function/lookup/lookup_item.mcfunction
index 7a6a3b7d4b..104184c585 100644
--- a/datapacks/Bookshelf/data/bs.block/function/lookup/lookup_item.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/lookup/lookup_item.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type
+# ------------------------------------------------------------------------------------------------------------
$execute store success score #success bs.data store result storage bs:ctx y int 1 run data get storage bs:const block.items."$(item)"
execute if score #success bs.data matches 1 run function bs.block:get/lookup with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.block/function/lookup/lookup_type.mcfunction b/datapacks/Bookshelf/data/bs.block/function/lookup/lookup_type.mcfunction
index 44d703587f..0aa81e756b 100644
--- a/datapacks/Bookshelf/data/bs.block/function/lookup/lookup_type.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/lookup/lookup_type.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 27/02/2024 (1.20.4)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type
+# ------------------------------------------------------------------------------------------------------------
$execute store success score #success bs.data store result storage bs:ctx y int 1 run data get storage bs:const block.types."$(type)"
execute if score #success bs.data matches 1 run function bs.block:get/lookup with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.block/function/match/check.mcfunction b/datapacks/Bookshelf/data/bs.block/function/match/check.mcfunction
index aad3b7247a..b2d7621e4e 100644
--- a/datapacks/Bookshelf/data/bs.block/function/match/check.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/match/check.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$return run execute if block ~ ~ ~ $(block)
diff --git a/datapacks/Bookshelf/data/bs.block/function/match/match.mcfunction b/datapacks/Bookshelf/data/bs.block/function/match/match.mcfunction
index 8defa677db..bd20e5a5da 100644
--- a/datapacks/Bookshelf/data/bs.block/function/match/match.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/match/match.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#match
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#match
+# ------------------------------------------------------------------------------------------------------------
return run function bs.block:match/check with storage bs:in block.match
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/fill_block.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/fill_block.mcfunction
index 10b1c354f2..b9ae65e3bd 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/fill_block.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/fill_block.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#fill
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#fill
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:data block.process set from storage bs:in block.fill_block
execute unless data storage bs:data block.process.mode run data modify storage bs:data block.process.mode set value "replace"
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/init.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/init.mcfunction
index a3da8d8dfc..c67b1e5bae 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/init.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/init.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute positioned $(x) $(y) $(z) run function bs.block:process/fill_block/recurse/next with storage bs:data block.process
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/next.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/next.mcfunction
index 07131b005e..16100d9ab2 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/next.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/next.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute if score #block.i bs.data matches 0 run return run function bs.block:process/fill_block/recurse/queue
$execute $(mask)run setblock ~ ~ ~ $(block) $(mode)
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/queue.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/queue.mcfunction
index 9b16c12c46..c12e50696c 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/queue.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/queue.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result storage bs:data block.process.x int 1 run scoreboard players get #block.x bs.data
execute store result storage bs:data block.process.y int 1 run scoreboard players get #block.y bs.data
execute store result storage bs:data block.process.z int 1 run scoreboard players get #block.z bs.data
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/resume.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/resume.mcfunction
index 1a8d08e1c2..20af0ed68c 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/resume.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/resume.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data block.fill_block[].unqueue set value 1b
function bs.block:process/fill_block/recurse/unqueue
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/unqueue.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/unqueue.mcfunction
index 269fd3b76e..89d0abd6d9 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/unqueue.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_block/recurse/unqueue.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data block.process set from storage bs:data block.fill_block[0]
data remove storage bs:data block.process.unqueue
data remove storage bs:data block.fill_block[0]
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/fill_type.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/fill_type.mcfunction
index 6a8d241d20..e11adc4512 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/fill_type.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/fill_type.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#fill
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#fill
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:data block.process set from storage bs:in block.fill_type
execute unless data storage bs:data block.process.mode run data modify storage bs:data block.process.mode set value "replace"
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/init.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/init.mcfunction
index b4136e97ca..3973d980cc 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/init.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/init.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute positioned $(x) $(y) $(z) run function bs.block:process/fill_type/recurse/next with storage bs:data block.process
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/next.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/next.mcfunction
index b92b41eaf4..a699cc18d7 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/next.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/next.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute if score #block.i bs.data matches 0 run return run function bs.block:process/fill_type/recurse/queue
function bs.block:get/get_block
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/queue.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/queue.mcfunction
index b5b1edbecf..ea23eaabba 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/queue.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/queue.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result storage bs:data block.process.x int 1 run scoreboard players get #block.x bs.data
execute store result storage bs:data block.process.y int 1 run scoreboard players get #block.y bs.data
execute store result storage bs:data block.process.z int 1 run scoreboard players get #block.z bs.data
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/resume.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/resume.mcfunction
index 745e7fc29a..bb67c02168 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/resume.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/resume.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data block.fill_type[].unqueue set value 1b
function bs.block:process/fill_type/recurse/unqueue
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/unqueue.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/unqueue.mcfunction
index 0cc5df65c8..b5c38264ed 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/unqueue.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/fill_type/recurse/unqueue.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data block.process set from storage bs:data block.fill_type[0]
data remove storage bs:data block.process.unqueue
data remove storage bs:data block.fill_type[0]
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/masks/compile.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/masks/compile.mcfunction
index bca03e5c5e..fffe4161ac 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/masks/compile.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/masks/compile.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data block.process.mask set value {x:0,y:0,z:0,negate:0b,cmd:""}
data modify storage bs:data block.process.mask merge from storage bs:data block.process.masks[-1]
execute if data storage bs:data block.process.mask.block run function bs.block:process/masks/loop with storage bs:data block.process.mask
diff --git a/datapacks/Bookshelf/data/bs.block/function/process/masks/loop.mcfunction b/datapacks/Bookshelf/data/bs.block/function/process/masks/loop.mcfunction
index c3ff1b50ae..481a4b44bc 100644
--- a/datapacks/Bookshelf/data/bs.block/function/process/masks/loop.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/process/masks/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute if data storage bs:data block.process.mask{negate:0b} run data modify storage bs:data block.process.mask.cmd set value "if block ~$(x) ~$(y) ~$(z) $(block) $(cmd)"
$execute if data storage bs:data block.process.mask{negate:1b} run data modify storage bs:data block.process.mask.cmd set value "unless block ~$(x) ~$(y) ~$(z) $(block) $(cmd)"
diff --git a/datapacks/Bookshelf/data/bs.block/function/set/run.mcfunction b/datapacks/Bookshelf/data/bs.block/function/set/run.mcfunction
index 704504dcda..b3281f3aaa 100644
--- a/datapacks/Bookshelf/data/bs.block/function/set/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/set/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$return run setblock ~ ~ ~ $(block) $(mode)
diff --git a/datapacks/Bookshelf/data/bs.block/function/set/set_block.mcfunction b/datapacks/Bookshelf/data/bs.block/function/set/set_block.mcfunction
index cc93cf8814..40e6ec8d66 100644
--- a/datapacks/Bookshelf/data/bs.block/function/set/set_block.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/set/set_block.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#set
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#set
+# ------------------------------------------------------------------------------------------------------------
execute unless data storage bs:in block.set_block.mode run data modify storage bs:in block.set_block.mode set value "replace"
return run function bs.block:set/run with storage bs:in block.set_block
diff --git a/datapacks/Bookshelf/data/bs.block/function/set/set_type.mcfunction b/datapacks/Bookshelf/data/bs.block/function/set/set_type.mcfunction
index 821bc3e431..2e8d0aebd1 100644
--- a/datapacks/Bookshelf/data/bs.block/function/set/set_type.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/set/set_type.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#set
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#set
+# ------------------------------------------------------------------------------------------------------------
execute unless data storage bs:in block.set_type.mode run data modify storage bs:in block.set_type.mode set value "replace"
function bs.block:get/get_block
diff --git a/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/run.mcfunction b/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/run.mcfunction
index c363217a76..c53312d89c 100644
--- a/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$summon minecraft:block_display ~ ~ ~ $(_)
diff --git a/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/spawn_block_display.mcfunction b/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/spawn_block_display.mcfunction
index 48d0e8461f..97c6ac0361 100644
--- a/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/spawn_block_display.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/spawn_block_display.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:ctx _ set value {}
data modify storage bs:ctx _ set from storage bs:in block.spawn_block_display.extra_nbt
diff --git a/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/spawn_solid_block_display.mcfunction b/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/spawn_solid_block_display.mcfunction
index 0c594b337b..32565080cf 100644
--- a/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/spawn_solid_block_display.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/spawn/block_display/spawn_solid_block_display.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:ctx _ set value {transformation:[1f,0f,0f,-0.5f,0f,1f,0f,0f,0f,0f,1f,-0.5f,0f,0f,0f,1f],Passengers:[{id:"minecraft:shulker",active_effects:[{id:"invisibility",Amplifier:1b,duration:-1,show_particles:0b}],AttachFace:0b,Invulnerable:1b,NoAI:1b,NoGravity:1b,PersistenceRequired:1b,Silent:1b}]}
data modify storage bs:ctx _ merge from storage bs:in block.spawn_solid_block_display.extra_nbt
diff --git a/datapacks/Bookshelf/data/bs.block/function/spawn/falling_block/run.mcfunction b/datapacks/Bookshelf/data/bs.block/function/spawn/falling_block/run.mcfunction
index ec8578eb02..ea199807d1 100644
--- a/datapacks/Bookshelf/data/bs.block/function/spawn/falling_block/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/spawn/falling_block/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$summon minecraft:falling_block ~ ~ ~ $(_)
diff --git a/datapacks/Bookshelf/data/bs.block/function/spawn/falling_block/spawn_falling_block.mcfunction b/datapacks/Bookshelf/data/bs.block/function/spawn/falling_block/spawn_falling_block.mcfunction
index cc00d9a721..ad4e5054d7 100644
--- a/datapacks/Bookshelf/data/bs.block/function/spawn/falling_block/spawn_falling_block.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/spawn/falling_block/spawn_falling_block.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:ctx _ set value {}
data modify storage bs:ctx _ set from storage bs:in block.spawn_falling_block.extra_nbt
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/keep_properties/keep_properties.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/keep_properties/keep_properties.mcfunction
index 518fbf4b4d..fe355cc517 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/keep_properties/keep_properties.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/keep_properties/keep_properties.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value $(properties)
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/keep_properties/loop.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/keep_properties/loop.mcfunction
index 4f3e8e8654..d19fa9a9c6 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/keep_properties/loop.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/keep_properties/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# copy _ options to ctx if the property name is valid
$execute store success score #success bs.data run data modify storage bs:ctx _[-1].o set from storage bs:out block._[{n:$(name)}].o
# if no option is selected, choose the first one
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/merge_properties/loop.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/merge_properties/loop.mcfunction
index d8ecd11da0..f493f4a585 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/merge_properties/loop.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/merge_properties/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:ctx _.out[{n:$(name)}] set from storage bs:out block._[{n:$(name)}]
data remove storage bs:ctx _.in[-1]
function bs.block:transform/merge_properties/loop with storage bs:ctx _.in[-1]
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/merge_properties/merge_properties.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/merge_properties/merge_properties.mcfunction
index c0f660ca4b..484368b4ef 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/merge_properties/merge_properties.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/merge_properties/merge_properties.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value {in:$(properties)}
data modify storage bs:ctx _.out set from storage bs:out block._
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/remove_properties/loop.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/remove_properties/loop.mcfunction
index 2c786e4d6e..36ae1b53db 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/remove_properties/loop.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/remove_properties/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data remove storage bs:out block._[{n:$(name)}].o[].c
data remove storage bs:ctx _[-1]
function bs.block:transform/remove_properties/loop with storage bs:ctx _[-1]
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/remove_properties/remove_properties.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/remove_properties/remove_properties.mcfunction
index 84c03ee088..15123e8511 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/remove_properties/remove_properties.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/remove_properties/remove_properties.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value $(properties)
function bs.block:transform/remove_properties/loop with storage bs:ctx _[-1]
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/find_set.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/find_set.mcfunction
index 5f9d9f4aba..1cff5978bb 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/find_set.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/find_set.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$return run data get storage bs:ctx _[{type:"$(type)"}].set
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/replace_intersect.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/replace_intersect.mcfunction
index 26028ddf5f..f80e1f9cb2 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/replace_intersect.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/replace_intersect.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$function bs.block:transform/replace_type with storage bs:ctx _[{id:$(x),set:$(y)}]
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/replace_mapped_type.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/replace_mapped_type.mcfunction
index aecf480228..ec63eb6f56 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/replace_mapped_type.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/replace_mapped_type.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 11/05/2024 (1.20.6)
-# Last modification: 11/05/2024 (1.20.6)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx x int 1 store success score #success bs.data run data get storage bs:ctx _[{type:"$(type)"}].id
execute if score #success bs.data matches 0 run return fail
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/with_mapping_set.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/with_mapping_set.mcfunction
index b6ccad5c10..5b832ced02 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/with_mapping_set.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/replace_mapped_type/with_mapping_set.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:ctx _ set from storage bs:const block.mapping_sets.$(mapping_set)
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/replace_properties/loop.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/replace_properties/loop.mcfunction
index 9631053393..c1e0728cb9 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/replace_properties/loop.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/replace_properties/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data remove storage bs:out block._[{n:$(name)}].o[].c
$execute if data storage bs:out block._[{n:$(name)}].o[{v:$(value)}] run data modify storage bs:out block._[{n:$(name)}].o[{v:$(value)}].c set value 1b
data remove storage bs:ctx _[-1]
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/replace_properties/replace_properties.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/replace_properties/replace_properties.mcfunction
index 7a2e457a7f..4ea3f1b536 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/replace_properties/replace_properties.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/replace_properties/replace_properties.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value $(properties)
function bs.block:transform/replace_properties/loop with storage bs:ctx _[-1]
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/replace_type.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/replace_type.mcfunction
index 8142c48a00..24818b53ab 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/replace_type.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/replace_type.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 15/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:ctx _ set from storage bs:out block
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/loop.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/loop.mcfunction
index 36174b8316..174d794eb5 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/loop.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# copy _ options to ctx if the property name is valid
$execute store success score #success bs.data run data modify storage bs:ctx _[-1].o set from storage bs:out block._[{n:$(name)}].o
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/select.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/select.mcfunction
index ca38d9432d..6ae210c76f 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/select.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/select.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data remove storage bs:ctx _[-1].o[].c
$data modify storage bs:ctx _[-1].o[$(y)].c set value 1b
diff --git a/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/shift_properties.mcfunction b/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/shift_properties.mcfunction
index 01b34efcff..50aaaf1ef8 100644
--- a/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/shift_properties.mcfunction
+++ b/datapacks/Bookshelf/data/bs.block/function/transform/shift_properties/shift_properties.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.0
-# Created: 15/01/2024 (1.20.4)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value $(properties)
function bs.block:transform/shift_properties/loop with storage bs:ctx _[-1]
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/fill_block.json b/datapacks/Bookshelf/data/bs.block/tags/function/fill_block.json
index 6df6fa5ef4..a5c828e161 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/fill_block.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/fill_block.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#fill",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:process/fill_block/fill_block"
]
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/fill_type.json b/datapacks/Bookshelf/data/bs.block/tags/function/fill_type.json
index 627293b427..f219522516 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/fill_type.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/fill_type.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#fill",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:process/fill_type/fill_type"
]
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/get_block.json b/datapacks/Bookshelf/data/bs.block/tags/function/get_block.json
index 71fa2da426..8baa6d8ab0 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/get_block.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/get_block.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#get",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:get/get_block",
"bs.block:get/compile/block"
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/get_type.json b/datapacks/Bookshelf/data/bs.block/tags/function/get_type.json
index 8d3b8ce989..883e9272ef 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/get_type.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/get_type.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#get",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:get/get_type",
"bs.block:get/compile/type"
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/help.json b/datapacks/Bookshelf/data/bs.block/tags/function/help.json
index 897bc79a8e..8feee03dcf 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/keep_properties.json b/datapacks/Bookshelf/data/bs.block/tags/function/keep_properties.json
index 03602d8983..7a6c18daa8 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/keep_properties.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/keep_properties.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:transform/keep_properties/keep_properties",
"bs.block:get/compile/block"
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/load.json b/datapacks/Bookshelf/data/bs.block/tags/function/load.json
index 1664ea8ba1..e8ebfe89b0 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/lookup_item.json b/datapacks/Bookshelf/data/bs.block/tags/function/lookup_item.json
index e7107cc5f8..7eb0f22c24 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/lookup_item.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/lookup_item.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:lookup/lookup_item",
"bs.block:get/compile/block"
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/lookup_type.json b/datapacks/Bookshelf/data/bs.block/tags/function/lookup_type.json
index e7ca9f3e43..51c2642fae 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/lookup_type.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/lookup_type.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:lookup/lookup_type",
"bs.block:get/compile/type"
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/match.json b/datapacks/Bookshelf/data/bs.block/tags/function/match.json
index c3e5403097..59bedf5223 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/match.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/match.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#match",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:match/match"
]
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/merge_properties.json b/datapacks/Bookshelf/data/bs.block/tags/function/merge_properties.json
index fb354337d5..6a03063b54 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/merge_properties.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/merge_properties.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:transform/merge_properties/merge_properties",
"bs.block:get/compile/block"
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/remove_properties.json b/datapacks/Bookshelf/data/bs.block/tags/function/remove_properties.json
index ef690b2730..9b75979270 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/remove_properties.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/remove_properties.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:transform/remove_properties/remove_properties",
"bs.block:get/compile/block"
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/replace_mapped_type.json b/datapacks/Bookshelf/data/bs.block/tags/function/replace_mapped_type.json
index 83087cafe1..d06f9d55fb 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/replace_mapped_type.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/replace_mapped_type.json
@@ -1,4 +1,22 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome"
+ ],
+ "contributors": [
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/05/25",
+ "minecraft_version": "1.20.6"
+ },
+ "updated": {
+ "date": "2024/05/25",
+ "minecraft_version": "1.20.6"
+ }
+ },
"values": [
"bs.block:transform/replace_mapped_type/with_mapping_set",
"bs.block:transform/replace_mapped_type/replace_mapped_type"
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/replace_properties.json b/datapacks/Bookshelf/data/bs.block/tags/function/replace_properties.json
index 09ecf12677..a69fdf3bcf 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/replace_properties.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/replace_properties.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:transform/replace_properties/replace_properties",
"bs.block:get/compile/block"
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/replace_type.json b/datapacks/Bookshelf/data/bs.block/tags/function/replace_type.json
index 7ba886e645..4aaa0bbc73 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/replace_type.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/replace_type.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:transform/replace_type",
"bs.block:get/compile/block"
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/set_block.json b/datapacks/Bookshelf/data/bs.block/tags/function/set_block.json
index 808ce35fec..a9c0e20732 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/set_block.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/set_block.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#set",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:set/set_block"
]
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/set_type.json b/datapacks/Bookshelf/data/bs.block/tags/function/set_type.json
index 5aebb2723d..05ab046aac 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/set_type.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/set_type.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#set",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:set/set_type"
]
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/shift_properties.json b/datapacks/Bookshelf/data/bs.block/tags/function/shift_properties.json
index c975a8dd5f..37a9fee5d6 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/shift_properties.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/shift_properties.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:transform/shift_properties/shift_properties",
"bs.block:get/compile/block"
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/spawn_block_display.json b/datapacks/Bookshelf/data/bs.block/tags/function/spawn_block_display.json
index 2f5a33faf3..af7a2e16d3 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/spawn_block_display.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/spawn_block_display.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:spawn/block_display/spawn_block_display"
]
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/spawn_falling_block.json b/datapacks/Bookshelf/data/bs.block/tags/function/spawn_falling_block.json
index 00d2f2bd8d..8aabc90867 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/spawn_falling_block.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/spawn_falling_block.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:spawn/falling_block/spawn_falling_block"
]
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/spawn_solid_block_display.json b/datapacks/Bookshelf/data/bs.block/tags/function/spawn_solid_block_display.json
index c8b0bfb546..42eb557ba3 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/spawn_solid_block_display.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/spawn_solid_block_display.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:spawn/block_display/spawn_solid_block_display"
]
diff --git a/datapacks/Bookshelf/data/bs.block/tags/function/unload.json b/datapacks/Bookshelf/data/bs.block/tags/function/unload.json
index fe995ddb3c..d02c7ccc51 100644
--- a/datapacks/Bookshelf/data/bs.block/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.block/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.block:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.color/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.color/.metadata/generated/features.json
new file mode 100644
index 0000000000..10a9105d54
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.color/.metadata/generated/features.json
@@ -0,0 +1,143 @@
+[
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "hex_to_int",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-biome",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/04/22",
+ "version": "1.20.5"
+ },
+ "updated": {
+ "date": "2024/04/22",
+ "version": "1.20.5"
+ }
+ },
+ {
+ "name": "hex_to_rgb",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-rgb",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "int_to_hex",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-hex",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "int_to_rgb",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-rgb",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2019/08/12",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2023/10/22",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "rgb_to_hex",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-hex",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "rgb_to_int",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-int",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2019/08/12",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2023/10/22",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.color/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.color/.metadata/generated/module.json
new file mode 100644
index 0000000000..f650b192f2
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.color/.metadata/generated/module.json
@@ -0,0 +1,24 @@
+{
+ "name": "bs.color",
+ "display_name": "Color",
+ "description": "Facilitate color conversion between various formats.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "features": [
+ "bs.color:help",
+ "bs.color:hex_to_int",
+ "bs.color:hex_to_rgb",
+ "bs.color:int_to_hex",
+ "bs.color:int_to_rgb",
+ "bs.color:load",
+ "bs.color:rgb_to_hex",
+ "bs.color:rgb_to_int",
+ "bs.color:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.color/.metadata/module.json b/datapacks/Bookshelf/data/bs.color/.metadata/module.json
new file mode 100644
index 0000000000..d2f6ca24e8
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.color/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.color",
+ "display_name": "Color",
+ "description": "Facilitate color conversion between various formats.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.color/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.color/function/__help__.mcfunction
index 23113e4e0d..c08639a368 100644
--- a/datapacks/Bookshelf/data/bs.color/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.color documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.color/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.color/function/__load__.mcfunction
index 4fdc1d45a5..1b311f1237 100644
--- a/datapacks/Bookshelf/data/bs.color/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives add bs.out dummy [{"text":"BS ","color":"dark_gray"},{"text":"Output","color":"aqua"}]
scoreboard objectives add bs.data dummy [{"text":"BS ","color":"dark_gray"},{"text":"Data","color":"aqua"}]
diff --git a/datapacks/Bookshelf/data/bs.color/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.color/function/__unload__.mcfunction
index 6b41f97de8..05e03d7b28 100644
--- a/datapacks/Bookshelf/data/bs.color/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives remove bs.out
scoreboard objectives remove bs.data
diff --git a/datapacks/Bookshelf/data/bs.color/function/hex_to_int/convert_hexes.mcfunction b/datapacks/Bookshelf/data/bs.color/function/hex_to_int/convert_hexes.mcfunction
index 305f0284fc..c8e3cdf6be 100644
--- a/datapacks/Bookshelf/data/bs.color/function/hex_to_int/convert_hexes.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/hex_to_int/convert_hexes.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store result score $color.hex_to_int bs.out run data get storage bs:const color.hex_values.$(z)
$execute store result score #result bs.data run data get storage bs:const color.hex_values.$(y)
scoreboard players operation #result bs.data *= 256 bs.const
diff --git a/datapacks/Bookshelf/data/bs.color/function/hex_to_int/hex_to_int.mcfunction b/datapacks/Bookshelf/data/bs.color/function/hex_to_int/hex_to_int.mcfunction
index 698aeace68..80ee8d120b 100644
--- a/datapacks/Bookshelf/data/bs.color/function/hex_to_int/hex_to_int.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/hex_to_int/hex_to_int.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 20/01/2024 (1.20.4)
-# Last modification: 20/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-int
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-int
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value '$(color)'
data modify storage bs:ctx x set string storage bs:ctx _ 1 3
diff --git a/datapacks/Bookshelf/data/bs.color/function/hex_to_rgb/convert_hexes.mcfunction b/datapacks/Bookshelf/data/bs.color/function/hex_to_rgb/convert_hexes.mcfunction
index b1aaff5b1a..e943ce5600 100644
--- a/datapacks/Bookshelf/data/bs.color/function/hex_to_rgb/convert_hexes.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/hex_to_rgb/convert_hexes.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store result storage bs:out color.hex_to_rgb[0] int 1 store result score $color.hex_to_rgb.r bs.out run data get storage bs:const color.hex_values.$(x)
$execute store result storage bs:out color.hex_to_rgb[1] int 1 store result score $color.hex_to_rgb.g bs.out run data get storage bs:const color.hex_values.$(y)
$execute store result storage bs:out color.hex_to_rgb[2] int 1 store result score $color.hex_to_rgb.b bs.out run data get storage bs:const color.hex_values.$(z)
diff --git a/datapacks/Bookshelf/data/bs.color/function/hex_to_rgb/hex_to_rgb.mcfunction b/datapacks/Bookshelf/data/bs.color/function/hex_to_rgb/hex_to_rgb.mcfunction
index c348a08cfe..b528c118d3 100644
--- a/datapacks/Bookshelf/data/bs.color/function/hex_to_rgb/hex_to_rgb.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/hex_to_rgb/hex_to_rgb.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 20/01/2024 (1.20.4)
-# Last modification: 20/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-rgb
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-rgb
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value '$(color)'
data modify storage bs:ctx x set string storage bs:ctx _ 1 3
diff --git a/datapacks/Bookshelf/data/bs.color/function/int_to_hex/concat_hexes.mcfunction b/datapacks/Bookshelf/data/bs.color/function/int_to_hex/concat_hexes.mcfunction
index 1608c6f0c6..558a5e1259 100644
--- a/datapacks/Bookshelf/data/bs.color/function/int_to_hex/concat_hexes.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/int_to_hex/concat_hexes.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:out color.int_to_hex set value "#$(r)$(g)$(b)"
diff --git a/datapacks/Bookshelf/data/bs.color/function/int_to_hex/get_hexes.mcfunction b/datapacks/Bookshelf/data/bs.color/function/int_to_hex/get_hexes.mcfunction
index 38e088516f..b1aeee2dc9 100644
--- a/datapacks/Bookshelf/data/bs.color/function/int_to_hex/get_hexes.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/int_to_hex/get_hexes.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:ctx _ set value {r:"",g:"",b:""}
$data modify storage bs:ctx _.r set from storage bs:const color.hex_chars[$(x)]
$data modify storage bs:ctx _.g set from storage bs:const color.hex_chars[$(y)]
diff --git a/datapacks/Bookshelf/data/bs.color/function/int_to_hex/int_to_hex.mcfunction b/datapacks/Bookshelf/data/bs.color/function/int_to_hex/int_to_hex.mcfunction
index 9cf5b96fb8..ad3e8b2acf 100644
--- a/datapacks/Bookshelf/data/bs.color/function/int_to_hex/int_to_hex.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/int_to_hex/int_to_hex.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 20/01/2024 (1.20.4)
-# Last modification: 20/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-hex
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-hex
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players set #color.int_to_hex bs.data $(color)
diff --git a/datapacks/Bookshelf/data/bs.color/function/int_to_rgb.mcfunction b/datapacks/Bookshelf/data/bs.color/function/int_to_rgb.mcfunction
index 86de9c712a..b1aa28ef93 100644
--- a/datapacks/Bookshelf/data/bs.color/function/int_to_rgb.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/int_to_rgb.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: theogiraudet
-# Contributors: Aksiome
-
-# Version: 2.0
-# Created: ??/??/???? (1.14)
-# Last modification: 22/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-rgb
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-rgb
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players set #color.int_to_rgb bs.data $(color)
diff --git a/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/concat_hexes.mcfunction b/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/concat_hexes.mcfunction
index 56b06d59e7..28b0713e19 100644
--- a/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/concat_hexes.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/concat_hexes.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:out color.rgb_to_hex set value "#$(r)$(g)$(b)"
diff --git a/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/get_hexes.mcfunction b/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/get_hexes.mcfunction
index e97d65a3b5..17672d0814 100644
--- a/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/get_hexes.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/get_hexes.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:ctx _.r set from storage bs:const color.hex_chars[$(x)]
$data modify storage bs:ctx _.g set from storage bs:const color.hex_chars[$(y)]
$data modify storage bs:ctx _.b set from storage bs:const color.hex_chars[$(z)]
diff --git a/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/rgb_to_hex.mcfunction b/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/rgb_to_hex.mcfunction
index 67f169f679..aa2260b35e 100644
--- a/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/rgb_to_hex.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/rgb_to_hex/rgb_to_hex.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 20/01/2024 (1.20.4)
-# Last modification: 20/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-hex
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-hex
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value {rgb:$(color)}
diff --git a/datapacks/Bookshelf/data/bs.color/function/rgb_to_int.mcfunction b/datapacks/Bookshelf/data/bs.color/function/rgb_to_int.mcfunction
index ea6c8332a1..259e2b7a03 100644
--- a/datapacks/Bookshelf/data/bs.color/function/rgb_to_int.mcfunction
+++ b/datapacks/Bookshelf/data/bs.color/function/rgb_to_int.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: theogiraudet
-# Contributors: Aksiome
-
-# Version: 2.0
-# Created: ??/??/???? (1.14)
-# Last modification: 22/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-int
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-int
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value $(color)
diff --git a/datapacks/Bookshelf/data/bs.color/tags/function/help.json b/datapacks/Bookshelf/data/bs.color/tags/function/help.json
index 03342a7705..a5df1f1d89 100644
--- a/datapacks/Bookshelf/data/bs.color/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.color/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.color:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.color/tags/function/hex_to_int.json b/datapacks/Bookshelf/data/bs.color/tags/function/hex_to_int.json
index 86110d152e..767da18282 100644
--- a/datapacks/Bookshelf/data/bs.color/tags/function/hex_to_int.json
+++ b/datapacks/Bookshelf/data/bs.color/tags/function/hex_to_int.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-biome",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/04/22",
+ "minecraft_version": "1.20.5"
+ },
+ "updated": {
+ "date": "2024/04/22",
+ "minecraft_version": "1.20.5"
+ }
+ },
"values": [
"bs.color:hex_to_int/hex_to_int"
]
diff --git a/datapacks/Bookshelf/data/bs.color/tags/function/hex_to_rgb.json b/datapacks/Bookshelf/data/bs.color/tags/function/hex_to_rgb.json
index 4918760daf..b74b572c5c 100644
--- a/datapacks/Bookshelf/data/bs.color/tags/function/hex_to_rgb.json
+++ b/datapacks/Bookshelf/data/bs.color/tags/function/hex_to_rgb.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-rgb",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/20",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.color:hex_to_rgb/hex_to_rgb"
]
diff --git a/datapacks/Bookshelf/data/bs.color/tags/function/int_to_hex.json b/datapacks/Bookshelf/data/bs.color/tags/function/int_to_hex.json
index 40a6ac7493..0c1b0406ee 100644
--- a/datapacks/Bookshelf/data/bs.color/tags/function/int_to_hex.json
+++ b/datapacks/Bookshelf/data/bs.color/tags/function/int_to_hex.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-hex",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/20",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.color:int_to_hex/int_to_hex"
]
diff --git a/datapacks/Bookshelf/data/bs.color/tags/function/int_to_rgb.json b/datapacks/Bookshelf/data/bs.color/tags/function/int_to_rgb.json
index 997f4f588d..46db8edb99 100644
--- a/datapacks/Bookshelf/data/bs.color/tags/function/int_to_rgb.json
+++ b/datapacks/Bookshelf/data/bs.color/tags/function/int_to_rgb.json
@@ -1,4 +1,22 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-rgb",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2019/08/12",
+ "minecraft_version": "1.14"
+ },
+ "updated": {
+ "date": "2023/10/22",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.color:int_to_rgb"
]
diff --git a/datapacks/Bookshelf/data/bs.color/tags/function/load.json b/datapacks/Bookshelf/data/bs.color/tags/function/load.json
index 6a81b04d35..e6d408a96e 100644
--- a/datapacks/Bookshelf/data/bs.color/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.color/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.color:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.color/tags/function/rgb_to_hex.json b/datapacks/Bookshelf/data/bs.color/tags/function/rgb_to_hex.json
index bfc3a160b5..792d3080a6 100644
--- a/datapacks/Bookshelf/data/bs.color/tags/function/rgb_to_hex.json
+++ b/datapacks/Bookshelf/data/bs.color/tags/function/rgb_to_hex.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-hex",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/20",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.color:rgb_to_hex/rgb_to_hex"
]
diff --git a/datapacks/Bookshelf/data/bs.color/tags/function/rgb_to_int.json b/datapacks/Bookshelf/data/bs.color/tags/function/rgb_to_int.json
index 7246e88645..0c7b5ec74e 100644
--- a/datapacks/Bookshelf/data/bs.color/tags/function/rgb_to_int.json
+++ b/datapacks/Bookshelf/data/bs.color/tags/function/rgb_to_int.json
@@ -1,4 +1,22 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-int",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2019/08/12",
+ "minecraft_version": "1.14"
+ },
+ "updated": {
+ "date": "2023/10/22",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.color:rgb_to_int"
]
diff --git a/datapacks/Bookshelf/data/bs.color/tags/function/unload.json b/datapacks/Bookshelf/data/bs.color/tags/function/unload.json
index b77564f388..57c4f032b4 100644
--- a/datapacks/Bookshelf/data/bs.color/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.color/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.color:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.health/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.health/.metadata/generated/features.json
new file mode 100644
index 0000000000..129a751614
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.health/.metadata/generated/features.json
@@ -0,0 +1,156 @@
+[
+ {
+ "name": "add_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#add-remove",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_max_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#add-remove",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/23",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_max_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/23",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#set",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_max_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#set",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "time_to_live",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#time-to-live",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/07/08",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/11/19",
+ "version": "1.20.3"
+ },
+ "weak_dependencies": [
+ "bs.log"
+ ]
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.health/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.health/.metadata/generated/module.json
new file mode 100644
index 0000000000..50c98cb955
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.health/.metadata/generated/module.json
@@ -0,0 +1,25 @@
+{
+ "name": "bs.health",
+ "display_name": "Health",
+ "description": "Efficiently manage the lifecycle and vital aspects of an entity.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "weak_dependencies": [
+ "bs.log"
+ ],
+ "features": [
+ "bs.health:add_health",
+ "bs.health:add_max_health",
+ "bs.health:get_health",
+ "bs.health:get_max_health",
+ "bs.health:help",
+ "bs.health:load",
+ "bs.health:set_health",
+ "bs.health:set_max_health",
+ "bs.health:time_to_live",
+ "bs.health:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.health/.metadata/module.json b/datapacks/Bookshelf/data/bs.health/.metadata/module.json
new file mode 100644
index 0000000000..bbaea51d5c
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.health/.metadata/module.json
@@ -0,0 +1,9 @@
+{
+ "name": "bs.health",
+ "display_name": "Health",
+ "description": "Efficiently manage the lifecycle and vital aspects of an entity.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "weak_dependencies": [
+ "bs.log"
+ ]
+}
diff --git a/datapacks/Bookshelf/data/bs.health/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.health/function/__help__.mcfunction
index 8a4c3d55f3..5fabda5472 100644
--- a/datapacks/Bookshelf/data/bs.health/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.health documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.health/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.health/function/__load__.mcfunction
index dd6d9c1875..fccd6ae531 100644
--- a/datapacks/Bookshelf/data/bs.health/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives add bs.data dummy [{"text":"BS ","color":"dark_gray"},{"text":"Data","color":"aqua"}]
scoreboard objectives add bs.ttl dummy [{"text":"BS ","color":"dark_gray"},{"text":"Time to Live","color":"aqua"}]
diff --git a/datapacks/Bookshelf/data/bs.health/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.health/function/__unload__.mcfunction
index 1959b3d16a..5ce65b1423 100644
--- a/datapacks/Bookshelf/data/bs.health/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives remove bs.data
scoreboard objectives remove bs.ttl
diff --git a/datapacks/Bookshelf/data/bs.health/function/add/health.mcfunction b/datapacks/Bookshelf/data/bs.health/function/add/health.mcfunction
index 3a1504893e..6aba69a34e 100644
--- a/datapacks/Bookshelf/data/bs.health/function/add/health.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/add/health.mcfunction
@@ -1,19 +1,22 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#add-remove
+# ------------------------------------------------------------------------------------------------------------
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.2
-# Created: 15/09/2023 (1.20.2)
-# Last modification: 19/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html##add-remove
-# Dependencies:
# Note: Thanks to XanBelOr for giving the idea to use an advancement to subtick heal the player.
-# CODE ------------------------------------------------------------------------
-
$execute store result score #health bs.data run data get storage bs:const health.point $(points)
execute store success score #success bs.data run attribute @s minecraft:generic.max_health modifier value get bs.health:limit
diff --git a/datapacks/Bookshelf/data/bs.health/function/add/max_health.mcfunction b/datapacks/Bookshelf/data/bs.health/function/add/max_health.mcfunction
index 2fa7634a3f..0e1aa2d990 100644
--- a/datapacks/Bookshelf/data/bs.health/function/add/max_health.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/add/max_health.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.2
-# Created: 15/09/2023 (1.20.2)
-# Last modification: 19/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html##add-remove
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#add-remove
+# ------------------------------------------------------------------------------------------------------------
$execute store result score #health bs.data run data get storage bs:const health.point $(points)
diff --git a/datapacks/Bookshelf/data/bs.health/function/apply/decrease_health.mcfunction b/datapacks/Bookshelf/data/bs.health/function/apply/decrease_health.mcfunction
index c993f6830d..94a50fc46a 100644
--- a/datapacks/Bookshelf/data/bs.health/function/apply/decrease_health.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/apply/decrease_health.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
advancement grant @s only bs.health:restore_health
attribute @s minecraft:generic.max_health modifier remove bs.health:limit
$attribute @s minecraft:generic.max_health modifier add bs.health:limit $(x) add_value
diff --git a/datapacks/Bookshelf/data/bs.health/function/apply/increase_health.mcfunction b/datapacks/Bookshelf/data/bs.health/function/apply/increase_health.mcfunction
index ee9fd08802..3586ecb0cc 100644
--- a/datapacks/Bookshelf/data/bs.health/function/apply/increase_health.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/apply/increase_health.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
attribute @s minecraft:generic.max_health modifier remove bs.health:limit
$attribute @s minecraft:generic.max_health modifier add bs.health:limit $(x) add_value
effect give @s minecraft:instant_health 1 28 true
diff --git a/datapacks/Bookshelf/data/bs.health/function/apply/remove_modifier.mcfunction b/datapacks/Bookshelf/data/bs.health/function/apply/remove_modifier.mcfunction
index a31d57819b..3387645501 100644
--- a/datapacks/Bookshelf/data/bs.health/function/apply/remove_modifier.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/apply/remove_modifier.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
attribute @s minecraft:generic.max_health modifier remove bs.health:limit
diff --git a/datapacks/Bookshelf/data/bs.health/function/apply/set_max_health.mcfunction b/datapacks/Bookshelf/data/bs.health/function/apply/set_max_health.mcfunction
index 18de61f244..c6c6c6e57d 100644
--- a/datapacks/Bookshelf/data/bs.health/function/apply/set_max_health.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/apply/set_max_health.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$attribute @s minecraft:generic.max_health base set $(y)
effect give @s minecraft:health_boost 1 0 true
effect clear @s minecraft:health_boost
diff --git a/datapacks/Bookshelf/data/bs.health/function/get/health.mcfunction b/datapacks/Bookshelf/data/bs.health/function/get/health.mcfunction
index e510fb9a13..6640b625a7 100644
--- a/datapacks/Bookshelf/data/bs.health/function/get/health.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/get/health.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 23/10/2023 (1.20.2)
-# Last modification: 19/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#get
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#get
+# ------------------------------------------------------------------------------------------------------------
execute store success score #success bs.data run attribute @s minecraft:generic.max_health modifier value get bs.health:limit
execute if score #success bs.data matches 1 store result storage bs:out health.get_health double 0.00001 run attribute @s minecraft:generic.max_health get 100000
diff --git a/datapacks/Bookshelf/data/bs.health/function/get/max_health.mcfunction b/datapacks/Bookshelf/data/bs.health/function/get/max_health.mcfunction
index 5a8e419bdc..64987c5932 100644
--- a/datapacks/Bookshelf/data/bs.health/function/get/max_health.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/get/max_health.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 23/10/2023 (1.20.2)
-# Last modification: 19/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#get
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#get
+# ------------------------------------------------------------------------------------------------------------
execute store result score #health.max bs.data run attribute @s minecraft:generic.max_health get 100000
execute store result score #health.mod bs.data run attribute @s minecraft:generic.max_health modifier value get bs.health:limit 100000
diff --git a/datapacks/Bookshelf/data/bs.health/function/set/health.mcfunction b/datapacks/Bookshelf/data/bs.health/function/set/health.mcfunction
index c8c7be796d..682afdb27b 100644
--- a/datapacks/Bookshelf/data/bs.health/function/set/health.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/set/health.mcfunction
@@ -1,19 +1,22 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#set
+# ------------------------------------------------------------------------------------------------------------
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.2
-# Created: 15/09/2023 (1.20.2)
-# Last modification: 19/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#set
-# Dependencies:
# Note: Thanks to XanBelOr for giving the idea to use an advancement to subtick heal the player.
-# CODE ------------------------------------------------------------------------
-
$execute store result score #health bs.data run data get storage bs:const health.point $(points)
execute store result score #health.max bs.data run attribute @s minecraft:generic.max_health get 100000
diff --git a/datapacks/Bookshelf/data/bs.health/function/set/max_health.mcfunction b/datapacks/Bookshelf/data/bs.health/function/set/max_health.mcfunction
index 291f9a0ff4..0685b0e5a4 100644
--- a/datapacks/Bookshelf/data/bs.health/function/set/max_health.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/set/max_health.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.2
-# Created: 15/09/2023 (1.20.2)
-# Last modification: 19/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#set
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#set
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx y double 0.00001 store result score #health bs.data run data get storage bs:const health.point $(points)
diff --git a/datapacks/Bookshelf/data/bs.health/function/time_to_live/next_tick.mcfunction b/datapacks/Bookshelf/data/bs.health/function/time_to_live/next_tick.mcfunction
index 37f6619a78..0c63c738ec 100644
--- a/datapacks/Bookshelf/data/bs.health/function/time_to_live/next_tick.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/time_to_live/next_tick.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store success score #success bs.data run scoreboard players remove @e[scores={bs.ttl=1..}] bs.ttl 1
execute if score #success bs.data matches 1 as @e[scores={bs.ttl=0}] run function bs.health:time_to_live/time_out with entity @s
execute if score #success bs.data matches 1 run schedule function bs.health:time_to_live/next_tick 1t
diff --git a/datapacks/Bookshelf/data/bs.health/function/time_to_live/normalize_unit.mcfunction b/datapacks/Bookshelf/data/bs.health/function/time_to_live/normalize_unit.mcfunction
index 8e66eae9bc..2023af7be5 100644
--- a/datapacks/Bookshelf/data/bs.health/function/time_to_live/normalize_unit.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/time_to_live/normalize_unit.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store result storage bs:ctx _.time int $(scale) run data get storage bs:ctx _.time
return 1
diff --git a/datapacks/Bookshelf/data/bs.health/function/time_to_live/register_callback.mcfunction b/datapacks/Bookshelf/data/bs.health/function/time_to_live/register_callback.mcfunction
index 1ea5e02367..12dc1ae664 100644
--- a/datapacks/Bookshelf/data/bs.health/function/time_to_live/register_callback.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/time_to_live/register_callback.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:data health.ttl.callbacks[{uuid:$(UUID)}].on_death set from storage bs:ctx _.on_death
diff --git a/datapacks/Bookshelf/data/bs.health/function/time_to_live/register_unit.mcfunction b/datapacks/Bookshelf/data/bs.health/function/time_to_live/register_unit.mcfunction
index 9a8ff5a6a9..a39c2e5a7d 100644
--- a/datapacks/Bookshelf/data/bs.health/function/time_to_live/register_unit.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/time_to_live/register_unit.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store success score #success bs.data run function bs.health:time_to_live/normalize_unit with storage bs:const health.units[{name:'$(unit)'}]
execute if score #success bs.data matches 0 run function #bs.log:error { \
namespace:"bs.health", \
diff --git a/datapacks/Bookshelf/data/bs.health/function/time_to_live/run_callback.mcfunction b/datapacks/Bookshelf/data/bs.health/function/time_to_live/run_callback.mcfunction
index e91837ec89..5c1fec6839 100644
--- a/datapacks/Bookshelf/data/bs.health/function/time_to_live/run_callback.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/time_to_live/run_callback.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$$(on_death)
diff --git a/datapacks/Bookshelf/data/bs.health/function/time_to_live/time_out.mcfunction b/datapacks/Bookshelf/data/bs.health/function/time_to_live/time_out.mcfunction
index 3be29c3519..8fad27e1ea 100644
--- a/datapacks/Bookshelf/data/bs.health/function/time_to_live/time_out.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/time_to_live/time_out.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$function bs.health:time_to_live/run_callback with storage bs:data health.ttl.callbacks[{uuid:$(UUID)}]
$data remove storage bs:data health.ttl.callbacks[{uuid:$(UUID)}]
diff --git a/datapacks/Bookshelf/data/bs.health/function/time_to_live/time_to_live.mcfunction b/datapacks/Bookshelf/data/bs.health/function/time_to_live/time_to_live.mcfunction
index 2890c3fff4..23a929db3b 100644
--- a/datapacks/Bookshelf/data/bs.health/function/time_to_live/time_to_live.mcfunction
+++ b/datapacks/Bookshelf/data/bs.health/function/time_to_live/time_to_live.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 19/11/2023 (1.20.3)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#time-to-live
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#time-to-live
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value $(with)
diff --git a/datapacks/Bookshelf/data/bs.health/tags/function/add_health.json b/datapacks/Bookshelf/data/bs.health/tags/function/add_health.json
index 5bfc69a70e..d1ea90dcef 100644
--- a/datapacks/Bookshelf/data/bs.health/tags/function/add_health.json
+++ b/datapacks/Bookshelf/data/bs.health/tags/function/add_health.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#add-remove",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.health:add/health"
]
diff --git a/datapacks/Bookshelf/data/bs.health/tags/function/add_max_health.json b/datapacks/Bookshelf/data/bs.health/tags/function/add_max_health.json
index 0c59f5b022..92cf3f0119 100644
--- a/datapacks/Bookshelf/data/bs.health/tags/function/add_max_health.json
+++ b/datapacks/Bookshelf/data/bs.health/tags/function/add_max_health.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#add-remove",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.health:add/max_health"
]
diff --git a/datapacks/Bookshelf/data/bs.health/tags/function/get_health.json b/datapacks/Bookshelf/data/bs.health/tags/function/get_health.json
index 713c74c95c..2dafe51a42 100644
--- a/datapacks/Bookshelf/data/bs.health/tags/function/get_health.json
+++ b/datapacks/Bookshelf/data/bs.health/tags/function/get_health.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/23",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.health:get/health"
]
diff --git a/datapacks/Bookshelf/data/bs.health/tags/function/get_max_health.json b/datapacks/Bookshelf/data/bs.health/tags/function/get_max_health.json
index 397952fda0..d1f93e98bc 100644
--- a/datapacks/Bookshelf/data/bs.health/tags/function/get_max_health.json
+++ b/datapacks/Bookshelf/data/bs.health/tags/function/get_max_health.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/23",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.health:get/max_health"
]
diff --git a/datapacks/Bookshelf/data/bs.health/tags/function/help.json b/datapacks/Bookshelf/data/bs.health/tags/function/help.json
index 8894406356..f5e5a600bf 100644
--- a/datapacks/Bookshelf/data/bs.health/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.health/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.health:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.health/tags/function/load.json b/datapacks/Bookshelf/data/bs.health/tags/function/load.json
index 4d2596fc96..9ef12cd44e 100644
--- a/datapacks/Bookshelf/data/bs.health/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.health/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.health:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.health/tags/function/set_health.json b/datapacks/Bookshelf/data/bs.health/tags/function/set_health.json
index dc9f8ab5d4..af4e89ee01 100644
--- a/datapacks/Bookshelf/data/bs.health/tags/function/set_health.json
+++ b/datapacks/Bookshelf/data/bs.health/tags/function/set_health.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#set",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.health:set/health"
]
diff --git a/datapacks/Bookshelf/data/bs.health/tags/function/set_max_health.json b/datapacks/Bookshelf/data/bs.health/tags/function/set_max_health.json
index 6997639d10..b2e79d9618 100644
--- a/datapacks/Bookshelf/data/bs.health/tags/function/set_max_health.json
+++ b/datapacks/Bookshelf/data/bs.health/tags/function/set_max_health.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#set",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.health:set/max_health"
]
diff --git a/datapacks/Bookshelf/data/bs.health/tags/function/time_to_live.json b/datapacks/Bookshelf/data/bs.health/tags/function/time_to_live.json
index 04772cb5f8..357aef08a9 100644
--- a/datapacks/Bookshelf/data/bs.health/tags/function/time_to_live.json
+++ b/datapacks/Bookshelf/data/bs.health/tags/function/time_to_live.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#time-to-live",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/07/08",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/11/19",
+ "minecraft_version": "1.20.3"
+ }
+ },
"values": [
"bs.health:time_to_live/time_to_live"
]
diff --git a/datapacks/Bookshelf/data/bs.health/tags/function/unload.json b/datapacks/Bookshelf/data/bs.health/tags/function/unload.json
index 058158dc75..cdae047f3a 100644
--- a/datapacks/Bookshelf/data/bs.health/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.health/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.health:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.hitbox/.metadata/generated/features.json
new file mode 100644
index 0000000000..c8dffce5e5
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.hitbox/.metadata/generated/features.json
@@ -0,0 +1,107 @@
+[
+ {
+ "name": "get_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/23",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "is_in_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#is-inside",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "is_in_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#is-inside",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/23",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/23",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.hitbox/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.hitbox/.metadata/generated/module.json
new file mode 100644
index 0000000000..0af59cfcb8
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.hitbox/.metadata/generated/module.json
@@ -0,0 +1,18 @@
+{
+ "name": "bs.hitbox",
+ "display_name": "Hitbox",
+ "description": "Get and check the hitboxes of blocks or entities.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "features": [
+ "bs.hitbox:get_block",
+ "bs.hitbox:get_entity",
+ "bs.hitbox:help",
+ "bs.hitbox:is_in_block",
+ "bs.hitbox:is_in_entity",
+ "bs.hitbox:load",
+ "bs.hitbox:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.hitbox/.metadata/module.json b/datapacks/Bookshelf/data/bs.hitbox/.metadata/module.json
new file mode 100644
index 0000000000..e0ab0de1cb
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.hitbox/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.hitbox",
+ "display_name": "Hitbox",
+ "description": "Get and check the hitboxes of blocks or entities.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/__help__.mcfunction
index f598584559..e69e0949a3 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.hitbox documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/__load__.mcfunction
index f75c5b7dfb..a4c7611353 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
execute unless entity B5-0-0-0-1 run summon minecraft:marker -30000000 0 1600 {UUID:[I;181,0,0,1],Tags:["bs.entity","bs.persistent"]}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/__unload__.mcfunction
index fc0905a84a..4b9c7b9159 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html
+# ------------------------------------------------------------------------------------------------------------
kill B5-0-0-0-1
forceload remove -30000000 1600
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/dispatch.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/dispatch.mcfunction
index 90b3e27605..dca4275833 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/dispatch.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/dispatch.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$function bs.hitbox:get_block/registry/$(y)
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/get_block.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/get_block.mcfunction
index 8d51464cfa..803e0f9c67 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/get_block.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/get_block.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 21/11/2023 (1.20.3)
-# Last modification: 30/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#get
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#get
+# ------------------------------------------------------------------------------------------------------------
scoreboard players set #hitbox.id bs.data 0
execute if block ~ ~ ~ #bs.hitbox:shape/group_1 run scoreboard players add #hitbox.id bs.data 1
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/compute.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/compute.mcfunction
index 4250349ba5..dbb0c383aa 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/compute.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/compute.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# compute the offset since we only care about bits 16 to 24, overflow of the scoreboard is not an issue
data modify storage bs:data hitbox.offsets append value {x:0,z:0,k:[0,0]}
execute store result storage bs:data hitbox.offsets[-1].k[0] int 1 run scoreboard players get #hitbox.offset.x bs.data
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/fetch.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/fetch.mcfunction
index afb7359395..e620120970 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/fetch.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/fetch.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store success score #success bs.data run data modify storage bs:out hitbox.offset set from storage bs:data hitbox.offsets[{k:[$(x),$(z)]}]
execute if score #success bs.data matches 0 run return fail
data remove storage bs:out hitbox.offset.k
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/get.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/get.mcfunction
index 06e2df4d14..8a46159dba 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/get.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/offset/get.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
tp @s ~ ~ ~
execute store result score #hitbox.offset.x bs.data store result storage bs:ctx x int 1 run data get entity @s Pos[0]
execute store result score #hitbox.offset.z bs.data store result storage bs:ctx z int 1 run data get entity @s Pos[2]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/0.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/0.mcfunction
index 72519a74f9..e8772fee91 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/0.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/0.mcfunction
@@ -1,2 +1,32 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# fallback group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 16, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/1.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/1.mcfunction
index eb6a4c3b3d..5370fd7269 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/1.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/1.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# amethyst_cluster group
execute if block ~ ~ ~ minecraft:amethyst_cluster[facing=up] run data modify storage bs:out hitbox.shape set value [[3, 0, 3, 13, 7, 13]]
execute if block ~ ~ ~ minecraft:amethyst_cluster[facing=down] run data modify storage bs:out hitbox.shape set value [[3, 9, 3, 13, 16, 13]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/10.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/10.mcfunction
index c6f19bf83c..1546d199ea 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/10.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/10.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# big_dripleaf group
execute if block ~ ~ ~ minecraft:big_dripleaf[facing=west] run data modify storage bs:out hitbox.shape set value [[9, 0, 5, 15, 13, 11]]
execute if block ~ ~ ~ minecraft:big_dripleaf[facing=east] run data modify storage bs:out hitbox.shape set value [[1, 0, 5, 7, 13, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/11.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/11.mcfunction
index a278ec5270..9ae8deb59b 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/11.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/11.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# brewing_stand group
data modify storage bs:out hitbox.shape set value [[1, 0, 1, 15, 2, 15],[7, 0, 7, 9, 14, 9]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/12.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/12.mcfunction
index b51ec67681..9ee064c8f8 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/12.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/12.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# button group
execute if block ~ ~ ~ #bs.hitbox:shape/button[face=ceiling,facing=west,powered=false] run data modify storage bs:out hitbox.shape set value [[6, 14, 5, 10, 16, 11]]
execute if block ~ ~ ~ #bs.hitbox:shape/button[face=ceiling,facing=east,powered=false] run data modify storage bs:out hitbox.shape set value [[6, 14, 5, 10, 16, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/13.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/13.mcfunction
index 07f9e12aa5..9c42970f75 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/13.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/13.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# cactus_shaped group
data modify storage bs:out hitbox.shape set value [[1, 0, 1, 15, 16, 15]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/14.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/14.mcfunction
index b87fe67c89..532e7f566f 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/14.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/14.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# cake group
execute if block ~ ~ ~ #bs.hitbox:shape/candle_cake run data modify storage bs:out hitbox.shape set value [[1, 0, 1, 15, 8, 15],[7, 8, 7, 9, 14, 9]]
execute if block ~ ~ ~ minecraft:cake[bites=0] run data modify storage bs:out hitbox.shape set value [[1, 0, 1, 15, 8, 15]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/15.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/15.mcfunction
index 6cee114bcf..796eec32ee 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/15.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/15.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# campfire group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 7, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/16.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/16.mcfunction
index 0d41ab9756..220c03afe7 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/16.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/16.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# candle group
execute if block ~ ~ ~ #bs.hitbox:shape/candle[candles=1] run data modify storage bs:out hitbox.shape set value [[7, 0, 7, 9, 6, 9]]
execute if block ~ ~ ~ #bs.hitbox:shape/candle[candles=2] run data modify storage bs:out hitbox.shape set value [[5, 0, 6, 11, 6, 9]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/17.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/17.mcfunction
index d41da447fd..0faa285eee 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/17.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/17.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# carpet_shaped group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 1, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/18.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/18.mcfunction
index 09f24bcaac..143a9983a0 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/18.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/18.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# cauldron group
data modify storage bs:out hitbox.shape set value [[0, 3, 0, 2, 16, 16],[2, 3, 2, 14, 4, 14],[14, 3, 0, 16, 16, 16],[2, 3, 0, 14, 16, 2],[2, 3, 14, 14, 16, 16],[0, 0, 0, 4, 3, 2],[0, 0, 2, 2, 3, 4],[12, 0, 0, 16, 3, 2],[14, 0, 2, 16, 3, 4],[0, 0, 14, 4, 3, 16],[0, 0, 12, 2, 3, 14],[12, 0, 14, 16, 3, 16],[14, 0, 12, 16, 3, 14]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/19.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/19.mcfunction
index 9c5f98e62f..3a656115e0 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/19.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/19.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# chain group
execute if block ~ ~ ~ minecraft:chain[axis=x] run data modify storage bs:out hitbox.shape set value [[0.0, 6.5, 6.5, 16.0, 9.5, 9.5]]
execute if block ~ ~ ~ minecraft:chain[axis=y] run data modify storage bs:out hitbox.shape set value [[6.5, 0.0, 6.5, 9.5, 16.0, 9.5]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/2.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/2.mcfunction
index c4d0bf52f1..28f3b50aee 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/2.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/2.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# anvil group
execute if block ~ ~ ~ #bs.hitbox:shape/anvil[facing=west] run data modify storage bs:out hitbox.shape set value [[2, 0, 2, 14, 4, 14],[3, 4, 4, 13, 5, 12],[4, 5, 6, 12, 10, 10],[0, 10, 3, 16, 16, 13]]
execute if block ~ ~ ~ #bs.hitbox:shape/anvil[facing=east] run data modify storage bs:out hitbox.shape set value [[2, 0, 2, 14, 4, 14],[3, 4, 4, 13, 5, 12],[4, 5, 6, 12, 10, 10],[0, 10, 3, 16, 16, 13]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/20.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/20.mcfunction
index 2d1f392f97..d7784bcf16 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/20.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/20.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# chest group
data modify storage bs:out hitbox.shape set value [[1, 0, 1, 15, 14, 15]]
execute if block ~ ~ ~ #bs.hitbox:shape/chest[facing=west,type=left] run data modify storage bs:out hitbox.shape set value [[1, 0, 0, 15, 14, 15]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/21.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/21.mcfunction
index ab36cebc57..726a603c38 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/21.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/21.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# composter group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 2, 16],[0, 2, 0, 2, 16, 16],[14, 2, 0, 16, 16, 16],[2, 2, 0, 14, 16, 2],[2, 2, 14, 14, 16, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/22.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/22.mcfunction
index 716b2a5e7a..3222d28c2e 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/22.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/22.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# conduit group
data modify storage bs:out hitbox.shape set value [[5, 5, 5, 11, 11, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/23.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/23.mcfunction
index de99a559bf..e46a0e9f3e 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/23.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/23.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# coral_fan group
data modify storage bs:out hitbox.shape set value [[2, 0, 2, 14, 4, 14]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/24.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/24.mcfunction
index 3a4b279580..2f31a49d9d 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/24.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/24.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# coral_plant group
data modify storage bs:out hitbox.shape set value [[2, 0, 2, 14, 15, 14]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/25.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/25.mcfunction
index 052744fc3f..a47c4b3f5a 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/25.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/25.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# coral_wall_fan group
execute if block ~ ~ ~ #bs.hitbox:shape/coral_wall_fan[facing=west] run data modify storage bs:out hitbox.shape set value [[5, 4, 0, 16, 12, 16]]
execute if block ~ ~ ~ #bs.hitbox:shape/coral_wall_fan[facing=east] run data modify storage bs:out hitbox.shape set value [[0, 4, 0, 11, 12, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/26.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/26.mcfunction
index f3eae55688..1d7af6aa74 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/26.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/26.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# daylight_detector group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 6, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/27.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/27.mcfunction
index 953ad28d9d..1251822601 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/27.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/27.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# door group
execute if block ~ ~ ~ #bs.hitbox:shape/door[facing=west,open=false] run data modify storage bs:out hitbox.shape set value [[13, 0, 0, 16, 16, 16]]
execute if block ~ ~ ~ #bs.hitbox:shape/door[facing=east,open=false] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 3, 16, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/28.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/28.mcfunction
index bb26bbadb1..7580cf8d77 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/28.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/28.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# end_portal_frame group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 13, 16]]
execute if block ~ ~ ~ minecraft:end_portal_frame[eye=true] run data modify storage bs:out hitbox.shape append value [4, 13, 4, 12, 16, 12]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/29.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/29.mcfunction
index da0b31005c..bc1ea42501 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/29.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/29.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# end_portal group
data modify storage bs:out hitbox.shape set value [[0, 6, 0, 16, 12, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/3.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/3.mcfunction
index 1341f7b357..204e8ab6d1 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/3.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/3.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# attached_stem group
execute if block ~ ~ ~ #bs.hitbox:shape/attached_stem[facing=west] run data modify storage bs:out hitbox.shape set value [[0, 0, 6, 10, 10, 10]]
execute if block ~ ~ ~ #bs.hitbox:shape/attached_stem[facing=east] run data modify storage bs:out hitbox.shape set value [[6, 0, 6, 16, 10, 10]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/30.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/30.mcfunction
index 6506534357..765157cda2 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/30.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/30.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# extended_piston group
execute if block ~ ~ ~ #bs.hitbox:shape/extended_piston[facing=west,extended=true] run data modify storage bs:out hitbox.shape set value [[4, 0, 0, 16, 16, 16]]
execute if block ~ ~ ~ #bs.hitbox:shape/extended_piston[facing=east,extended=true] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 12, 16, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/31.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/31.mcfunction
index bb35b98a30..1e88571ca0 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/31.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/31.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# farmland_shaped group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 15, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/32.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/32.mcfunction
index 0ee9e4d7d1..747721d85c 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/32.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/32.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# fence_gate group
execute if block ~ ~ ~ #bs.hitbox:shape/fence_gate[facing=west,in_wall=false] run data modify storage bs:out hitbox.shape set value [[6, 0, 0, 10, 16, 16]]
execute if block ~ ~ ~ #bs.hitbox:shape/fence_gate[facing=east,in_wall=false] run data modify storage bs:out hitbox.shape set value [[6, 0, 0, 10, 16, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/33.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/33.mcfunction
index 0ab1f5d4ed..209d6c3071 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/33.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/33.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# fence group
data modify storage bs:out hitbox.shape set value [[6, 0, 6, 10, 16, 10]]
execute if block ~ ~ ~ #bs.hitbox:shape/fence[west=true] run data modify storage bs:out hitbox.shape append value [0, 0, 6, 10, 16, 10]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/34.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/34.mcfunction
index d090f55cb7..d918bfa2d5 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/34.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/34.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# grass_shaped group
data modify storage bs:out hitbox.shape set value [[2, 0, 2, 14, 13, 14]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/35.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/35.mcfunction
index 8d22614cc0..cace7338b6 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/35.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/35.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# grindstone group
execute if block ~ ~ ~ minecraft:grindstone[facing=west,face=floor] run data modify storage bs:out hitbox.shape set value [[6, 0, 2, 10, 7, 4],[6, 0, 12, 10, 7, 14],[5, 7, 2, 11, 13, 4],[5, 7, 12, 11, 13, 14],[2, 4, 4, 14, 16, 12]]
execute if block ~ ~ ~ minecraft:grindstone[facing=east,face=floor] run data modify storage bs:out hitbox.shape set value [[6, 0, 2, 10, 7, 4],[6, 0, 12, 10, 7, 14],[5, 7, 2, 11, 13, 4],[5, 7, 12, 11, 13, 14],[2, 4, 4, 14, 16, 12]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/36.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/36.mcfunction
index c1889172bf..cec5d64a27 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/36.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/36.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# hanging_roots group
data modify storage bs:out hitbox.shape set value [[2, 10, 2, 14, 16, 14]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/37.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/37.mcfunction
index 6e98e17f7b..a5b9cde5d8 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/37.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/37.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# ceiling_hanging_signs group
data modify storage bs:out hitbox.shape set value [[3, 0, 3, 13, 16, 13]]
execute if block ~ ~ ~ #bs.hitbox:shape/ceiling_hanging_sign[rotation=0] run data modify storage bs:out hitbox.shape set value [[1, 0, 7, 15, 10, 9]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/38.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/38.mcfunction
index 6117788c23..30eb749cc4 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/38.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/38.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# head group
data modify storage bs:out hitbox.shape set value [[4, 0, 4, 12, 8, 12]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/39.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/39.mcfunction
index 57f477a211..1a78a2682e 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/39.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/39.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# hopper group
data modify storage bs:out hitbox.shape set value [[0, 10, 0, 16, 11, 16],[0, 11, 0, 2, 16, 16],[14, 11, 0, 16, 16, 16],[2, 11, 0, 14, 16, 2],[2, 11, 14, 14, 16, 16],[4, 4, 4, 12, 10, 12]]
execute if block ~ ~ ~ minecraft:hopper[facing=down] run data modify storage bs:out hitbox.shape append value [6, 0, 6, 10, 4, 10]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/4.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/4.mcfunction
index 06a50b3293..ffbe66fc9e 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/4.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/4.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# azalea group
data modify storage bs:out hitbox.shape set value [[6, 0, 6, 10, 8, 10],[0, 8, 0, 16, 16, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/40.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/40.mcfunction
index 064842c1c3..401472e1ad 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/40.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/40.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# ladder group
execute if block ~ ~ ~ minecraft:ladder[facing=west] run data modify storage bs:out hitbox.shape set value [[13, 0, 0, 16, 16, 16]]
execute if block ~ ~ ~ minecraft:ladder[facing=east] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 3, 16, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/41.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/41.mcfunction
index 8aa51c3647..787cdbf235 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/41.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/41.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# lantern group
execute if block ~ ~ ~ #bs.hitbox:shape/lantern[hanging=false] run data modify storage bs:out hitbox.shape set value [[5, 0, 5, 11, 7, 11],[6, 7, 6, 10, 9, 10]]
execute if block ~ ~ ~ #bs.hitbox:shape/lantern[hanging=true] run data modify storage bs:out hitbox.shape set value [[5, 1, 5, 11, 8, 11],[6, 8, 6, 10, 10, 10]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/42.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/42.mcfunction
index e4ca1b492c..3611cf2113 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/42.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/42.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# large_amethyst_bud group
execute if block ~ ~ ~ minecraft:large_amethyst_bud[facing=up] run data modify storage bs:out hitbox.shape set value [[3, 0, 3, 13, 5, 13]]
execute if block ~ ~ ~ minecraft:large_amethyst_bud[facing=down] run data modify storage bs:out hitbox.shape set value [[3, 11, 3, 13, 16, 13]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/43.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/43.mcfunction
index c62f9ed6e8..9480e7527e 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/43.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/43.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# lectern group
execute if block ~ ~ ~ minecraft:lectern[facing=west] run data modify storage bs:out hitbox.shape set value [[1.0, 10.0, 0.0, 5.333333, 14.0, 16.0],[5.333333, 12.0, 0.0, 9.666667, 16.0, 16.0],[9.666667, 14.0, 0.0, 14.0, 18.0, 16.0],[0, 0, 0, 16, 2, 16],[4, 2, 4, 12, 14, 12]]
execute if block ~ ~ ~ minecraft:lectern[facing=east] run data modify storage bs:out hitbox.shape set value [[10.666667, 10.0, 0.0, 15.0, 14.0, 16.0],[6.333333, 12.0, 0.0, 10.666667, 16.0, 16.0],[2.0, 14.0, 0.0, 6.333333, 18.0, 16.0],[0, 0, 0, 16, 2, 16],[4, 2, 4, 12, 14, 12]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/44.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/44.mcfunction
index 7fa4fb3700..2f01cc17a2 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/44.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/44.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# lever group
execute if block ~ ~ ~ minecraft:lever[face=floor,facing=west] run data modify storage bs:out hitbox.shape set value [[4, 0, 5, 12, 6, 11]]
execute if block ~ ~ ~ minecraft:lever[face=floor,facing=east] run data modify storage bs:out hitbox.shape set value [[4, 0, 5, 12, 6, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/45.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/45.mcfunction
index 7d3bfdf53d..de6526d109 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/45.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/45.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# mangrove_propagule group
execute as B5-0-0-0-1 run function bs.hitbox:get_block/offset/get
execute if block ~ ~ ~ minecraft:mangrove_propagule[hanging=false] run data modify storage bs:out hitbox.shape set value [[7, 0, 7, 9, 16, 9]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/46.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/46.mcfunction
index 19d7d3d334..3c77c5b3e4 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/46.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/46.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# medium_amethyst_bud group
execute if block ~ ~ ~ minecraft:medium_amethyst_bud[facing=up] run data modify storage bs:out hitbox.shape set value [[3, 0, 3, 13, 4, 13]]
execute if block ~ ~ ~ minecraft:medium_amethyst_bud[facing=down] run data modify storage bs:out hitbox.shape set value [[3, 12, 3, 13, 16, 13]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/47.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/47.mcfunction
index a15c8a3cbf..4f53a6006b 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/47.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/47.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# mushroom_shaped group
data modify storage bs:out hitbox.shape set value [[5, 0, 5, 11, 6, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/48.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/48.mcfunction
index 49d7b4df7f..0bcb34cf5d 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/48.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/48.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# nether_fungus group
data modify storage bs:out hitbox.shape set value [[4, 0, 4, 12, 9, 12]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/49.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/49.mcfunction
index 6850e644c2..bb4356ed6a 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/49.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/49.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# nether_sprouts group
data modify storage bs:out hitbox.shape set value [[2, 0, 2, 14, 3, 14]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/5.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/5.mcfunction
index 154a89e27b..7e4dd795ce 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/5.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/5.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# bamboo_sapling group
execute as B5-0-0-0-1 run function bs.hitbox:get_block/offset/get
data modify storage bs:out hitbox.shape set value [[4, 0, 4, 12, 12, 12]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/50.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/50.mcfunction
index 877a0168a9..936e6b4c39 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/50.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/50.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# nether_wart group
execute if block ~ ~ ~ minecraft:nether_wart[age=0] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 5, 16]]
execute if block ~ ~ ~ minecraft:nether_wart[age=1] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 8, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/51.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/51.mcfunction
index f5b2c59b9c..4c18166a28 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/51.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/51.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# pane_shaped group
data modify storage bs:out hitbox.shape set value [[7, 0, 7, 9, 16, 9]]
execute if block ~ ~ ~ #bs.hitbox:shape/pane_shaped[west=true] run data modify storage bs:out hitbox.shape append value [0, 0, 7, 9, 16, 9]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/52.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/52.mcfunction
index edb0d1753b..40c8bab650 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/52.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/52.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# piglin_head group
data modify storage bs:out hitbox.shape set value [[3, 0, 3, 13, 8, 13]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/53.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/53.mcfunction
index 999e11b0d2..a184cd9242 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/53.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/53.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# piglin_wall_head group
execute if block ~ ~ ~ minecraft:piglin_wall_head[facing=west] run data modify storage bs:out hitbox.shape set value [[8, 4, 3, 16, 12, 1]]
execute if block ~ ~ ~ minecraft:piglin_wall_head[facing=east] run data modify storage bs:out hitbox.shape set value [[0, 4, 3, 8, 12, 13]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/54.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/54.mcfunction
index 4f8084638b..de85f9ff65 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/54.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/54.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# pink_petals group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 3, 16]]
execute if block ~ ~ ~ minecraft:pink_petals[facing=west,flower_amount=1] run data modify storage bs:out hitbox.shape set value [[0, 0, 8, 8, 3, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/55.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/55.mcfunction
index 34d86abbb8..0f216f74be 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/55.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/55.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# pipe_shaped group
data modify storage bs:out hitbox.shape set value []
execute if block ~ ~ ~ #bs.hitbox:shape/pipe_shaped[up=true] run data modify storage bs:out hitbox.shape append value [3, 3, 3, 13, 16, 13]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/56.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/56.mcfunction
index a9034f5c95..522fd8b118 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/56.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/56.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# piston_head group
execute if block ~ ~ ~ minecraft:piston_head[facing=west] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 4, 16, 16],[4, 6, 6, 16, 10, 10]]
execute if block ~ ~ ~ minecraft:piston_head[facing=east] run data modify storage bs:out hitbox.shape set value [[12, 0, 0, 16, 16, 16],[0, 6, 6, 12, 10, 10]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/57.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/57.mcfunction
index 8b3ccdcea6..403093dd5f 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/57.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/57.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# pitcher_crop group
data modify storage bs:out hitbox.shape set value [[3, 0, 3, 13, 16, 13]]
execute if block ~ ~ ~ minecraft:pitcher_crop[age=0,half=lower] run data modify storage bs:out hitbox.shape set value [[5, 0, 5, 11, 3, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/58.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/58.mcfunction
index d1f6df32d7..fb8f1e51b1 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/58.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/58.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# pointed_dripstone group
execute as B5-0-0-0-1 run function bs.hitbox:get_block/offset/get
execute if score #hitbox.offset.x bs.data matches 125.. run scoreboard players set #hitbox.offset.x bs.data 125
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/59.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/59.mcfunction
index fc303c89e4..f14189b390 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/59.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/59.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# pressure_plate group
execute if block ~ ~ ~ #bs.hitbox:shape/pressure_plate[powered=false] run data modify storage bs:out hitbox.shape set value [[1, 0, 1, 15, 1, 15]]
execute if block ~ ~ ~ #bs.hitbox:shape/pressure_plate[powered=true] run data modify storage bs:out hitbox.shape set value [[1.0, 0.0, 1.0, 15.0, 0.5, 15.0]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/6.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/6.mcfunction
index 3783bba1bd..f584fa2556 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/6.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/6.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# bamboo group
execute as B5-0-0-0-1 run function bs.hitbox:get_block/offset/get
data modify storage bs:out hitbox.shape set value [[5, 0, 5, 11, 16, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/60.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/60.mcfunction
index 93d1a5369f..b1e7598589 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/60.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/60.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# rail group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 2, 16]]
execute if block ~ ~ ~ #bs.hitbox:shape/rail[shape=ascending_west] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 8, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/61.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/61.mcfunction
index 0dc87eba6a..04df603a83 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/61.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/61.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# repeater_shaped group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 2, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/62.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/62.mcfunction
index e4ff136122..e552d69ecc 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/62.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/62.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# rod group
execute if block ~ ~ ~ #bs.hitbox:shape/rod[facing=west] run data modify storage bs:out hitbox.shape set value [[0, 6, 6, 16, 10, 10]]
execute if block ~ ~ ~ #bs.hitbox:shape/rod[facing=east] run data modify storage bs:out hitbox.shape set value [[0, 6, 6, 16, 10, 10]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/63.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/63.mcfunction
index f2e0027e23..39b58dace5 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/63.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/63.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# sapling group
data modify storage bs:out hitbox.shape set value [[2, 0, 2, 14, 12, 14]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/64.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/64.mcfunction
index ead514bac0..20b7785d35 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/64.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/64.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# sculk_sensor group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 8, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/65.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/65.mcfunction
index d6a8bd5dfd..c39ca4c6de 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/65.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/65.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# sea_pickle group
execute if block ~ ~ ~ minecraft:sea_pickle[pickles=1] run data modify storage bs:out hitbox.shape set value [6, 0, 6, 10, 6, 10]
execute if block ~ ~ ~ minecraft:sea_pickle[pickles=2] run data modify storage bs:out hitbox.shape set value [3, 0, 3, 13, 6, 13]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/66.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/66.mcfunction
index 72ac9bd654..2492b7b13d 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/66.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/66.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# seagrass group
data modify storage bs:out hitbox.shape set value [[2, 0, 2, 14, 12, 14]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/67.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/67.mcfunction
index 1f827715e8..c9fa10b92f 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/67.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/67.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# short_crop group
execute if block ~ ~ ~ #bs.hitbox:shape/short_crop[age=0] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 2, 16]]
execute if block ~ ~ ~ #bs.hitbox:shape/short_crop[age=1] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 3, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/68.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/68.mcfunction
index 319c5d5b12..91ec8312c6 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/68.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/68.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# slab group
execute if block ~ ~ ~ #bs.hitbox:shape/slab[type=top] run data modify storage bs:out hitbox.shape set value [[0, 8, 0, 16, 16, 16]]
execute if block ~ ~ ~ #bs.hitbox:shape/slab[type=bottom] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 8, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/69.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/69.mcfunction
index 34d7e793cb..94dcf2f40b 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/69.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/69.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# small_amethyst_bud group
execute if block ~ ~ ~ minecraft:small_amethyst_bud[facing=down] run data modify storage bs:out hitbox.shape set value [[4, 13, 4, 12, 16, 12]]
execute if block ~ ~ ~ minecraft:small_amethyst_bud[facing=west] run data modify storage bs:out hitbox.shape set value [[13, 4, 4, 16, 12, 12]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/7.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/7.mcfunction
index 4afeee2497..87482a2251 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/7.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/7.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# bed group
execute if block ~ ~ ~ #bs.hitbox:shape/bed[facing=west,part=head] run data modify storage bs:out hitbox.shape set value [[0, 3, 0, 16, 9, 16],[0, 0, 0, 3, 3, 3],[0, 0, 13, 3, 3, 16]]
execute if block ~ ~ ~ #bs.hitbox:shape/bed[facing=west,part=foot] run data modify storage bs:out hitbox.shape set value [[0, 3, 0, 16, 9, 16],[13, 0, 0, 16, 3, 3],[13, 0, 13, 16, 3, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/70.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/70.mcfunction
index 30b7db4621..a78a4dba00 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/70.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/70.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# weeping_vines group
data modify storage bs:out hitbox.shape set value [[4, 9, 4, 12, 16, 12]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/71.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/71.mcfunction
index 9089b73f43..5b7296ebd9 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/71.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/71.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# small_flowers group
execute as B5-0-0-0-1 run function bs.hitbox:get_block/offset/get
data modify storage bs:out hitbox.shape set value [[5, 0, 5, 11, 10, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/72.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/72.mcfunction
index 64cb4c68e7..e37b66983a 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/72.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/72.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# sniffer_egg group
data modify storage bs:out hitbox.shape set value [[1, 0, 2, 15, 16, 14]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/73.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/73.mcfunction
index f49617eaec..690faec991 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/73.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/73.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# snow group
execute if block ~ ~ ~ minecraft:snow[layers=1] run data modify storage bs:out hitbox.shape set value [0, 0, 0, 16, 2, 16]
execute if block ~ ~ ~ minecraft:snow[layers=2] run data modify storage bs:out hitbox.shape set value [0, 0, 0, 16, 4, 16]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/74.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/74.mcfunction
index 4350616419..896fef08df 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/74.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/74.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# spore_blossom group
data modify storage bs:out hitbox.shape set value [[2, 13, 2, 14, 16, 14]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/75.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/75.mcfunction
index e78f3f8298..37d13da5b9 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/75.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/75.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# stair group
execute if block ~ ~ ~ #bs.hitbox:shape/stairs[facing=west] run scoreboard players set #hitbox.get_block.shape bs.data 0
execute if block ~ ~ ~ #bs.hitbox:shape/stairs[facing=north] run scoreboard players set #hitbox.get_block.shape bs.data 1
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/76.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/76.mcfunction
index 0cc47b378c..6d32312129 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/76.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/76.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# standing_sign_shaped group
data modify storage bs:out hitbox.shape set value [[4, 0, 4, 12, 16, 12]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/77.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/77.mcfunction
index a2c338cdc6..2b3d84514a 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/77.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/77.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# stem group
execute if block ~ ~ ~ #bs.hitbox:shape/stem[age=0] run data modify storage bs:out hitbox.shape set value [[7, 0, 7, 9, 2, 9]]
execute if block ~ ~ ~ #bs.hitbox:shape/stem[age=1] run data modify storage bs:out hitbox.shape set value [[7, 0, 7, 9, 4, 9]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/78.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/78.mcfunction
index d06879c12f..227d4e28d0 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/78.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/78.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# stonecutter group
data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 9, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/79.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/79.mcfunction
index 50b99be6a1..4f6b012a6c 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/79.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/79.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# structure_void group
data modify storage bs:out hitbox.shape set value [[5, 5, 5, 11, 11, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/8.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/8.mcfunction
index 0d3e3b5cf7..be209d00ce 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/8.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/8.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# bell group
execute if block ~ ~ ~ minecraft:bell[attachment=ceiling] run data modify storage bs:out hitbox.shape set value [[4, 4, 4, 12, 6, 12],[5, 6, 5, 11, 13, 11],[7, 13, 7, 9, 16, 9]]
execute if block ~ ~ ~ minecraft:bell[facing=west,attachment=floor] run data modify storage bs:out hitbox.shape set value [[4, 0, 0, 12, 16, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/80.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/80.mcfunction
index 018b9533e4..f4c813bdd1 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/80.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/80.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# sugar_cane_shaped group
data modify storage bs:out hitbox.shape set value [[2, 0, 2, 14, 16, 14]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/81.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/81.mcfunction
index d10309b7f1..a765462e12 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/81.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/81.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# sweet_berry_bush group
execute if block ~ ~ ~ minecraft:sweet_berry_bush[age=0] run data modify storage bs:out hitbox.shape set value [[3, 0, 3, 13, 8, 13]]
execute if block ~ ~ ~ minecraft:sweet_berry_bush[age=1] run data modify storage bs:out hitbox.shape set value [[1, 0, 1, 15, 16, 15]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/82.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/82.mcfunction
index 432a1f7dcf..0c5bc61ae0 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/82.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/82.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# tall_crop group
execute if block ~ ~ ~ #bs.hitbox:shape/tall_crop[age=0] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 2, 16]]
execute if block ~ ~ ~ #bs.hitbox:shape/tall_crop[age=1] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 4, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/83.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/83.mcfunction
index 4219dd72b2..755eff5c6f 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/83.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/83.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# torch group
data modify storage bs:out hitbox.shape set value [[6, 0, 6, 10, 10, 10]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/84.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/84.mcfunction
index 3051e79732..3938c9def2 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/84.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/84.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# torchflower_crop group
execute if block ~ ~ ~ minecraft:torchflower_crop[age=0] run data modify storage bs:out hitbox.shape set value [[5, 0, 5, 11, 6, 11]]
execute if block ~ ~ ~ minecraft:torchflower_crop[age=1] run data modify storage bs:out hitbox.shape set value [[5, 0, 5, 11, 10, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/85.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/85.mcfunction
index e01e70244d..4ee6bd512a 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/85.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/85.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# trapdoor group
execute if block ~ ~ ~ #bs.hitbox:shape/trapdoor[facing=west,open=true] run data modify storage bs:out hitbox.shape set value [[13, 0, 0, 16, 16, 16]]
execute if block ~ ~ ~ #bs.hitbox:shape/trapdoor[facing=east,open=true] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 3, 16, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/86.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/86.mcfunction
index 126acb3350..d9edfab98e 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/86.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/86.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# tripwire_hook group
execute if block ~ ~ ~ minecraft:tripwire_hook[facing=west] run data modify storage bs:out hitbox.shape set value [[10, 0, 5, 16, 10, 11]]
execute if block ~ ~ ~ minecraft:tripwire_hook[facing=east] run data modify storage bs:out hitbox.shape set value [[0, 0, 5, 6, 10, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/87.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/87.mcfunction
index b013688072..98ffda424c 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/87.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/87.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# tripwire group
execute if block ~ ~ ~ minecraft:tripwire[attached=true] run data modify storage bs:out hitbox.shape set value [[0.0, 1.0, 0.0, 16.0, 2.5, 16.0]]
execute if block ~ ~ ~ minecraft:tripwire[attached=false] run data modify storage bs:out hitbox.shape set value [[0, 0, 0, 16, 8, 16]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/88.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/88.mcfunction
index 1cb1508c1f..17f297946c 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/88.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/88.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# turtle_egg group
data modify storage bs:out hitbox.shape set value [[1, 0, 1, 15, 7, 15]]
execute if block ~ ~ ~ minecraft:turtle_egg[eggs=1] run data modify storage bs:out hitbox.shape set value [[3, 0, 3, 12, 7, 12]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/89.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/89.mcfunction
index 86f12383dc..b5ce5ab869 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/89.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/89.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# twisting_vines group
data modify storage bs:out hitbox.shape set value [[4, 0, 4, 12, 15, 12]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/9.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/9.mcfunction
index ad730b4879..c8c643d51a 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/9.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/9.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# big_dripleaf_stem group
execute if block ~ ~ ~ minecraft:big_dripleaf_stem[facing=west] run data modify storage bs:out hitbox.shape set value [[9, 0, 5, 15, 16, 11]]
execute if block ~ ~ ~ minecraft:big_dripleaf_stem[facing=east] run data modify storage bs:out hitbox.shape set value [[1, 0, 5, 7, 16, 11]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/90.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/90.mcfunction
index 2784e9df3e..e96f255755 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/90.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/90.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# vine_shaped group
data modify storage bs:out hitbox.shape set value []
execute if block ~ ~ ~ #bs.hitbox:shape/vine_shaped[up=true] run data modify storage bs:out hitbox.shape append value [0, 15, 0, 16, 16, 16]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/91.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/91.mcfunction
index 6b1c6ba810..de1a139b34 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/91.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/91.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# wall_banner group
execute if block ~ ~ ~ #bs.hitbox:shape/wall_banner[facing=west] run data modify storage bs:out hitbox.shape set value [[14.0, 0.0, 0.0, 16.0, 12.5, 16.0]]
execute if block ~ ~ ~ #bs.hitbox:shape/wall_banner[facing=east] run data modify storage bs:out hitbox.shape set value [[0.0, 0.0, 0.0, 2.0, 12.5, 16.0]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/92.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/92.mcfunction
index 596cb600af..1851d8f2a8 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/92.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/92.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# wall_hanging_sign group
execute if block ~ ~ ~ #bs.hitbox:shape/wall_hanging_sign[facing=west] run data modify storage bs:out hitbox.shape set value [[6, 14, 0, 10, 16, 16],[7, 0, 1, 9, 10, 15]]
execute if block ~ ~ ~ #bs.hitbox:shape/wall_hanging_sign[facing=east] run data modify storage bs:out hitbox.shape set value [[6, 14, 0, 10, 16, 16],[7, 0, 1, 9, 10, 15]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/93.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/93.mcfunction
index 1b5b9ee941..9bb39580e9 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/93.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/93.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# wall_head group
execute if block ~ ~ ~ #bs.hitbox:shape/wall_head[facing=west] run data modify storage bs:out hitbox.shape set value [[8, 4, 4, 16, 12, 12]]
execute if block ~ ~ ~ #bs.hitbox:shape/wall_head[facing=east] run data modify storage bs:out hitbox.shape set value [[0, 4, 4, 8, 12, 12]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/94.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/94.mcfunction
index 0a008350e2..90269e7922 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/94.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/94.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# wall_sign group
execute if block ~ ~ ~ #bs.hitbox:shape/wall_sign[facing=west] run data modify storage bs:out hitbox.shape set value [[14.0, 4.5, 0.0, 16.0, 12.5, 16.0]]
execute if block ~ ~ ~ #bs.hitbox:shape/wall_sign[facing=east] run data modify storage bs:out hitbox.shape set value [[0.0, 4.5, 0.0, 2.0, 12.5, 16.0]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/95.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/95.mcfunction
index b913ca15d1..9c24aeb239 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/95.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/95.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# wall_torch group
execute if block ~ ~ ~ #bs.hitbox:shape/wall_torch[facing=west] run data modify storage bs:out hitbox.shape set value [[11.0, 3.0, 5.5, 16.0, 13.0, 10.5]]
execute if block ~ ~ ~ #bs.hitbox:shape/wall_torch[facing=east] run data modify storage bs:out hitbox.shape set value [[0.0, 3.0, 5.5, 5.0, 13.0, 10.5]]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/96.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/96.mcfunction
index c6794f458f..5037d7b0bd 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/96.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/96.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# wall group
data modify storage bs:out hitbox.shape set value []
execute if block ~ ~ ~ #bs.hitbox:shape/wall[up=true] run data modify storage bs:out hitbox.shape append value [4, 0, 4, 12, 16, 12]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/97.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/97.mcfunction
index a0891f4e2a..5103914b3d 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/97.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_block/registry/97.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# redstone_wire group
data modify storage bs:out hitbox.shape set value []
execute if block ~ ~ ~ minecraft:redstone_wire[west=side] run data modify storage bs:out hitbox.shape append value [0, 0, 3, 13, 1, 13]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/dispatch.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/dispatch.mcfunction
index c15935ea27..17934226ad 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/dispatch.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/dispatch.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$function bs.hitbox:get_entity/registry/$(y)
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/get_entity.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/get_entity.mcfunction
index b1e2f9d917..129352b385 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/get_entity.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/get_entity.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 21/11/2023 (1.20.3)
-# Last modification: 30/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#get
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#get
+# ------------------------------------------------------------------------------------------------------------
scoreboard players set #hitbox.id bs.data 0
execute if entity @s[type=#bs.hitbox:shape/group_1] run scoreboard players add #hitbox.id bs.data 1
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/0.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/0.mcfunction
index e2f26a7eb2..71b51a2944 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/0.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/0.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# fallback group
data modify storage bs:out hitbox set value {width:0.0,height:0.0}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/1.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/1.mcfunction
index d2d524eb15..91027c4fc9 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/1.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/1.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# allay group
data modify storage bs:out hitbox set value {width:0.35,height:0.6}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/10.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/10.mcfunction
index 1e6172e832..c0e17e32b5 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/10.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/10.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# camel group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute at @s positioned ~ ~1 ~ store result score #hitbox.is_sitting bs.data unless entity @s[dx=0]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/11.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/11.mcfunction
index df23389dde..f653ddcad7 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/11.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/11.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# cat_like group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.6,height:0.7}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/12.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/12.mcfunction
index 145c724148..00eadc134c 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/12.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/12.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# cave_spider group
data modify storage bs:out hitbox set value {width:0.7,height:0.5}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/13.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/13.mcfunction
index 051b451b93..3103bbe8b6 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/13.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/13.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# chicken group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.4,height:0.7}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/14.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/14.mcfunction
index b59aaff758..f9f1206d65 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/14.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/14.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# cod group
data modify storage bs:out hitbox set value {width:0.5,height:0.3}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/15.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/15.mcfunction
index 8c4a4adf25..3a813751e8 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/15.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/15.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# cow_like group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.9,height:1.4}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/16.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/16.mcfunction
index c3ea477b25..3e4ff27f75 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/16.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/16.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# creeper group
data modify storage bs:out hitbox set value {width:0.6,height:1.7}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/17.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/17.mcfunction
index a81579a02d..a488f7ddb2 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/17.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/17.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# dolphin group
data modify storage bs:out hitbox set value {width:0.9,height:0.6}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/18.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/18.mcfunction
index 2205b2cc3a..0e16711e6f 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/18.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/18.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# donkey group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:1.3964844,height:1.5}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/19.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/19.mcfunction
index 5cec8ba6c8..55622d6eec 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/19.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/19.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# elder_guardian group
data modify storage bs:out hitbox set value {width:1.9975,height:1.9975}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/2.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/2.mcfunction
index fa074a28de..3c59c67e5a 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/2.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/2.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# area_effect_cloud group
data modify storage bs:out hitbox set value {width:0,height:0.5}
execute store result score #hitbox.width bs.data run data get entity @s Radius 20000000
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/20.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/20.mcfunction
index b2b06751b5..1fd62ad6f4 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/20.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/20.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# end_crystal group
data modify storage bs:out hitbox set value {width:2.0,height:2.0}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/21.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/21.mcfunction
index 7898122432..3eb1bfd243 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/21.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/21.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# ender_dragon group
data modify storage bs:out hitbox set value {width:16.0,height:8.0}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/22.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/22.mcfunction
index 5e2f68df28..f2e5e7dc80 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/22.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/22.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# enderman group
data modify storage bs:out hitbox set value {width:0.6,height:2.9}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/23.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/23.mcfunction
index c942e03d93..3d51957d96 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/23.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/23.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# falling_block_like group
data modify storage bs:out hitbox set value {width:0.98,height:0.98}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/24.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/24.mcfunction
index 8bcf471c81..6c31338177 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/24.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/24.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# frog group
data modify storage bs:out hitbox set value {width:0.5,height:0.5}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/25.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/25.mcfunction
index ba206e0e94..45ef767493 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/25.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/25.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# ghast group
data modify storage bs:out hitbox set value {width:4.0,height:4.0}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/26.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/26.mcfunction
index 7624982cc8..a59e69de7b 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/26.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/26.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# giant group
data modify storage bs:out hitbox set value {width:3.6,height:12.0}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/27.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/27.mcfunction
index aede5dcf91..613d28a48f 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/27.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/27.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# evoker_fangs group
data modify storage bs:out hitbox set value {width:0.5,height:0.8}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/28.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/28.mcfunction
index e024437fe5..583a47e2ae 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/28.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/28.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# guardian group
data modify storage bs:out hitbox set value {width:0.85,height:0.85}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/29.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/29.mcfunction
index 8238de9838..4c03e63fe3 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/29.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/29.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# hoglin group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:1.3964844,height:1.4}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/3.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/3.mcfunction
index 5626201039..7d7add8d91 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/3.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/3.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# armor_stand group
data modify storage bs:ctx _ set from entity @s
data modify storage bs:out hitbox set value {width:0.5,height:1.975}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/30.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/30.mcfunction
index 04287dad88..0ff89e2672 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/30.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/30.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# horse_like group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:1.3964844,height:1.6}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/31.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/31.mcfunction
index 75b9e2bfac..e51cc1b7e0 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/31.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/31.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# interaction group
data modify storage bs:ctx _ set from entity @s
data modify storage bs:out hitbox set value {}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/32.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/32.mcfunction
index f65a20935d..93a864e092 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/32.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/32.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# iron_golem group
data modify storage bs:out hitbox set value {width:1.4,height:2.7}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/33.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/33.mcfunction
index 732571a8e1..11d9d0748f 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/33.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/33.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# item_like group
data modify storage bs:out hitbox set value {width:0.25,height:0.25}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/34.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/34.mcfunction
index 76b84390c4..e0ac582a09 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/34.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/34.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# item_frame group
execute store result score #result bs.data run data get entity @s Facing
execute if score #result bs.data matches 0 run data modify storage bs:out hitbox set value {shape:[[2.0, 14.46875, 2.0, 14.0, 16.0, 14.0]]}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/35.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/35.mcfunction
index 4ca1b5900b..a5758f967e 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/35.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/35.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# leash_knot group
data modify storage bs:out hitbox set value {width:0.375,height:0.5}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/36.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/36.mcfunction
index 8b457652c8..42e8c47d6f 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/36.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/36.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# llama group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.9,height:1.87}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/37.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/37.mcfunction
index ff5deb5307..77a256e707 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/37.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/37.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# minecart group
data modify storage bs:out hitbox set value {width:0.98,height:0.7}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/38.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/38.mcfunction
index 85ffa0ce9e..4b23ff8078 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/38.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/38.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# painting group
execute store result score #result bs.data run data get entity @s facing
execute if score #result bs.data matches 0 run data modify storage bs:out hitbox set value {shape:[[0, 0, 0, 16, 16, 1]]}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/39.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/39.mcfunction
index fbe2f5491d..9585ad9453 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/39.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/39.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# panda group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:1.3,height:1.25}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/4.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/4.mcfunction
index 4cfcf9bcc4..739f61c3f9 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/4.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/4.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# arrow_like group
data modify storage bs:out hitbox set value {width:0.5,height:0.5}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/40.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/40.mcfunction
index 0e2b0cf733..e8a3a391d7 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/40.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/40.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# phantom group
data modify storage bs:out hitbox set value {}
execute store result score #result bs.data run data get entity @s Size 15
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/41.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/41.mcfunction
index ac843b215d..d5cf5ba71b 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/41.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/41.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# pig group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.9,height:0.9}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/42.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/42.mcfunction
index 74df39c9ea..06f297d048 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/42.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/42.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# polar_bear group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:1.4,height:1.4}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/43.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/43.mcfunction
index 3541459dbe..9fe00efe10 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/43.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/43.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# pufferfish group
execute store result score #result bs.data run data get entity @s PuffState
execute if score #result bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.35,height:0.35}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/44.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/44.mcfunction
index d8c6706679..3017d568bc 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/44.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/44.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# rabbit group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.4,height:0.5}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/45.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/45.mcfunction
index 87aec9a095..4d5f88f8bf 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/45.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/45.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# ravager group
data modify storage bs:out hitbox set value {width:1.95,height:2.2}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/46.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/46.mcfunction
index 6a95395d7c..33199266d3 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/46.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/46.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# salmon group
data modify storage bs:out hitbox set value {width:0.7,height:0.4}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/47.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/47.mcfunction
index d7db59330f..55cfe28970 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/47.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/47.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# sheep group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.9,height:1.3}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/48.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/48.mcfunction
index d94a119b83..1c4b269b1c 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/48.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/48.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# shulker_like group
data modify storage bs:out hitbox set value {width:1.0,height:1.0}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/49.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/49.mcfunction
index 883bbdee42..65fc1697d5 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/49.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/49.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# silverfish_like group
data modify storage bs:out hitbox set value {width:0.4,height:0.3}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/5.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/5.mcfunction
index be72ebff6a..9491cf5a6c 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/5.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/5.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# axolotl group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.75,height:0.42}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/50.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/50.mcfunction
index 4eda061ee1..9d95d39ef6 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/50.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/50.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# skeleton group
data modify storage bs:out hitbox set value {width:0.6,height:1.99}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/51.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/51.mcfunction
index 9b8aad1a74..e66a0101ef 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/51.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/51.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# slime_like group
execute store result score #result bs.data run data get entity @s Size
scoreboard players add #result bs.data 1
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/52.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/52.mcfunction
index 3ce993284c..fabf940bf9 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/52.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/52.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# small_fireball_like group
data modify storage bs:out hitbox set value {width:0.3125,height:0.3125}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/53.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/53.mcfunction
index 20c34e3d22..6acb7662ee 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/53.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/53.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# sniffer group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:1.9,height:1.75}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/54.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/54.mcfunction
index 51ea0a75cb..f13c176f86 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/54.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/54.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# snow_golem group
data modify storage bs:out hitbox set value {width:0.7,height:1.9}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/55.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/55.mcfunction
index 6ac11bff31..1900a82cda 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/55.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/55.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# spider group
data modify storage bs:out hitbox set value {width:1.4,height:0.9}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/56.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/56.mcfunction
index d6a597fd4f..370a673d91 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/56.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/56.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# squid group
data modify storage bs:out hitbox set value {width:0.8,height:0.8}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/57.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/57.mcfunction
index 2ec89759db..f128fc4460 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/57.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/57.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# strider group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.9,height:1.7}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/58.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/58.mcfunction
index 35a8fe2847..28dab2bd70 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/58.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/58.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# tadpole group
data modify storage bs:out hitbox set value {width:0.4,height:0.3}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/59.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/59.mcfunction
index 96a80ed5ac..4f297081d3 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/59.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/59.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# tropical_fish group
data modify storage bs:out hitbox set value {width:0.5,height:0.4}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/6.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/6.mcfunction
index f65046f3e7..ab12cef6c9 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/6.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/6.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# bat_like group
data modify storage bs:out hitbox set value {width:0.5,height:0.9}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/60.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/60.mcfunction
index 8deb07d851..9b3362e6a9 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/60.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/60.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# turtle group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:1.2,height:0.4}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/61.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/61.mcfunction
index 26a320f097..c1e050e409 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/61.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/61.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# vex group
data modify storage bs:out hitbox set value {width:0.4,height:0.8}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/62.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/62.mcfunction
index 7daa95a808..d1c547ebce 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/62.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/62.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# warden group
execute at @s positioned ~ ~1.5 ~ store result score #result bs.data unless entity @s[dx=0]
execute if score #result bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.9,height:2.9}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/63.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/63.mcfunction
index 02ef724bc6..3f111358d4 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/63.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/63.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# wither group
data modify storage bs:out hitbox set value {width:0.9,height:3.5}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/64.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/64.mcfunction
index 56158e6c17..c8a0bc753f 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/64.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/64.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# wither_skeleton group
data modify storage bs:out hitbox set value {width:0.7,height:2.4}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/65.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/65.mcfunction
index 83b8721375..203499dc77 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/65.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/65.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# breeze group
data modify storage bs:out hitbox set value {width:0.6,height:1.77}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/66.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/66.mcfunction
index db3c75e261..ede2280629 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/66.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/66.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# wolf group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.6,height:0.85}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/67.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/67.mcfunction
index 1fd2afdffb..3769924836 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/67.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/67.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# zombie_like group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.6,height:1.95}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/68.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/68.mcfunction
index 3ae7b97c93..662d3fd65d 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/68.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/68.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# player group
data modify storage bs:out hitbox set value {width:0.6,height:1.8}
execute at @s positioned ~ ~1.6 ~ unless entity @s[dx=0] run data modify storage bs:out hitbox.height set value 1.5
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/69.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/69.mcfunction
index e69965e1f1..2d597724a8 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/69.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/69.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# villager group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute at @s positioned ~ ~.5 ~ store result score #hitbox.is_sleeping bs.data unless entity @s[dx=0]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/7.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/7.mcfunction
index 45654c7241..0596cfba60 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/7.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/7.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# bee group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.7,height:0.6}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/70.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/70.mcfunction
index 0b4fa1c842..1aacb61c5d 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/70.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/70.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# goat group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 at @s positioned ~ ~1 ~ store result score #hitbox.is_long_jumping bs.data unless entity @s[dx=0]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/71.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/71.mcfunction
index d33834dd60..e582842435 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/71.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/71.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# armadilo group
execute store success score #success bs.data if predicate bs.hitbox:is_baby
execute if score #success bs.data matches 0 run data modify storage bs:out hitbox set value {width:0.7,height:0.65}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/8.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/8.mcfunction
index 1093223ebb..54f9513751 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/8.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/8.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# blaze group
data modify storage bs:out hitbox set value {width:0.6,height:1.8}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/9.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/9.mcfunction
index 7d927dcf1e..978e78a5f0 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/9.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/get_entity/registry/9.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# boat group
data modify storage bs:out hitbox set value {width:1.375,height:0.5625}
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/check.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/check.mcfunction
index 57415c145c..8f8f1b5e01 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/check.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/check.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #hitbox.min_x bs.data run data get storage bs:out hitbox.shape[-1][0] 62.5
execute store result score #hitbox.min_y bs.data run data get storage bs:out hitbox.shape[-1][1] 62.5
execute store result score #hitbox.min_z bs.data run data get storage bs:out hitbox.shape[-1][2] 62.5
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/get_pos.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/get_pos.mcfunction
index 1e3cd4c942..da47b393e6 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/get_pos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/get_pos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
tp @s ~ ~ ~
execute store result score #hitbox.x bs.data run data get entity @s Pos[0] 1000
execute store result score #hitbox.y bs.data run data get entity @s Pos[1] 1000
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/is_in_block.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/is_in_block.mcfunction
index 7f1afd1818..75a16a4bd1 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/is_in_block.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_block/is_in_block.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 21/11/2023 (1.20.3)
-# Last modification: 30/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#is-inside
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#is-inside
+# ------------------------------------------------------------------------------------------------------------
execute if block ~ ~ ~ #bs.hitbox:intangible run return 0
execute unless block ~ ~ ~ #bs.hitbox:is_composite run return 1
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/check.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/check.mcfunction
index 25220d1298..c0026ead9e 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/check.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/check.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:ctx _ set from entity @s Pos
execute store result score #hitbox.min_x bs.data store result score #hitbox.max_x bs.data run data get storage bs:ctx _[0] 1000
execute store result score #hitbox.min_y bs.data store result score #hitbox.max_y bs.data run data get storage bs:ctx _[1] 1000
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/get_pos.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/get_pos.mcfunction
index 1e3cd4c942..da47b393e6 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/get_pos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/get_pos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
tp @s ~ ~ ~
execute store result score #hitbox.x bs.data run data get entity @s Pos[0] 1000
execute store result score #hitbox.y bs.data run data get entity @s Pos[1] 1000
diff --git a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/is_in_entity.mcfunction b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/is_in_entity.mcfunction
index cb30894e81..8dacb894a1 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/is_in_entity.mcfunction
+++ b/datapacks/Bookshelf/data/bs.hitbox/function/is_in_entity/is_in_entity.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 21/11/2023 (1.20.3)
-# Last modification: 30/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#is-inside
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#is-inside
+# ------------------------------------------------------------------------------------------------------------
execute if entity @s[type=#bs.hitbox:intangible] run return 0
execute as B5-0-0-0-1 run function bs.hitbox:is_in_entity/get_pos
diff --git a/datapacks/Bookshelf/data/bs.hitbox/tags/function/get_block.json b/datapacks/Bookshelf/data/bs.hitbox/tags/function/get_block.json
index 00c58c2e7c..7973c3c94c 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/tags/function/get_block.json
+++ b/datapacks/Bookshelf/data/bs.hitbox/tags/function/get_block.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.hitbox:get_block/get_block"
]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/tags/function/get_entity.json b/datapacks/Bookshelf/data/bs.hitbox/tags/function/get_entity.json
index 2c4a8fcfb1..834f29f0bb 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/tags/function/get_entity.json
+++ b/datapacks/Bookshelf/data/bs.hitbox/tags/function/get_entity.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.hitbox:get_entity/get_entity"
]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/tags/function/help.json b/datapacks/Bookshelf/data/bs.hitbox/tags/function/help.json
index f0a5aa2bc2..0aaa460099 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.hitbox/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/23",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.hitbox:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/tags/function/is_in_block.json b/datapacks/Bookshelf/data/bs.hitbox/tags/function/is_in_block.json
index e22712ad8a..ea4fe41cc0 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/tags/function/is_in_block.json
+++ b/datapacks/Bookshelf/data/bs.hitbox/tags/function/is_in_block.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#is-inside",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.hitbox:is_in_block/is_in_block"
]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/tags/function/is_in_entity.json b/datapacks/Bookshelf/data/bs.hitbox/tags/function/is_in_entity.json
index bb40ef3506..3ee4a3e552 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/tags/function/is_in_entity.json
+++ b/datapacks/Bookshelf/data/bs.hitbox/tags/function/is_in_entity.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#is-inside",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.hitbox:is_in_entity/is_in_entity"
]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/tags/function/load.json b/datapacks/Bookshelf/data/bs.hitbox/tags/function/load.json
index 5483a49b48..fa011990ee 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.hitbox/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/23",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.hitbox:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.hitbox/tags/function/unload.json b/datapacks/Bookshelf/data/bs.hitbox/tags/function/unload.json
index e65c5d42ca..e89f26a9ce 100644
--- a/datapacks/Bookshelf/data/bs.hitbox/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.hitbox/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/23",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.hitbox:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.id/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.id/.metadata/generated/features.json
new file mode 100644
index 0000000000..b61d78dc30
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.id/.metadata/generated/features.json
@@ -0,0 +1,95 @@
+[
+ {
+ "name": "give_cuid",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#give-chain-unique-id",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/10/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/28",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "give_suid",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#give-simple-unique-id",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/10/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/28",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/18/29",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/18/29",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/18/29",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "update_cuids",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#update-chain-unique-id",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/10/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/28",
+ "version": "23w33a"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.id/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.id/.metadata/generated/module.json
new file mode 100644
index 0000000000..4599b19f93
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.id/.metadata/generated/module.json
@@ -0,0 +1,18 @@
+{
+ "name": "bs.id",
+ "display_name": "ID",
+ "description": "Manage entity IDs, essential in scenarios like shooting games where you need to track who is targeting whom.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "features": [
+ "bs.id:give_cuid",
+ "bs.id:give_suid",
+ "bs.id:help",
+ "bs.id:load",
+ "bs.id:unload",
+ "bs.id:update_cuids"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.id/.metadata/module.json b/datapacks/Bookshelf/data/bs.id/.metadata/module.json
new file mode 100644
index 0000000000..e5b7c9849d
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.id/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.id",
+ "display_name": "ID",
+ "description": "Manage entity IDs, essential in scenarios like shooting games where you need to track who is targeting whom.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.id/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.id/function/__help__.mcfunction
index fd34922e9a..0d660bf289 100644
--- a/datapacks/Bookshelf/data/bs.id/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.id/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/id.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.id documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.id/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.id/function/__load__.mcfunction
index f294d5f2b1..12e847ffa5 100644
--- a/datapacks/Bookshelf/data/bs.id/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.id/function/__load__.mcfunction
@@ -1,7 +1,21 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/id.html
+# ------------------------------------------------------------------------------------------------------------
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives add bs.in dummy [{"text":"BS ","color":"dark_gray"},{"text":"Input","color":"aqua"}]
scoreboard objectives add bs.id dummy [{"text":"BS ","color":"dark_gray"},{"text":"ID","color":"aqua"}]
diff --git a/datapacks/Bookshelf/data/bs.id/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.id/function/__unload__.mcfunction
index df415ba47a..e9edc9eb4c 100644
--- a/datapacks/Bookshelf/data/bs.id/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.id/function/__unload__.mcfunction
@@ -1,7 +1,20 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/id.html
+# ------------------------------------------------------------------------------------------------------------
-# CODE ------------------------------------------------------------------------
scoreboard objectives remove bs.in
scoreboard objectives remove bs.id
diff --git a/datapacks/Bookshelf/data/bs.id/function/give_cuid.mcfunction b/datapacks/Bookshelf/data/bs.id/function/give_cuid.mcfunction
index 1acff7f5f4..700cd97338 100644
--- a/datapacks/Bookshelf/data/bs.id/function/give_cuid.mcfunction
+++ b/datapacks/Bookshelf/data/bs.id/function/give_cuid.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: KubbyDev, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 28/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#give-chain-unique-id
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#give-chain-unique-id
+# ------------------------------------------------------------------------------------------------------------
execute if entity @s store result score @s bs.cid run scoreboard players add #counter bs.cid 1
diff --git a/datapacks/Bookshelf/data/bs.id/function/give_suid.mcfunction b/datapacks/Bookshelf/data/bs.id/function/give_suid.mcfunction
index 93b2ce9031..5d02410313 100644
--- a/datapacks/Bookshelf/data/bs.id/function/give_suid.mcfunction
+++ b/datapacks/Bookshelf/data/bs.id/function/give_suid.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: KubbyDev, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 28/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#give-simple-unique-id
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#get-simple-unique-id
+# ------------------------------------------------------------------------------------------------------------
execute if entity @s store result score @s bs.id run scoreboard players add #counter bs.id 1
diff --git a/datapacks/Bookshelf/data/bs.id/function/update_cuids/loop.mcfunction b/datapacks/Bookshelf/data/bs.id/function/update_cuids/loop.mcfunction
index a0aaa62148..08d16893d6 100644
--- a/datapacks/Bookshelf/data/bs.id/function/update_cuids/loop.mcfunction
+++ b/datapacks/Bookshelf/data/bs.id/function/update_cuids/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
scoreboard players add $id.cuid bs.in 1
execute unless entity @n[predicate=bs.id:cuid_equal,sort=arbitrary] run function bs.id:update_cuids/shift
execute if score #size bs.cid < #counter bs.cid run function bs.id:update_cuids/loop
diff --git a/datapacks/Bookshelf/data/bs.id/function/update_cuids/shift.mcfunction b/datapacks/Bookshelf/data/bs.id/function/update_cuids/shift.mcfunction
index 4ddc9508fc..bdf248b35a 100644
--- a/datapacks/Bookshelf/data/bs.id/function/update_cuids/shift.mcfunction
+++ b/datapacks/Bookshelf/data/bs.id/function/update_cuids/shift.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
scoreboard players remove #counter bs.cid 1
scoreboard players remove @n[predicate=bs.id:cuid_upper,sort=arbitrary,limit=2147483647] bs.cid 1
execute if score #size bs.cid < #counter bs.cid unless entity @n[predicate=bs.id:cuid_equal,sort=arbitrary] run function bs.id:update_cuids/shift
diff --git a/datapacks/Bookshelf/data/bs.id/function/update_cuids/update_cuids.mcfunction b/datapacks/Bookshelf/data/bs.id/function/update_cuids/update_cuids.mcfunction
index f2d6e2a7a0..77144ee7d1 100644
--- a/datapacks/Bookshelf/data/bs.id/function/update_cuids/update_cuids.mcfunction
+++ b/datapacks/Bookshelf/data/bs.id/function/update_cuids/update_cuids.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: KubbyDev, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 28/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#update-chain-unique-id
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#update-chain-unique-id
+# ------------------------------------------------------------------------------------------------------------
execute store result score #size bs.cid if entity @e[scores={bs.cid=1..}]
execute if score #size bs.cid < #counter bs.cid run scoreboard players set $id.cuid.check bs.in 0
diff --git a/datapacks/Bookshelf/data/bs.id/tags/function/give_cuid.json b/datapacks/Bookshelf/data/bs.id/tags/function/give_cuid.json
index a678986988..57882c9fc3 100644
--- a/datapacks/Bookshelf/data/bs.id/tags/function/give_cuid.json
+++ b/datapacks/Bookshelf/data/bs.id/tags/function/give_cuid.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#give-chain-unique-id",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/10/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/28",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.id:give_cuid"
]
diff --git a/datapacks/Bookshelf/data/bs.id/tags/function/give_suid.json b/datapacks/Bookshelf/data/bs.id/tags/function/give_suid.json
index 601f2c21a1..c835218c64 100644
--- a/datapacks/Bookshelf/data/bs.id/tags/function/give_suid.json
+++ b/datapacks/Bookshelf/data/bs.id/tags/function/give_suid.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#give-simple-unique-id",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/10/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/28",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.id:give_suid"
]
diff --git a/datapacks/Bookshelf/data/bs.id/tags/function/help.json b/datapacks/Bookshelf/data/bs.id/tags/function/help.json
index 72fb335f28..b8d05ab719 100644
--- a/datapacks/Bookshelf/data/bs.id/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.id/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/18/29",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.id:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.id/tags/function/load.json b/datapacks/Bookshelf/data/bs.id/tags/function/load.json
index e96a219be1..bb507b76fb 100644
--- a/datapacks/Bookshelf/data/bs.id/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.id/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/18/29",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.id:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.id/tags/function/unload.json b/datapacks/Bookshelf/data/bs.id/tags/function/unload.json
index 53c5166f7a..e3d0af37f9 100644
--- a/datapacks/Bookshelf/data/bs.id/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.id/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/18/29",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.id:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.id/tags/function/update_cuids.json b/datapacks/Bookshelf/data/bs.id/tags/function/update_cuids.json
index 75b9bb98ac..41187af012 100644
--- a/datapacks/Bookshelf/data/bs.id/tags/function/update_cuids.json
+++ b/datapacks/Bookshelf/data/bs.id/tags/function/update_cuids.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#update-chain-unique-id",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/10/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/28",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.id:update_cuids/update_cuids"
]
diff --git a/datapacks/Bookshelf/data/bs.link/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.link/.metadata/generated/features.json
new file mode 100644
index 0000000000..cf9cda72be
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.link/.metadata/generated/features.json
@@ -0,0 +1,408 @@
+[
+ {
+ "name": "create_link_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#create-link",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2020/05/16",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.15"
+ },
+ "dependencies": [
+ "bs.id"
+ ]
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_pos_and_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_pos_x",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_pos_y",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_pos_z",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_rot_h",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_rot_v",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "keep_local_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#keep-local-position",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/13",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.1"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.position"
+ ]
+ },
+ {
+ "name": "mirror_point_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#mirror-point",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.1"
+ },
+ "dependencies": [
+ "bs.position"
+ ]
+ },
+ {
+ "name": "mirror_x_plane",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#mirror-plane",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.1"
+ }
+ },
+ {
+ "name": "mirror_z_plane",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#mirror-plane",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.1"
+ }
+ },
+ {
+ "name": "reverse_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_pos_and_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_pos_x",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_pos_y",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_pos_z",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_rot_h",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_rot_v",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/12",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "update_link",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#update-link",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "dependencies": [
+ "bs.position"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.link/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.link/.metadata/generated/module.json
new file mode 100644
index 0000000000..e40c3e1f01
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.link/.metadata/generated/module.json
@@ -0,0 +1,41 @@
+{
+ "name": "bs.link",
+ "display_name": "Link",
+ "description": "Construct coherent entity structures by linking entitiesβ positions and rotations.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "dependencies": [
+ "bs.id",
+ "bs.position"
+ ],
+ "features": [
+ "bs.link:create_link_ata",
+ "bs.link:help",
+ "bs.link:imitate_pos",
+ "bs.link:imitate_pos_and_rot",
+ "bs.link:imitate_pos_x",
+ "bs.link:imitate_pos_y",
+ "bs.link:imitate_pos_z",
+ "bs.link:imitate_rot",
+ "bs.link:imitate_rot_h",
+ "bs.link:imitate_rot_v",
+ "bs.link:keep_local_pos",
+ "bs.link:load",
+ "bs.link:mirror_point_ata",
+ "bs.link:mirror_x_plane",
+ "bs.link:mirror_z_plane",
+ "bs.link:reverse_pos",
+ "bs.link:reverse_pos_and_rot",
+ "bs.link:reverse_pos_x",
+ "bs.link:reverse_pos_y",
+ "bs.link:reverse_pos_z",
+ "bs.link:reverse_rot",
+ "bs.link:reverse_rot_h",
+ "bs.link:reverse_rot_v",
+ "bs.link:unload",
+ "bs.link:update_link"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.link/.metadata/module.json b/datapacks/Bookshelf/data/bs.link/.metadata/module.json
new file mode 100644
index 0000000000..883d9bd5ba
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.link/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.link",
+ "display_name": "Link",
+ "description": "Construct coherent entity structures by linking entitiesβ positions and rotations.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.link/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.link/function/__help__.mcfunction
index fffcad5f21..7237462347 100644
--- a/datapacks/Bookshelf/data/bs.link/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/__help__.mcfunction
@@ -1,6 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html
+# ------------------------------------------------------------------------------------------------------------
-# CODE ------------------------------------------------------------------------
tellraw @s [{"text": "[bs.link documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.link/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.link/function/__load__.mcfunction
index 40dda158c3..bcd126c768 100644
--- a/datapacks/Bookshelf/data/bs.link/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives add bs.const dummy [{"text":"BS ","color":"dark_gray"},{"text":"Constants","color":"aqua"}]
diff --git a/datapacks/Bookshelf/data/bs.link/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.link/function/__unload__.mcfunction
index 6a752444ba..36fb19f591 100644
--- a/datapacks/Bookshelf/data/bs.link/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives remove bs.link.rx
scoreboard objectives remove bs.link.ry
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/apply.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/apply.mcfunction
index e96a998849..1d1432f3dd 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/apply.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/apply.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#create-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#custom-behaviors
+# ------------------------------------------------------------------------------------------------------------
function #bs.position:set_pos_and_rot {scale:0.001}
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_x.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_x.mcfunction
index 7194ef1a62..b356f7402e 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_x.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_x.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors
+# ------------------------------------------------------------------------------------------------------------
execute store result score @s bs.pos.x run scoreboard players operation #link.origin.x bs.data += @s bs.link.rx
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_y.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_y.mcfunction
index 2be14fd87b..e509e3a233 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_y.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_y.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors
+# ------------------------------------------------------------------------------------------------------------
execute store result score @s bs.pos.y run scoreboard players operation #link.origin.y bs.data += @s bs.link.ry
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_z.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_z.mcfunction
index 446e90f996..d6d4fdde80 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_z.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_pos_z.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors
+# ------------------------------------------------------------------------------------------------------------
execute store result score @s bs.pos.z run scoreboard players operation #link.origin.z bs.data += @s bs.link.rz
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_rot_h.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_rot_h.mcfunction
index 5641943b7a..9fbb66fad5 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_rot_h.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_rot_h.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors
+# ------------------------------------------------------------------------------------------------------------
execute store result score @s bs.rot.h run scoreboard players operation #link.origin.h bs.data += @s bs.link.lh
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_rot_v.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_rot_v.mcfunction
index b4b0b5611c..6f880cdabe 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_rot_v.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/imitate_rot_v.mcfunction
@@ -1,17 +1,17 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
-
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors
+# ------------------------------------------------------------------------------------------------------------
execute store result score @s bs.rot.v run scoreboard players operation #link.origin.v bs.data += @s bs.link.lv
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_x.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_x.mcfunction
index 0e79a8f566..90f31565dd 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_x.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_x.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors
+# ------------------------------------------------------------------------------------------------------------
scoreboard players operation @s bs.pos.x -= #link.origin.x bs.data
scoreboard players operation @s bs.pos.x -= @s bs.link.rx
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_y.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_y.mcfunction
index 52afd94127..d2427201db 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_y.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_y.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors
+# ------------------------------------------------------------------------------------------------------------
scoreboard players operation @s bs.pos.y -= #link.origin.y bs.data
scoreboard players operation @s bs.pos.y -= @s bs.link.ry
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_z.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_z.mcfunction
index fb1e310539..1f6575b9d7 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_z.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_pos_z.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors
+# ------------------------------------------------------------------------------------------------------------
scoreboard players operation @s bs.pos.z -= #link.origin.z bs.data
scoreboard players operation @s bs.pos.z -= @s bs.link.rz
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_rot_h.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_rot_h.mcfunction
index 009f941097..83b1706b29 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_rot_h.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_rot_h.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors
+# ------------------------------------------------------------------------------------------------------------
scoreboard players operation @s bs.rot.h -= #link.origin.h bs.data
scoreboard players operation @s bs.rot.h -= @s bs.link.lh
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_rot_v.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_rot_v.mcfunction
index d7badae551..31a7d0c0af 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_rot_v.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/reverse_rot_v.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors
+# -------------------------------------------------------------------------------------------------------------
scoreboard players operation @s bs.rot.v -= #link.origin.v bs.data
scoreboard players operation @s bs.rot.v -= @s bs.link.lv
diff --git a/datapacks/Bookshelf/data/bs.link/function/behaviors/setup.mcfunction b/datapacks/Bookshelf/data/bs.link/function/behaviors/setup.mcfunction
index 197794957f..f1b6c9de85 100644
--- a/datapacks/Bookshelf/data/bs.link/function/behaviors/setup.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/behaviors/setup.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#create-behaviors
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#custom-behaviors
+# ------------------------------------------------------------------------------------------------------------
scoreboard players operation $id.suid bs.in = @s bs.link.to
execute at @n[predicate=bs.id:suid_equal,sort=arbitrary] run function #bs.position:get_pos_and_rot {scale:1000}
diff --git a/datapacks/Bookshelf/data/bs.link/function/create_link_ata.mcfunction b/datapacks/Bookshelf/data/bs.link/function/create_link_ata.mcfunction
index 80d541153c..fe5e948e59 100644
--- a/datapacks/Bookshelf/data/bs.link/function/create_link_ata.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/create_link_ata.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.15)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#create-link
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#create-link
+# ------------------------------------------------------------------------------------------------------------
tag @s add bs.link.this
execute as @n[tag=!bs.link.this] unless predicate bs.id:has_suid run function #bs.id:give_suid
diff --git a/datapacks/Bookshelf/data/bs.link/function/keep_local_pos/apply.mcfunction b/datapacks/Bookshelf/data/bs.link/function/keep_local_pos/apply.mcfunction
index 04b2d104f4..02edb847c6 100644
--- a/datapacks/Bookshelf/data/bs.link/function/keep_local_pos/apply.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/keep_local_pos/apply.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ^$(x) ^$(y) ^$(z)
diff --git a/datapacks/Bookshelf/data/bs.link/function/keep_local_pos/keep_local_pos.mcfunction b/datapacks/Bookshelf/data/bs.link/function/keep_local_pos/keep_local_pos.mcfunction
index 6f0cd4ceb0..e94bd74b27 100644
--- a/datapacks/Bookshelf/data/bs.link/function/keep_local_pos/keep_local_pos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/keep_local_pos/keep_local_pos.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#keep-local-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#keep-local-position
+# ------------------------------------------------------------------------------------------------------------
execute store result storage bs:ctx x double 0.001 run scoreboard players get @s bs.link.lx
execute store result storage bs:ctx y double 0.001 run scoreboard players get @s bs.link.ly
diff --git a/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/apply.mcfunction b/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/apply.mcfunction
index d65aa8ceeb..00a92884f8 100644
--- a/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/apply.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/apply.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ^ ^ ^$(z) ~$(x) $(y)
diff --git a/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/as_origin.mcfunction b/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/as_origin.mcfunction
index 72cf610be5..0c8bfed246 100644
--- a/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/as_origin.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/as_origin.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
function #bs.position:get_distance_ata {scale:1000}
execute store result storage bs:ctx z double -0.001 run scoreboard players get $position.get_distance_ata bs.out
diff --git a/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/mirror_point_ata.mcfunction b/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/mirror_point_ata.mcfunction
index 00ef042820..6fc77a8852 100644
--- a/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/mirror_point_ata.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/mirror_point_ata/mirror_point_ata.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 11/09/2023 (1.20.2)
-# Last modification: 11/09/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#mirror-point
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#mirror-point
+# ------------------------------------------------------------------------------------------------------------
scoreboard players operation $id.suid bs.in = @s bs.link.to
execute as @n[predicate=bs.id:suid_equal,sort=arbitrary] run function bs.link:mirror_point_ata/as_origin
diff --git a/datapacks/Bookshelf/data/bs.link/function/update_link/at_parent.mcfunction b/datapacks/Bookshelf/data/bs.link/function/update_link/at_parent.mcfunction
index 28e92af618..3edf10ad9d 100644
--- a/datapacks/Bookshelf/data/bs.link/function/update_link/at_parent.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/update_link/at_parent.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
function #bs.position:get_relative_ata {scale:1000}
scoreboard players operation @s bs.link.rx = @s bs.pos.x
scoreboard players operation @s bs.link.ry = @s bs.pos.y
diff --git a/datapacks/Bookshelf/data/bs.link/function/update_link/update_link.mcfunction b/datapacks/Bookshelf/data/bs.link/function/update_link/update_link.mcfunction
index ca566ee7db..341b527bf7 100644
--- a/datapacks/Bookshelf/data/bs.link/function/update_link/update_link.mcfunction
+++ b/datapacks/Bookshelf/data/bs.link/function/update_link/update_link.mcfunction
@@ -1,18 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof, Aksiome
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 20/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#update-link
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
-
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#update-link
+# ------------------------------------------------------------------------------------------------------------
scoreboard players operation $id.suid bs.in = @s bs.link.to
execute at @n[predicate=bs.id:suid_equal,sort=arbitrary] run function bs.link:update_link/at_parent
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/create_link_ata.json b/datapacks/Bookshelf/data/bs.link/tags/function/create_link_ata.json
index e24273cda0..0c266563a6 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/create_link_ata.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/create_link_ata.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#create-link",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2020/05/16",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.15"
+ }
+ },
"values": [
"bs.link:create_link_ata"
]
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/help.json b/datapacks/Bookshelf/data/bs.link/tags/function/help.json
new file mode 100644
index 0000000000..a61ac78d89
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/help.json
@@ -0,0 +1,20 @@
+{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
+ "values": [
+ "bs.link:__help__"
+ ]
+}
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos.json b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos.json
index 6049385c12..824481d44a 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/imitate_pos_x",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_and_rot.json b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_and_rot.json
index ae6142b69b..688f416b69 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_and_rot.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_and_rot.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/imitate_pos_x",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_x.json b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_x.json
index 737ed68a10..c7d382994a 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_x.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_x.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/imitate_pos_x",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_y.json b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_y.json
index 65d33909e2..f09a36fd64 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_y.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_y.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/imitate_pos_y",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_z.json b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_z.json
index 12e7d2fe4a..7a08fabf0f 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_z.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_pos_z.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/imitate_pos_z",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot.json b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot.json
index 096417a840..2db007db2e 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/imitate_rot_h",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot_h.json b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot_h.json
index 78df1e2f23..811f4a981f 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot_h.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot_h.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/imitate_rot_h",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot_v.json b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot_v.json
index ad0d54ac90..ddb7e79099 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot_v.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/imitate_rot_v.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/imitate_rot_v",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/keep_local_pos.json b/datapacks/Bookshelf/data/bs.link/tags/function/keep_local_pos.json
index 3d2aea3489..6a566f47bd 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/keep_local_pos.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/keep_local_pos.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#keep-local-position",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/13",
+ "minecraft_version": "1.14"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.1"
+ }
+ },
"values": [
"bs.link:keep_local_pos/keep_local_pos"
]
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/load.json b/datapacks/Bookshelf/data/bs.link/tags/function/load.json
index ee8b505295..5f25c8213c 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.id:load",
"#bs.position:load",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/mirror_point_ata.json b/datapacks/Bookshelf/data/bs.link/tags/function/mirror_point_ata.json
index cedc0f6f58..6e0fbc7899 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/mirror_point_ata.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/mirror_point_ata.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#mirror-point",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.1"
+ }
+ },
"values": [
"bs.link:mirror_point_ata/mirror_point_ata"
]
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/mirror_x_plane.json b/datapacks/Bookshelf/data/bs.link/tags/function/mirror_x_plane.json
index a85c6de8a4..cdd06a41d4 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/mirror_x_plane.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/mirror_x_plane.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#mirror-plane",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.1"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/reverse_pos_x",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/mirror_z_plane.json b/datapacks/Bookshelf/data/bs.link/tags/function/mirror_z_plane.json
index 11a9b47e08..cb8e88ea3c 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/mirror_z_plane.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/mirror_z_plane.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#mirror-plane",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.1"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/imitate_pos_x",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos.json b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos.json
index c9e9d18dc0..f1f0f7289c 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/reverse_pos_x",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_and_rot.json b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_and_rot.json
index d6e3167d9d..5d68d7b001 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_and_rot.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_and_rot.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/reverse_pos_x",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_x.json b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_x.json
index 2192034807..260a253694 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_x.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_x.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/reverse_pos_x",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_y.json b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_y.json
index bb3e2a06e3..bc2801f604 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_y.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_y.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/reverse_pos_y",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_z.json b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_z.json
index c5c0cd9d36..73ca8b0766 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_z.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_pos_z.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/reverse_pos_z",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot.json b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot.json
index 4d18a6a417..b0f0f870fd 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/reverse_rot_h",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot_h.json b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot_h.json
index 4ec10f70fe..bd43689199 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot_h.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot_h.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/reverse_rot_h",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot_v.json b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot_v.json
index d407f98da5..c8fc12e0c7 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot_v.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/reverse_rot_v.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/reverse_rot_v",
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/unload.json b/datapacks/Bookshelf/data/bs.link/tags/function/unload.json
index a44ec3ddb2..fa903a085f 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/12",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.link:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.link/tags/function/update_link.json b/datapacks/Bookshelf/data/bs.link/tags/function/update_link.json
index fff4b70774..e51d596b9d 100644
--- a/datapacks/Bookshelf/data/bs.link/tags/function/update_link.json
+++ b/datapacks/Bookshelf/data/bs.link/tags/function/update_link.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#update-link",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2023/10/20",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.link:update_link/update_link"
]
diff --git a/datapacks/Bookshelf/data/bs.math/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.math/.metadata/generated/features.json
new file mode 100644
index 0000000000..33b13df7cc
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.math/.metadata/generated/features.json
@@ -0,0 +1,431 @@
+[
+ {
+ "name": "acos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/09/04",
+ "version": "1.12.1"
+ },
+ "updated": {
+ "date": "2023/09/05",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "asin",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/08/24",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2023/09/05",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "atan",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/10/01",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2023/09/05",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "atan2",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "version": "23w33a"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "combine",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#combine",
+ "authors": [
+ "Ethanout"
+ ],
+ "created": {
+ "date": "2023/08/13",
+ "version": "23w31a"
+ },
+ "updated": {
+ "date": "2023/08/13",
+ "version": "23w31a"
+ }
+ },
+ {
+ "name": "cos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/15",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2023/08/31",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "divide",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#rounded-division",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/08/26",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2023/09/01",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "exp",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#exponential",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2018/12/25",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/31",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "exp2",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#exponential",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/31",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/31",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "factorial",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#factorial",
+ "authors": [
+ "KubbyDev"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2017/09/08",
+ "version": "1.12.1"
+ },
+ "updated": {
+ "date": "2023/08/31",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "frexp",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#float-manipulation",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/02",
+ "version": "23w33a"
+ },
+ "updated": {
+ "date": "2024/01/31",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "gcd",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#greatest-common-denominator",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/10/28",
+ "version": "1.12.2"
+ },
+ "updated": {
+ "date": "2023/08/03",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "ipow",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#power",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "isqrt",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#square-root",
+ "authors": [
+ "Ethanout",
+ "Triton365",
+ "xiaodou123"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2023/01/26",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "ldexp",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#float-manipulation",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/28",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/28",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "log",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/06",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "log10",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/07",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "log2",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/07",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "loga",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/07",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "pow",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#pow",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/30",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "sin",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Leirof"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2017/05/16",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2023/08/31",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "sincos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "version": "23w33a"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "sqrt",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#square-root",
+ "authors": [
+ "Aksiome",
+ "Ethanout",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/01/28",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "tan",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2018/10/01",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.math/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.math/.metadata/generated/module.json
new file mode 100644
index 0000000000..dd1bba2798
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.math/.metadata/generated/module.json
@@ -0,0 +1,47 @@
+{
+ "name": "bs.math",
+ "display_name": "Math",
+ "description": "The beatifull world of mathematics⦠in Minecraft!",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html",
+ "authors": [
+ "Aksiome",
+ "Ethanout",
+ "KubbyDev",
+ "Leirof",
+ "Triton365",
+ "theogiraudet",
+ "xiaodou123"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "features": [
+ "bs.math:acos",
+ "bs.math:asin",
+ "bs.math:atan",
+ "bs.math:atan2",
+ "bs.math:combine",
+ "bs.math:cos",
+ "bs.math:divide",
+ "bs.math:exp",
+ "bs.math:exp2",
+ "bs.math:factorial",
+ "bs.math:frexp",
+ "bs.math:gcd",
+ "bs.math:help",
+ "bs.math:ipow",
+ "bs.math:isqrt",
+ "bs.math:ldexp",
+ "bs.math:load",
+ "bs.math:log",
+ "bs.math:log10",
+ "bs.math:log2",
+ "bs.math:loga",
+ "bs.math:pow",
+ "bs.math:sin",
+ "bs.math:sincos",
+ "bs.math:sqrt",
+ "bs.math:tan",
+ "bs.math:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.math/.metadata/module.json b/datapacks/Bookshelf/data/bs.math/.metadata/module.json
new file mode 100644
index 0000000000..c4ae4f73e6
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.math/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.math",
+ "display_name": "Math",
+ "description": "The beatifull world of mathematics⦠in Minecraft!",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.math/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.math/function/__help__.mcfunction
index 9d5db18eaa..b6acf07a23 100644
--- a/datapacks/Bookshelf/data/bs.math/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.math documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.math/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.math/function/__load__.mcfunction
index a7100016ab..5b114ef21f 100644
--- a/datapacks/Bookshelf/data/bs.math/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
execute unless entity B5-0-0-0-1 run summon minecraft:marker -30000000 0 1600 {UUID:[I;181,0,0,1],Tags:["bs.entity","bs.persistent"]}
diff --git a/datapacks/Bookshelf/data/bs.math/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.math/function/__unload__.mcfunction
index 721b0a3bd6..6138ed54b0 100644
--- a/datapacks/Bookshelf/data/bs.math/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html
+# ------------------------------------------------------------------------------------------------------------
kill B5-0-0-0-1
forceload remove -30000000 1600
diff --git a/datapacks/Bookshelf/data/bs.math/function/acos.mcfunction b/datapacks/Bookshelf/data/bs.math/function/acos.mcfunction
index bb5baa4e24..d99b2601ae 100644
--- a/datapacks/Bookshelf/data/bs.math/function/acos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/acos.mcfunction
@@ -1,19 +1,22 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry
+# ------------------------------------------------------------------------------------------------------------
-# Authors: Aksiome, KubbyDev
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/2018 (1.13)
-# Last modification: 05/09/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry
-# Dependencies:
# Note: This algorithm is taken from the Handbook of Mathematical Functions (M. Abramowitz and I.A. Stegun, Ed.)
-# CODE ------------------------------------------------------------------------
-
scoreboard players operation #math.acos.x bs.data = $math.acos.x bs.in
execute if score $math.acos.x bs.in matches ..-1 run scoreboard players operation #math.acos.x bs.data *= -1 bs.const
diff --git a/datapacks/Bookshelf/data/bs.math/function/asin.mcfunction b/datapacks/Bookshelf/data/bs.math/function/asin.mcfunction
index b42f3205c1..d6b7f9ea24 100644
--- a/datapacks/Bookshelf/data/bs.math/function/asin.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/asin.mcfunction
@@ -1,19 +1,22 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry
+# ------------------------------------------------------------------------------------------------------------
-# Authors: Aksiome, KubbyDev
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/2018 (1.13)
-# Last modification: 05/09/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry
-# Dependencies:
# Note: This algorithm is taken from the Handbook of Mathematical Functions (M. Abramowitz and I.A. Stegun, Ed.)
-# CODE ------------------------------------------------------------------------
-
scoreboard players operation #math.asin.x bs.data = $math.asin.x bs.in
execute if score $math.asin.x bs.in matches ..-1 run scoreboard players operation #math.asin.x bs.data *= -1 bs.const
diff --git a/datapacks/Bookshelf/data/bs.math/function/atan/atan.mcfunction b/datapacks/Bookshelf/data/bs.math/function/atan/atan.mcfunction
index 3b4f77bc06..78bf4748ed 100644
--- a/datapacks/Bookshelf/data/bs.math/function/atan/atan.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/atan/atan.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: 18/01/2023 (1.19.2)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry
+# ------------------------------------------------------------------------------------------------------------
return run execute as B5-0-0-0-1 run function bs.math:atan/run
diff --git a/datapacks/Bookshelf/data/bs.math/function/atan/run.mcfunction b/datapacks/Bookshelf/data/bs.math/function/atan/run.mcfunction
index ae153a7ad2..0fa09e3176 100644
--- a/datapacks/Bookshelf/data/bs.math/function/atan/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/atan/run.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity @s Pos[0] double 0.001 run scoreboard players get $math.atan.x bs.in
data modify entity @s Pos[2] set value 1.0
execute positioned 0.0 0.0 0.0 facing entity @s feet rotated ~ 0.0 in minecraft:overworld run tp @s -30000000 0 1600 ~ ~
diff --git a/datapacks/Bookshelf/data/bs.math/function/atan2/atan2.mcfunction b/datapacks/Bookshelf/data/bs.math/function/atan2/atan2.mcfunction
index fbcf256e48..47668b860e 100644
--- a/datapacks/Bookshelf/data/bs.math/function/atan2/atan2.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/atan2/atan2.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 05/09/2023 (23w33a)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry
+# ------------------------------------------------------------------------------------------------------------
return run execute as B5-0-0-0-1 run function bs.math:atan2/run
diff --git a/datapacks/Bookshelf/data/bs.math/function/atan2/run.mcfunction b/datapacks/Bookshelf/data/bs.math/function/atan2/run.mcfunction
index d0e2b7435e..87efcc0145 100644
--- a/datapacks/Bookshelf/data/bs.math/function/atan2/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/atan2/run.mcfunction
@@ -1,3 +1,20 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity @s Pos[0] double 0.001 run scoreboard players get $math.atan2.y bs.in
execute store result entity @s Pos[2] double 0.001 run scoreboard players get $math.atan2.x bs.in
execute positioned 0.0 0.0 0.0 facing entity @s feet rotated ~ 0.0 in minecraft:overworld run tp @s -30000000 0 1600 ~ ~
diff --git a/datapacks/Bookshelf/data/bs.math/function/combine/combine.mcfunction b/datapacks/Bookshelf/data/bs.math/function/combine/combine.mcfunction
index 6ad9fefac7..29a617777b 100644
--- a/datapacks/Bookshelf/data/bs.math/function/combine/combine.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/combine/combine.mcfunction
@@ -1,19 +1,22 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#combine
+# ------------------------------------------------------------------------------------------------------------
-# Authors: Ethanout
-# Contributors:
-
-# Version: 1.0
-# Created: 13/08/2023 (23w31a)
-# Last modification: 13/08/2023 (23w31a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#combine
-# Dependencies:
# Note: the larger bs.in must be smaller than 46342
-# CODE ------------------------------------------------------------------------
-
# C(n,k)
# keep n, k > 0
diff --git a/datapacks/Bookshelf/data/bs.math/function/combine/recurse/init.mcfunction b/datapacks/Bookshelf/data/bs.math/function/combine/recurse/init.mcfunction
index d2eb84f770..66241414aa 100644
--- a/datapacks/Bookshelf/data/bs.math/function/combine/recurse/init.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/combine/recurse/init.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# ((k-n+1)(k-n+2)...(k-2)(k-1)k) / (1*2*3*...*(n-1)*n)
scoreboard players operation #math.combine.k bs.data -= #math.combine.n bs.data
scoreboard players set #math.combine.i bs.data 0
diff --git a/datapacks/Bookshelf/data/bs.math/function/combine/recurse/next.mcfunction b/datapacks/Bookshelf/data/bs.math/function/combine/recurse/next.mcfunction
index c43b4b3b2e..f2ac9e7ace 100644
--- a/datapacks/Bookshelf/data/bs.math/function/combine/recurse/next.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/combine/recurse/next.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# math magic
scoreboard players add #math.combine.k bs.data 1
scoreboard players add #math.combine.i bs.data 1
diff --git a/datapacks/Bookshelf/data/bs.math/function/combine/recurse/overflow.mcfunction b/datapacks/Bookshelf/data/bs.math/function/combine/recurse/overflow.mcfunction
index 9e5d662c7d..da2f82a01c 100644
--- a/datapacks/Bookshelf/data/bs.math/function/combine/recurse/overflow.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/combine/recurse/overflow.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# t1 = out//i; t2 = out%i; t3 = k//i; t4 = k%i
# out*k//i = t1*t3*i + t2*t3 + t1*t4 + t2*t4//i
#tellraw @a {"score":{"name": "#math.combine.max_out_nonoverflow","objective": "bs.data"}}
diff --git a/datapacks/Bookshelf/data/bs.math/function/cos.mcfunction b/datapacks/Bookshelf/data/bs.math/function/cos.mcfunction
index 53ae340508..d980dd6301 100644
--- a/datapacks/Bookshelf/data/bs.math/function/cos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/cos.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof
-# Contributors: Aksiome
-
-# Version: 2.0
-# Created: ??/??/2018 (1.13)
-# Last modification: 31/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry
+# ------------------------------------------------------------------------------------------------------------
# Normalize angle
scoreboard players operation $math.cos bs.out = $math.cos.x bs.in
diff --git a/datapacks/Bookshelf/data/bs.math/function/divide.mcfunction b/datapacks/Bookshelf/data/bs.math/function/divide.mcfunction
index 1b6477fad2..8a8f70f492 100644
--- a/datapacks/Bookshelf/data/bs.math/function/divide.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/divide.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/2018 (1.13)
-# Last modification: 01/09/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#rounded-division
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#rounded-division
+# ------------------------------------------------------------------------------------------------------------
execute store result score #math.divide.x bs.data run scoreboard players operation $math.divide bs.out = $math.divide.x bs.in
scoreboard players operation $math.divide bs.out /= $math.divide.y bs.in
diff --git a/datapacks/Bookshelf/data/bs.math/function/exp.mcfunction b/datapacks/Bookshelf/data/bs.math/function/exp.mcfunction
index b194157801..b78b6ac7db 100644
--- a/datapacks/Bookshelf/data/bs.math/function/exp.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/exp.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, KubbyDev
-# Contributors:
-
-# Version: 2.2
-# Created: ??/??/2018 (1.13)
-# Last modification: 31/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#exponential
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#exponential
+# ------------------------------------------------------------------------------------------------------------
execute store result score #math.ldexp.e bs.data store result score #math.exp2.x bs.data run data get storage bs:in math.exp.x 24204406.323122970759868621826171875
function bs.math:exp2/run
diff --git a/datapacks/Bookshelf/data/bs.math/function/exp2/exp2.mcfunction b/datapacks/Bookshelf/data/bs.math/function/exp2/exp2.mcfunction
index 13ab42de34..ec40e99da8 100644
--- a/datapacks/Bookshelf/data/bs.math/function/exp2/exp2.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/exp2/exp2.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 31/01/2024 (1.20.4)
-# Last modification: 31/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#exponential
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#exponential
+# ------------------------------------------------------------------------------------------------------------
execute store result score #math.ldexp.e bs.data store result score #math.exp2.x bs.data run data get storage bs:in math.exp2.x 16777216
function bs.math:exp2/run
diff --git a/datapacks/Bookshelf/data/bs.math/function/exp2/fract.mcfunction b/datapacks/Bookshelf/data/bs.math/function/exp2/fract.mcfunction
index 03c6b26d9e..a2c7641843 100644
--- a/datapacks/Bookshelf/data/bs.math/function/exp2/fract.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/exp2/fract.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# polynomial used to approximate exp2(x):
# c0: 1.87757667737929755981396429120877655805088579654694e-3
diff --git a/datapacks/Bookshelf/data/bs.math/function/exp2/run.mcfunction b/datapacks/Bookshelf/data/bs.math/function/exp2/run.mcfunction
index cf0490de38..79e909fdde 100644
--- a/datapacks/Bookshelf/data/bs.math/function/exp2/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/exp2/run.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# exp2(x) = exp2(i) * exp2(f)
scoreboard players operation #math.ldexp.e bs.data /= 16777216 bs.const
execute store result storage bs:ctx x float .000000059604644775390625 run scoreboard players operation #math.exp2.x bs.data %= 16777216 bs.const
diff --git a/datapacks/Bookshelf/data/bs.math/function/factorial/factorial.mcfunction b/datapacks/Bookshelf/data/bs.math/function/factorial/factorial.mcfunction
index fc70bedd4e..6a424b04d4 100644
--- a/datapacks/Bookshelf/data/bs.math/function/factorial/factorial.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/factorial/factorial.mcfunction
@@ -1,19 +1,22 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#factorial
+# ------------------------------------------------------------------------------------------------------------
-# Authors: KubbyDev
-# Contributors: Aksiome
-
-# Version: 1.0
-# Created: ??/??/2018 (1.13)
-# Last modification: 31/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#factorial
-# Dependencies:
# Note: Warning, this function does not work if the input is greater than 12 (because the result is greater than 2^31, the limit value of scoreboards)
-# CODE ------------------------------------------------------------------------
-
execute if score $math.factorial.n bs.in matches 0 run return run scoreboard players set $math.factorial bs.out 1
execute if score $math.factorial.n bs.in matches 1.. store result score #math.factorial.i bs.data run scoreboard players operation $math.factorial bs.out = $math.factorial.n bs.in
execute if score $math.factorial.n bs.in matches 3.. run function bs.math:factorial/loop
diff --git a/datapacks/Bookshelf/data/bs.math/function/factorial/loop.mcfunction b/datapacks/Bookshelf/data/bs.math/function/factorial/loop.mcfunction
index 8fa0564e4f..743fe11d3b 100644
--- a/datapacks/Bookshelf/data/bs.math/function/factorial/loop.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/factorial/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
scoreboard players remove #math.factorial.i bs.data 1
scoreboard players operation $math.factorial bs.out *= #math.factorial.i bs.data
execute if score #math.factorial.i bs.data matches 3.. run function bs.math:factorial/loop
diff --git a/datapacks/Bookshelf/data/bs.math/function/frexp/e_neg.mcfunction b/datapacks/Bookshelf/data/bs.math/function/frexp/e_neg.mcfunction
index d6d1b5452c..62acf29485 100644
--- a/datapacks/Bookshelf/data/bs.math/function/frexp/e_neg.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/frexp/e_neg.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
scoreboard players set #math.frexp.e bs.data 0
execute store result score #result bs.data run data get storage bs:ctx x 18446744073709551616
execute if score #result bs.data matches 0 run scoreboard players remove #math.frexp.e bs.data 64
diff --git a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/chunk.mcfunction b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/chunk.mcfunction
index c9b6de3ef0..de65df84b5 100644
--- a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/chunk.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/chunk.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute unless score #math.frexp.x bs.data matches -1073741823..1073741823 store result storage bs:ctx x float .0000000004656612873077392578125 run scoreboard players get #math.frexp.x bs.data
execute unless score #math.frexp.x bs.data matches -1073741823..1073741823 run return run scoreboard players add #math.frexp.e bs.data 7
execute unless score #math.frexp.x bs.data matches -536870911..536870911 store result storage bs:ctx x float .000000000931322574615478515625 run scoreboard players get #math.frexp.x bs.data
diff --git a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_1.mcfunction b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_1.mcfunction
index b77b7983c2..7220f3da80 100644
--- a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_1.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_1.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #math.frexp.x bs.data run data get storage bs:ctx x .000000000000000000000000000012621774483536188886587657044524579674771302961744368076324462890625
execute unless score #math.frexp.x bs.data matches -8388607..8388607 run return run scoreboard players set #math.frexp.e bs.data 120
execute store result score #math.frexp.x bs.data run data get storage bs:ctx x .0000000000000000000000000032311742677852643549664402033982923967414535582065582275390625
diff --git a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_2.mcfunction b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_2.mcfunction
index d21633b8b9..b0e0776d38 100644
--- a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_2.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_2.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #math.frexp.x bs.data run data get storage bs:ctx x .0000000000000000000542101086242752217003726400434970855712890625
execute unless score #math.frexp.x bs.data matches -8388607..8388607 run return run scoreboard players set #math.frexp.e bs.data 88
execute store result score #math.frexp.x bs.data run data get storage bs:ctx x .00000000000000001387778780781445675529539585113525390625
diff --git a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_3.mcfunction b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_3.mcfunction
index 7d7b89f9c5..9367d0ed0d 100644
--- a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_3.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_3.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #math.frexp.x bs.data run data get storage bs:ctx x .00000000023283064365386962890625
execute unless score #math.frexp.x bs.data matches -8388607..8388607 run return run scoreboard players set #math.frexp.e bs.data 56
execute store result score #math.frexp.x bs.data run data get storage bs:ctx x .000000059604644775390625
diff --git a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_4.mcfunction b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_4.mcfunction
index cd22c19b3a..f72cf2ff32 100644
--- a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_4.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/range_4.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #math.frexp.x bs.data run data get storage bs:ctx x 1
execute unless score #math.frexp.x bs.data matches -8388607..8388607 run return run scoreboard players set #math.frexp.e bs.data 24
execute store result score #math.frexp.x bs.data run data get storage bs:ctx x 256
diff --git a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/split.mcfunction b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/split.mcfunction
index bc46cdfda6..3374ea8ff2 100644
--- a/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/split.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/frexp/e_pos/split.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #math.frexp.x bs.data run data get storage bs:ctx x .000000000000000000000211758236813575084767080625169910490512847900390625
execute unless score #math.frexp.x bs.data matches -8388607..8388607 run return run function bs.math:frexp/e_pos/range_1
execute store result score #math.frexp.x bs.data run data get storage bs:ctx x .0000000000009094947017729282379150390625
diff --git a/datapacks/Bookshelf/data/bs.math/function/frexp/frexp.mcfunction b/datapacks/Bookshelf/data/bs.math/function/frexp/frexp.mcfunction
index 7135756e2c..f5ad93f807 100644
--- a/datapacks/Bookshelf/data/bs.math/function/frexp/frexp.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/frexp/frexp.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.3
-# Created: 02/09/2023 (23w33a)
-# Last modification: 30/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#float-manipulation
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#float-manipulation
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:ctx x set from storage bs:in math.frexp.x
function bs.math:frexp/run
diff --git a/datapacks/Bookshelf/data/bs.math/function/frexp/run.mcfunction b/datapacks/Bookshelf/data/bs.math/function/frexp/run.mcfunction
index 0ed897f7df..78fed0b7c9 100644
--- a/datapacks/Bookshelf/data/bs.math/function/frexp/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/frexp/run.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result score #result bs.data run data get storage bs:ctx x
execute unless score #result bs.data matches 0 run function bs.math:frexp/e_pos/split
execute unless score #result bs.data matches 0 run function bs.math:frexp/e_pos/chunk
diff --git a/datapacks/Bookshelf/data/bs.math/function/gcd/gcd.mcfunction b/datapacks/Bookshelf/data/bs.math/function/gcd/gcd.mcfunction
index b751fe996e..85e7ef3b2f 100644
--- a/datapacks/Bookshelf/data/bs.math/function/gcd/gcd.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/gcd/gcd.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof
-# Contributors: Aksiome
-
-# Version: 1.0
-# Created: ??/??/2018 (1.13)
-# Last modification: 03/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#greatest-common-denominator
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#greatest-common-denominator
+# ------------------------------------------------------------------------------------------------------------
scoreboard players operation $math.gcd bs.out = $math.gcd.a bs.in
scoreboard players operation #math.gcd.b bs.data = $math.gcd.b bs.in
diff --git a/datapacks/Bookshelf/data/bs.math/function/gcd/loop.mcfunction b/datapacks/Bookshelf/data/bs.math/function/gcd/loop.mcfunction
index 2c3f7a57ae..524bdba015 100644
--- a/datapacks/Bookshelf/data/bs.math/function/gcd/loop.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/gcd/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
scoreboard players operation $math.gcd bs.out %= #math.gcd.b bs.data
scoreboard players operation $math.gcd bs.out >< #math.gcd.b bs.data
execute unless score #math.gcd.b bs.data matches 0 run function bs.math:gcd/loop
diff --git a/datapacks/Bookshelf/data/bs.math/function/ipow.mcfunction b/datapacks/Bookshelf/data/bs.math/function/ipow.mcfunction
index f43d4938aa..456ecc38a3 100644
--- a/datapacks/Bookshelf/data/bs.math/function/ipow.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/ipow.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, KubbyDev
-# Contributors:
-
-# Version: 2.2
-# Created: ??/??/2018 (1.13)
-# Last modification: 29/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#power
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#power
+# ------------------------------------------------------------------------------------------------------------
scoreboard players set $math.ipow bs.out 1
execute if score $math.ipow.y bs.in matches 1.. store result score #math.ipow.2 bs.data run scoreboard players operation #math.ipow.1 bs.data = $math.ipow.x bs.in
diff --git a/datapacks/Bookshelf/data/bs.math/function/isqrt.mcfunction b/datapacks/Bookshelf/data/bs.math/function/isqrt.mcfunction
index 3d9595cffc..b7bb5e34e4 100644
--- a/datapacks/Bookshelf/data/bs.math/function/isqrt.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/isqrt.mcfunction
@@ -1,19 +1,22 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#square-root
+# ------------------------------------------------------------------------------------------------------------
-# Authors: Triton365, Ethanout, xiaodou123
-# Contributors:
-
-# Version: 3.1
-# Created: ??/??/2018 (1.13)
-# Last modification: 26/01/2023 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#square-root
-# Dependencies:
# Note: Thanks to the Minecraft Commands' discord server for the help provided (https://discord.gg/QAFXFtZ)
-# CODE ------------------------------------------------------------------------
-
execute store result score #math.isqrt.t1 bs.data store result score #math.isqrt.t2 bs.data store result score #math.isqrt.t3 bs.data store result score #math.isqrt.t4 bs.data run scoreboard players operation $math.isqrt bs.out = $math.isqrt.x bs.in
execute if score $math.isqrt.x bs.in matches 0..1515359 run scoreboard players operation $math.isqrt bs.out /= 559 bs.const
diff --git a/datapacks/Bookshelf/data/bs.math/function/ldexp/ldexp.mcfunction b/datapacks/Bookshelf/data/bs.math/function/ldexp/ldexp.mcfunction
index cc79010301..d91895ebcb 100644
--- a/datapacks/Bookshelf/data/bs.math/function/ldexp/ldexp.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/ldexp/ldexp.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 28/01/2024 (1.20.4)
-# Last modification: 28/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#float-manipulation
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#float-manipulation
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:ctx x set from storage bs:in math.ldexp.x
execute store result score #math.ldexp.e bs.data run data get storage bs:in math.ldexp.e
diff --git a/datapacks/Bookshelf/data/bs.math/function/ldexp/mul.mcfunction b/datapacks/Bookshelf/data/bs.math/function/ldexp/mul.mcfunction
index c7adf22a5d..fe10b49aaa 100644
--- a/datapacks/Bookshelf/data/bs.math/function/ldexp/mul.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/ldexp/mul.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store result storage bs:ctx x float $(y) run data get storage bs:ctx x 16777216
diff --git a/datapacks/Bookshelf/data/bs.math/function/ldexp/run.mcfunction b/datapacks/Bookshelf/data/bs.math/function/ldexp/run.mcfunction
index 7b0c102cbb..5f5fb2dc3c 100644
--- a/datapacks/Bookshelf/data/bs.math/function/ldexp/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/ldexp/run.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result storage bs:ctx y int 1 run scoreboard players add #math.ldexp.e bs.data 127
function bs.math:ldexp/table with storage bs:ctx
function bs.math:ldexp/mul with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.math/function/ldexp/table.mcfunction b/datapacks/Bookshelf/data/bs.math/function/ldexp/table.mcfunction
index e6c2c5e99b..4f54ce85ca 100644
--- a/datapacks/Bookshelf/data/bs.math/function/ldexp/table.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/ldexp/table.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:ctx y set from storage bs:const math.ldexp[$(y)]
diff --git a/datapacks/Bookshelf/data/bs.math/function/log.mcfunction b/datapacks/Bookshelf/data/bs.math/function/log.mcfunction
index 2da8e29764..3f90cab210 100644
--- a/datapacks/Bookshelf/data/bs.math/function/log.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/log.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, KubbyDev
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/2018 (1.13)
-# Last modification: 29/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:ctx x set from storage bs:in math.log.x
function bs.math:log2/run
diff --git a/datapacks/Bookshelf/data/bs.math/function/log10.mcfunction b/datapacks/Bookshelf/data/bs.math/function/log10.mcfunction
index 39517d4baf..f432c6e5f9 100644
--- a/datapacks/Bookshelf/data/bs.math/function/log10.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/log10.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, KubbyDev
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/2018 (1.13)
-# Last modification: 29/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:ctx x set from storage bs:in math.log10.x
function bs.math:log2/run
diff --git a/datapacks/Bookshelf/data/bs.math/function/log2/fract.mcfunction b/datapacks/Bookshelf/data/bs.math/function/log2/fract.mcfunction
index 536371226c..da6e60cae2 100644
--- a/datapacks/Bookshelf/data/bs.math/function/log2/fract.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/log2/fract.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# polynomial used to approximate log2(x):
# c0: -1.71360049568838679334703556378372013568878173828125
diff --git a/datapacks/Bookshelf/data/bs.math/function/log2/log2.mcfunction b/datapacks/Bookshelf/data/bs.math/function/log2/log2.mcfunction
index 86920866ff..3d83a93df5 100644
--- a/datapacks/Bookshelf/data/bs.math/function/log2/log2.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/log2/log2.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, KubbyDev
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/2018 (1.13)
-# Last modification: 29/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:ctx x set from storage bs:in math.log2.x
function bs.math:log2/run
diff --git a/datapacks/Bookshelf/data/bs.math/function/log2/run.mcfunction b/datapacks/Bookshelf/data/bs.math/function/log2/run.mcfunction
index 2e7ee31f72..16606bcc52 100644
--- a/datapacks/Bookshelf/data/bs.math/function/log2/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/log2/run.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# decompose x into a normalized fraction and an integral power of two [log2(x) = log2(frexp.x) + frexp.e]
function bs.math:frexp/run
function bs.math:log2/fract with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.math/function/loga/loga.mcfunction b/datapacks/Bookshelf/data/bs.math/function/loga/loga.mcfunction
index 94da1bd390..aa42ef03a2 100644
--- a/datapacks/Bookshelf/data/bs.math/function/loga/loga.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/loga/loga.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, KubbyDev
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/2018 (1.13)
-# Last modification: 29/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:ctx x set from storage bs:in math.loga.a
function bs.math:log2/run
diff --git a/datapacks/Bookshelf/data/bs.math/function/loga/mul.mcfunction b/datapacks/Bookshelf/data/bs.math/function/loga/mul.mcfunction
index 63fbbd0f23..99eed3548d 100644
--- a/datapacks/Bookshelf/data/bs.math/function/loga/mul.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/loga/mul.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store result storage bs:out math.loga float .00001 run data get storage bs:ctx x $(y)
diff --git a/datapacks/Bookshelf/data/bs.math/function/pow/mul.mcfunction b/datapacks/Bookshelf/data/bs.math/function/pow/mul.mcfunction
index 46b11ba9bd..c2861c4bf4 100644
--- a/datapacks/Bookshelf/data/bs.math/function/pow/mul.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/pow/mul.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store result storage bs:ctx x float $(y) run scoreboard players operation #math.log2.x bs.data += #math.frexp.e bs.data
diff --git a/datapacks/Bookshelf/data/bs.math/function/pow/pow.mcfunction b/datapacks/Bookshelf/data/bs.math/function/pow/pow.mcfunction
index 79316b2b52..a95ea1711e 100644
--- a/datapacks/Bookshelf/data/bs.math/function/pow/pow.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/pow/pow.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 30/01/2024 (1.20.4)
-# Last modification: 30/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#pow
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#pow
+# ------------------------------------------------------------------------------------------------------------
# pow(x,y) = exp2(y * log2(x))
data modify storage bs:ctx x set from storage bs:in math.pow.x
diff --git a/datapacks/Bookshelf/data/bs.math/function/sin.mcfunction b/datapacks/Bookshelf/data/bs.math/function/sin.mcfunction
index b12571c2a1..4d82390c4c 100644
--- a/datapacks/Bookshelf/data/bs.math/function/sin.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/sin.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Leirof
-# Contributors: Aksiome
-
-# Version: 2.0
-# Created: ??/??/2018 (1.13)
-# Last modification: 31/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry
+# ------------------------------------------------------------------------------------------------------------
# Normalize angle
scoreboard players operation $math.sin bs.out = $math.sin.x bs.in
diff --git a/datapacks/Bookshelf/data/bs.math/function/sincos/run.mcfunction b/datapacks/Bookshelf/data/bs.math/function/sincos/run.mcfunction
index acf3d2c7ef..495b0d6e2c 100644
--- a/datapacks/Bookshelf/data/bs.math/function/sincos/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/sincos/run.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity @s Rotation[0] float -0.01 run scoreboard players get $math.sincos.x bs.in
execute at @s positioned 0.0 0.0 0.0 rotated ~ 0.0 run tp @s ^ ^ ^10.0
execute store result score $math.sincos.cos bs.out run data get entity @s Pos[2] 100
diff --git a/datapacks/Bookshelf/data/bs.math/function/sincos/sincos.mcfunction b/datapacks/Bookshelf/data/bs.math/function/sincos/sincos.mcfunction
index 181d667507..2a49049dba 100644
--- a/datapacks/Bookshelf/data/bs.math/function/sincos/sincos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/sincos/sincos.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 05/09/2023 (23w33a)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.math:sincos/run
diff --git a/datapacks/Bookshelf/data/bs.math/function/sqrt.mcfunction b/datapacks/Bookshelf/data/bs.math/function/sqrt.mcfunction
index e4c659c84f..5a0f4e1ab0 100644
--- a/datapacks/Bookshelf/data/bs.math/function/sqrt.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/sqrt.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Ethanout
-# Contributors:
-
-# Version: 1.1
-# Created: 28/08/2023 (23w31a)
-# Last modification: 28/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#square-root
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#square-root
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:ctx x set from storage bs:in math.sqrt.x
function bs.math:frexp/run
diff --git a/datapacks/Bookshelf/data/bs.math/function/tan/run.mcfunction b/datapacks/Bookshelf/data/bs.math/function/tan/run.mcfunction
index 16a613e5c6..6c61bfe805 100644
--- a/datapacks/Bookshelf/data/bs.math/function/tan/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/tan/run.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity @s Rotation[0] float -0.01 run scoreboard players get $math.tan.x bs.in
execute at @s positioned 0.0 0.0 0.0 rotated ~ 0.0 run tp @s ^ ^ ^10.0
execute store result score $math.tan bs.out run data get entity @s Pos[0] 100
diff --git a/datapacks/Bookshelf/data/bs.math/function/tan/tan.mcfunction b/datapacks/Bookshelf/data/bs.math/function/tan/tan.mcfunction
index b48cb1dbd0..f251940888 100644
--- a/datapacks/Bookshelf/data/bs.math/function/tan/tan.mcfunction
+++ b/datapacks/Bookshelf/data/bs.math/function/tan/tan.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, KubbyDev
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/2018 (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry
+# ------------------------------------------------------------------------------------------------------------
return run execute as B5-0-0-0-1 run function bs.math:tan/run
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/acos.json b/datapacks/Bookshelf/data/bs.math/tags/function/acos.json
index 01d942c480..446782da4e 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/acos.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/acos.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/09/04",
+ "minecraft_version": "1.12.1"
+ },
+ "updated": {
+ "date": "2023/09/05",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.math:acos"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/asin.json b/datapacks/Bookshelf/data/bs.math/tags/function/asin.json
index 50fa799413..4590fb31ea 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/asin.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/asin.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/08/24",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2023/09/05",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.math:asin"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/atan.json b/datapacks/Bookshelf/data/bs.math/tags/function/atan.json
index d98b20b5e5..ec90ecf128 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/atan.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/atan.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/10/01",
+ "minecraft_version": "1.13.2"
+ },
+ "updated": {
+ "date": "2023/09/05",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.math:atan/atan"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/atan2.json b/datapacks/Bookshelf/data/bs.math/tags/function/atan2.json
index 441ec60dde..1fd4399e0f 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/atan2.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/atan2.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "minecraft_version": "23w33a"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:atan2/atan2"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/combine.json b/datapacks/Bookshelf/data/bs.math/tags/function/combine.json
index 47d9efc893..0d4757c846 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/combine.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/combine.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#combine",
+ "authors": [
+ "Ethanout"
+ ],
+ "created": {
+ "date": "2023/08/13",
+ "minecraft_version": "23w31a"
+ },
+ "updated": {
+ "date": "2023/08/13",
+ "minecraft_version": "23w31a"
+ }
+ },
"values": [
"bs.math:combine/combine"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/cos.json b/datapacks/Bookshelf/data/bs.math/tags/function/cos.json
index 2fbb390baf..b38523a5da 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/cos.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/cos.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/15",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2023/08/31",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.math:cos"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/divide.json b/datapacks/Bookshelf/data/bs.math/tags/function/divide.json
index 6cbcd79c5d..e809ee4187 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/divide.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/divide.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#rounded-division",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/08/26",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2023/09/01",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.math:divide"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/exp.json b/datapacks/Bookshelf/data/bs.math/tags/function/exp.json
index 8c45920326..beade4e3b2 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/exp.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/exp.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#exponential",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2018/12/25",
+ "minecraft_version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/31",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:exp"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/exp2.json b/datapacks/Bookshelf/data/bs.math/tags/function/exp2.json
index 3c267b00ea..fec386c93b 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/exp2.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/exp2.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#exponential",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/31",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/31",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:exp2/exp2"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/factorial.json b/datapacks/Bookshelf/data/bs.math/tags/function/factorial.json
index b103f07cdf..8f77e69945 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/factorial.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/factorial.json
@@ -1,4 +1,22 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#factorial",
+ "authors": [
+ "KubbyDev"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2017/09/08",
+ "minecraft_version": "1.12.1"
+ },
+ "updated": {
+ "date": "2023/08/31",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.math:factorial/factorial"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/frexp.json b/datapacks/Bookshelf/data/bs.math/tags/function/frexp.json
index 699ed2740a..4f62e64a8b 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/frexp.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/frexp.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#float-manipulation",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/02",
+ "minecraft_version": "23w33a"
+ },
+ "updated": {
+ "date": "2024/01/31",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:frexp/frexp"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/gcd.json b/datapacks/Bookshelf/data/bs.math/tags/function/gcd.json
index 476137b3a2..828c3f0450 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/gcd.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/gcd.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#greatest-common-denominator",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/10/28",
+ "minecraft_version": "1.12.2"
+ },
+ "updated": {
+ "date": "2023/08/03",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.math:gcd/gcd"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/help.json b/datapacks/Bookshelf/data/bs.math/tags/function/help.json
index ba3a0110a4..8116f33d86 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "minecraft_version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/ipow.json b/datapacks/Bookshelf/data/bs.math/tags/function/ipow.json
index 93467b2d12..f8a1be4d3f 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/ipow.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/ipow.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#power",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:ipow"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/isqrt.json b/datapacks/Bookshelf/data/bs.math/tags/function/isqrt.json
index 8e77462819..73cd96f7ca 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/isqrt.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/isqrt.json
@@ -1,4 +1,21 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#square-root",
+ "authors": [
+ "Triton365",
+ "Ethanout",
+ "xiaodou123"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2023/01/26",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:isqrt"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/ldexp.json b/datapacks/Bookshelf/data/bs.math/tags/function/ldexp.json
index b84eea15ca..445440f88f 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/ldexp.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/ldexp.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#float-manipulation",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/28",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/28",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:ldexp/ldexp"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/load.json b/datapacks/Bookshelf/data/bs.math/tags/function/load.json
index 8c72151852..1489ed16db 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "minecraft_version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/log.json b/datapacks/Bookshelf/data/bs.math/tags/function/log.json
index ebfa23fbd9..e3bac26dc0 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/log.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/log.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/06",
+ "minecraft_version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:log"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/log10.json b/datapacks/Bookshelf/data/bs.math/tags/function/log10.json
index c4f7cad782..54c6db3bb9 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/log10.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/log10.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/07",
+ "minecraft_version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:log10"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/log2.json b/datapacks/Bookshelf/data/bs.math/tags/function/log2.json
index 7f803af9d4..3b00826b2d 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/log2.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/log2.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/07",
+ "minecraft_version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:log2/log2"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/loga.json b/datapacks/Bookshelf/data/bs.math/tags/function/loga.json
index 98bed32ac1..608f2beb73 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/loga.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/loga.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/07",
+ "minecraft_version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:loga/loga"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/pow.json b/datapacks/Bookshelf/data/bs.math/tags/function/pow.json
index e50e4c8a71..e35676232f 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/pow.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/pow.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#pow",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/30",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/30",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:pow/pow"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/sin.json b/datapacks/Bookshelf/data/bs.math/tags/function/sin.json
index 1acfe12d7f..c3e4f771c1 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/sin.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/sin.json
@@ -1,4 +1,22 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Leirof"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2017/05/16",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2023/08/31",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.math:sin"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/sincos.json b/datapacks/Bookshelf/data/bs.math/tags/function/sincos.json
index c36dc52a05..89bf997fb2 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/sincos.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/sincos.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "minecraft_version": "23w33a"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:sincos/sincos"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/sqrt.json b/datapacks/Bookshelf/data/bs.math/tags/function/sqrt.json
index ebeed7ba3e..793980205d 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/sqrt.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/sqrt.json
@@ -1,4 +1,21 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#square-root",
+ "authors": [
+ "Aksiome",
+ "Ethanout",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/01/28",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:sqrt"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/tan.json b/datapacks/Bookshelf/data/bs.math/tags/function/tan.json
index b32abfeac4..ee64e8f350 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/tan.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/tan.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2018/10/01",
+ "minecraft_version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:tan/tan"
]
diff --git a/datapacks/Bookshelf/data/bs.math/tags/function/unload.json b/datapacks/Bookshelf/data/bs.math/tags/function/unload.json
index 9f92da2353..80c7115ad3 100644
--- a/datapacks/Bookshelf/data/bs.math/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.math/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "minecraft_version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.math:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.move/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.move/.metadata/generated/features.json
new file mode 100644
index 0000000000..6062f35cb0
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.move/.metadata/generated/features.json
@@ -0,0 +1,134 @@
+[
+ {
+ "name": "apply_local_vel",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#apply-velocity",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/05/28",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "apply_vel",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#apply-velocity",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/05/24",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "canonical_to_local",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#canonical-to-local",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/25",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/19",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/19",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "local_to_canonical",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#local-to-canonical",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/25",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/04/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_motion",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#set-motion",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/10",
+ "version": "1.14.3"
+ },
+ "updated": {
+ "date": "2023/12/13",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/19",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.move/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.move/.metadata/generated/module.json
new file mode 100644
index 0000000000..e1d1563ae3
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.move/.metadata/generated/module.json
@@ -0,0 +1,23 @@
+{
+ "name": "bs.move",
+ "display_name": "Move",
+ "description": "Make your entity move exactly the way you want them to!",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "dependencies": [
+ "bs.hitbox"
+ ],
+ "features": [
+ "bs.move:apply_local_vel",
+ "bs.move:apply_vel",
+ "bs.move:canonical_to_local",
+ "bs.move:help",
+ "bs.move:load",
+ "bs.move:local_to_canonical",
+ "bs.move:set_motion",
+ "bs.move:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.move/.metadata/module.json b/datapacks/Bookshelf/data/bs.move/.metadata/module.json
new file mode 100644
index 0000000000..3f95743d05
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.move/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.move",
+ "display_name": "Move",
+ "description": "Make your entity move exactly the way you want them to!",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.move/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.move/function/__help__.mcfunction
index a41b6c1964..3497a90d10 100644
--- a/datapacks/Bookshelf/data/bs.move/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/move.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.move documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.move/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.move/function/__load__.mcfunction
index 175663db55..da7c87a5a6 100644
--- a/datapacks/Bookshelf/data/bs.move/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/move.html
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
execute unless entity B5-0-0-0-1 run summon minecraft:marker -30000000 0 1600 {UUID:[I;181,0,0,1],Tags:["bs.entity","bs.persistent"]}
diff --git a/datapacks/Bookshelf/data/bs.move/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.move/function/__unload__.mcfunction
index 02071ed86e..a0eea436ec 100644
--- a/datapacks/Bookshelf/data/bs.move/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/move.html
+# ------------------------------------------------------------------------------------------------------------
kill B5-0-0-0-1
forceload remove -30000000 1600
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/check/block/any.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/check/block/any.mcfunction
index 157b48a930..c179fec1ca 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/check/block/any.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/check/block/any.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute unless block ~ ~ ~ #bs.hitbox:is_composite run return run function bs.move:collision/check/block/cube
function #bs.hitbox:get_block
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/check/block/cube.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/check/block/cube.mcfunction
index 956e24e5cc..3d81f40ede 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/check/block/cube.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/check/block/cube.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# get cube hitbox coordinates
execute store result score #move.max_x bs.data run scoreboard players operation #move.min_x bs.data = #move.rx bs.data
execute store result score #move.max_y bs.data run scoreboard players operation #move.min_y bs.data = #move.ry bs.data
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/check/block/shape.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/check/block/shape.mcfunction
index 0595aa18a9..c183603f60 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/check/block/shape.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/check/block/shape.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# get hitbox coordinates
execute store result score #move.min_x bs.data run data get storage bs:out hitbox.shape[-1][0] 62500
execute store result score #move.min_y bs.data run data get storage bs:out hitbox.shape[-1][1] 62500
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/any.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/any.mcfunction
index 94ce21aa86..68b12305b0 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/any.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/any.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
tag @s add bs.raycast.omit
function #bs.hitbox:get_entity
execute if entity @s[type=#bs.hitbox:is_composite] run return run function bs.move:collision/check/entity/shape
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/shape.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/shape.mcfunction
index e6d65c3ce8..a4e9b1e525 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/shape.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/shape.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# get hitbox coordinates
execute store result score #move.min_x bs.data run data get storage bs:out hitbox.shape[-1][0] 62500
execute store result score #move.min_y bs.data run data get storage bs:out hitbox.shape[-1][1] 62500
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/size.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/size.mcfunction
index f0840e63cf..3867d61a17 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/size.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/check/entity/size.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# get the entity relative coordinates
execute store result score #move.min_x bs.data run data get entity @s Pos[0] 1000
execute store result score #move.min_y bs.data run data get entity @s Pos[1] 1000
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/collide.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/collide.mcfunction
index 7408e1576a..8ceddaab5d 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/collide.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/collide.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# get the travelled distance and the surface that was hit
scoreboard players operation #move.ctime bs.data = #move.min_x bs.data
execute if score #move.vx bs.data matches ..-1 run scoreboard players set $move.hit_face bs.data 5
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/handle.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/handle.mcfunction
index 9bfa638835..e6d3bac3d9 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/handle.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/handle.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# get starting position and velocity vector
tp B5-0-0-0-1 ~ ~ ~
execute store result score #move.x1 bs.data store result score #move.x bs.data run data get entity B5-0-0-0-1 Pos[0] 1000
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/hitbox.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/hitbox.mcfunction
index b8653e4c3c..b9cf366672 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/hitbox.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/hitbox.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# compute a bounding box that encompasses all passengers
function #bs.hitbox:get_entity
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/x_neg.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/x_neg.mcfunction
index 130c72152b..14d463e442 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/x_neg.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/x_neg.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity B5-0-0-0-1 Pos[0] double .001 run scoreboard players operation #move.x1 bs.data += #move.sw bs.data
execute as B5-0-0-0-1 at @s run tp @s ~-.000000001 ~ ~
execute store result score #move.x1 bs.data run data get entity B5-0-0-0-1 Pos[0]
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/x_pos.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/x_pos.mcfunction
index 8f351cccaf..7247a82ee0 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/x_pos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/x_pos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity B5-0-0-0-1 Pos[0] double .001 run scoreboard players operation #move.x1 bs.data -= #move.sw bs.data
scoreboard players operation #move.x1 bs.data /= 1000 bs.const
scoreboard players operation #move.x1 bs.data *= 1000 bs.const
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/y_neg.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/y_neg.mcfunction
index e479e16687..39611f093e 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/y_neg.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/y_neg.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity B5-0-0-0-1 Pos[1] double .001 run scoreboard players operation #move.y1 bs.data += #move.sh bs.data
execute as B5-0-0-0-1 at @s run tp @s ~ ~-.000000001 ~
execute store result score #move.y1 bs.data run data get entity B5-0-0-0-1 Pos[1]
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/y_pos.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/y_pos.mcfunction
index ecb7c5ce8c..45647995d2 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/y_pos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/y_pos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
scoreboard players operation #move.y1 bs.data /= 1000 bs.const
scoreboard players operation #move.y1 bs.data *= 1000 bs.const
scoreboard players operation #move.y1 bs.data -= #move.y bs.data
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/z_neg.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/z_neg.mcfunction
index 7c20090da9..2da3e05955 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/z_neg.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/z_neg.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity B5-0-0-0-1 Pos[2] double .001 run scoreboard players operation #move.z1 bs.data += #move.sw bs.data
execute as B5-0-0-0-1 at @s run tp @s ~ ~ ~-.000000001
execute store result score #move.z1 bs.data run data get entity B5-0-0-0-1 Pos[2]
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/z_pos.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/z_pos.mcfunction
index a39098eae0..adee02a2a1 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/z_pos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/init/z_pos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity B5-0-0-0-1 Pos[2] double .001 run scoreboard players operation #move.z1 bs.data -= #move.sw bs.data
scoreboard players operation #move.z1 bs.data /= 1000 bs.const
scoreboard players operation #move.z1 bs.data *= 1000 bs.const
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/x_neg.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/x_neg.mcfunction
index c3222ea25d..852cee473a 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/x_neg.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/x_neg.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
scoreboard players operation #move.ry bs.data = #move.y1 bs.data
execute if score #move.vy bs.data matches 0.. run function bs.move:collision/recurse/y_pos
execute if score #move.vy bs.data matches ..-1 run function bs.move:collision/recurse/y_neg
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/x_pos.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/x_pos.mcfunction
index a2c13178c8..be05602217 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/x_pos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/x_pos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
scoreboard players operation #move.ry bs.data = #move.y1 bs.data
execute if score #move.vy bs.data matches 0.. run function bs.move:collision/recurse/y_pos
execute if score #move.vy bs.data matches ..-1 run function bs.move:collision/recurse/y_neg
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/y_neg.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/y_neg.mcfunction
index 690d1d4089..ba69a2580a 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/y_neg.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/y_neg.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
scoreboard players operation #move.rz bs.data = #move.z1 bs.data
execute if score #move.vz bs.data matches 0.. run function bs.move:collision/recurse/z_pos with storage bs:data move
execute if score #move.vz bs.data matches ..-1 run function bs.move:collision/recurse/z_neg with storage bs:data move
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/y_pos.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/y_pos.mcfunction
index 313a88b9c3..bdc0e729fb 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/y_pos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/y_pos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
scoreboard players operation #move.rz bs.data = #move.z1 bs.data
execute if score #move.vz bs.data matches 0.. run function bs.move:collision/recurse/z_pos with storage bs:data move
execute if score #move.vz bs.data matches ..-1 run function bs.move:collision/recurse/z_neg with storage bs:data move
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/z_neg.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/z_neg.mcfunction
index 0dfd3fe1bc..7c5c3ed7af 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/z_neg.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/z_neg.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute if score #move.b bs.data matches 1 unless block ~ ~ ~ $(ignored_blocks) run function bs.move:collision/check/block/any
$execute if score #move.e bs.data matches 1 as @e[type=!$(ignored_entities),tag=$(entities),tag=!bs.move.omit,dx=0] run function bs.move:collision/check/entity/any
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/z_pos.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/z_pos.mcfunction
index fd604b3f92..c06da19384 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/recurse/z_pos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/recurse/z_pos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute if score #move.b bs.data matches 1 unless block ~ ~ ~ $(ignored_blocks) run function bs.move:collision/check/block/any
$execute if score #move.e bs.data matches 1 as @e[type=!$(ignored_entities),tag=$(entities),tag=!bs.move.omit,dx=0] run function bs.move:collision/check/entity/any
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/bounce.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/bounce.mcfunction
index 20535e9ae7..ecd6b39238 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/bounce.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/bounce.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# reverse a component depending on the surface that was hit
execute if score $move.hit_face bs.data matches 4..5 run scoreboard players operation $move.vel_remaining.x bs.data *= -1 bs.const
execute if score $move.hit_face bs.data matches 0..1 run scoreboard players operation $move.vel_remaining.y bs.data *= -1 bs.const
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/damped_bounce.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/damped_bounce.mcfunction
index dc4ed793f8..4327bde5e8 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/damped_bounce.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/damped_bounce.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# reverse a component depending on the surface that was hit
execute if score $move.hit_face bs.data matches 4..5 run scoreboard players operation $move.vel_remaining.x bs.data /= -2 bs.const
execute if score $move.hit_face bs.data matches 0..1 run scoreboard players operation $move.vel_remaining.y bs.data /= -2 bs.const
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/slide.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/slide.mcfunction
index 0691bb850d..835dd8e069 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/slide.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/slide.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# set a component to 0 depending on the surface that was hit
execute if score $move.hit_face bs.data matches 4..5 store result score $move.vel_remaining.x bs.data run scoreboard players set @s bs.vel.x 0
execute if score $move.hit_face bs.data matches 0..1 store result score $move.vel_remaining.y bs.data run scoreboard players set @s bs.vel.y 0
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/stick.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/stick.mcfunction
index 806a5a49cb..acd82f1d73 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/stick.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/behaviors/stick.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# set all components to 0 to cancel the movement
execute store result score $move.vel_remaining.x bs.data run scoreboard players set @s bs.vel.x 0
execute store result score $move.vel_remaining.y bs.data run scoreboard players set @s bs.vel.y 0
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/resolve.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/resolve.mcfunction
index a71848f256..1ad5223b10 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/resolve.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/resolve.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# compute the collision point and remaining velocity
scoreboard players operation $move.vel_remaining.x bs.data = #move.vx bs.data
scoreboard players operation $move.vel_remaining.y bs.data = #move.vy bs.data
diff --git a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/teleport.mcfunction b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/teleport.mcfunction
index 80e93ecd8b..c774f94056 100644
--- a/datapacks/Bookshelf/data/bs.move/function/collision/resolution/teleport.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/collision/resolution/teleport.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s $(x) $(y) $(z)
diff --git a/datapacks/Bookshelf/data/bs.move/function/convert/canonical_to_local/canonical_to_local.mcfunction b/datapacks/Bookshelf/data/bs.move/function/convert/canonical_to_local/canonical_to_local.mcfunction
index b4347cd152..04e9e572dc 100644
--- a/datapacks/Bookshelf/data/bs.move/function/convert/canonical_to_local/canonical_to_local.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/convert/canonical_to_local/canonical_to_local.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 25/12/2023 (1.20.4)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#canonical-to-local
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#canonical-to-local
+# ------------------------------------------------------------------------------------------------------------
# sincos(h: Phi) & sincos(v: Theta)
execute as B5-0-0-0-1 run function bs.move:convert/canonical_to_local/sincos
diff --git a/datapacks/Bookshelf/data/bs.move/function/convert/canonical_to_local/sincos.mcfunction b/datapacks/Bookshelf/data/bs.move/function/convert/canonical_to_local/sincos.mcfunction
index 0481c8062b..6f7b59b6dd 100644
--- a/datapacks/Bookshelf/data/bs.move/function/convert/canonical_to_local/sincos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/convert/canonical_to_local/sincos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute positioned 0.0 0.0 0.0 rotated ~ 0.0 run tp @s ^ ^ ^10.0
execute store result score #move.canonical_to_local.cos.h bs.data run data get entity @s Pos[2] 100
execute store result score #move.canonical_to_local.sin.h bs.data run data get entity @s Pos[0] -100
diff --git a/datapacks/Bookshelf/data/bs.move/function/convert/local_to_canonical/compute.mcfunction b/datapacks/Bookshelf/data/bs.move/function/convert/local_to_canonical/compute.mcfunction
index 00b1ad3593..d9a1236a40 100644
--- a/datapacks/Bookshelf/data/bs.move/function/convert/local_to_canonical/compute.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/convert/local_to_canonical/compute.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute positioned 0.0 0.0 0.0 run tp @s ^$(x) ^$(y) ^$(z)
data modify storage bs:ctx _ set from entity @s Pos
execute in minecraft:overworld run tp @s -30000000 0 1600
diff --git a/datapacks/Bookshelf/data/bs.move/function/convert/local_to_canonical/local_to_canonical.mcfunction b/datapacks/Bookshelf/data/bs.move/function/convert/local_to_canonical/local_to_canonical.mcfunction
index b877ea7d01..8fb628563b 100644
--- a/datapacks/Bookshelf/data/bs.move/function/convert/local_to_canonical/local_to_canonical.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/convert/local_to_canonical/local_to_canonical.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 25/12/2023 (1.20.4)
-# Last modification: 19/04/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#local-to-canonical
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#local-to-canonical
+# ------------------------------------------------------------------------------------------------------------
execute store result storage bs:ctx x int 1 run scoreboard players get @s bs.vel.x
execute store result storage bs:ctx y int 1 run scoreboard players get @s bs.vel.y
diff --git a/datapacks/Bookshelf/data/bs.move/function/set_motion.mcfunction b/datapacks/Bookshelf/data/bs.move/function/set_motion.mcfunction
index 5e06115cc1..76df64ddf4 100644
--- a/datapacks/Bookshelf/data/bs.move/function/set_motion.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/set_motion.mcfunction
@@ -1,18 +1,17 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 13/12/2023 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#set-motion
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
$execute store result entity @s Motion[0] double $(scale) run scoreboard players get @s bs.vel.x
$execute store result entity @s Motion[1] double $(scale) run scoreboard players get @s bs.vel.y
diff --git a/datapacks/Bookshelf/data/bs.move/function/teleport/canonical/apply_vel.mcfunction b/datapacks/Bookshelf/data/bs.move/function/teleport/canonical/apply_vel.mcfunction
index 12cf53168f..95d2366c3c 100644
--- a/datapacks/Bookshelf/data/bs.move/function/teleport/canonical/apply_vel.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/teleport/canonical/apply_vel.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# INFO ------------------------------------------------------------------------
# Copyright Β© 2024 Gunivers Community.
diff --git a/datapacks/Bookshelf/data/bs.move/function/teleport/canonical/run.mcfunction b/datapacks/Bookshelf/data/bs.move/function/teleport/canonical/run.mcfunction
index 63bf090bd9..baa24769dd 100644
--- a/datapacks/Bookshelf/data/bs.move/function/teleport/canonical/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/teleport/canonical/run.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~$(x) ~$(y) ~$(z)
scoreboard players set #move.is_local bs.data 0
diff --git a/datapacks/Bookshelf/data/bs.move/function/teleport/local/apply_local_vel.mcfunction b/datapacks/Bookshelf/data/bs.move/function/teleport/local/apply_local_vel.mcfunction
index 453c54b97a..5c36cb290e 100644
--- a/datapacks/Bookshelf/data/bs.move/function/teleport/local/apply_local_vel.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/teleport/local/apply_local_vel.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#apply-velocity
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#apply-velocity
+# ------------------------------------------------------------------------------------------------------------
execute if entity @s[predicate=!bs.move:has_vel] run return 0
$execute store result storage bs:ctx x double $(scale) run scoreboard players get @s bs.vel.x
diff --git a/datapacks/Bookshelf/data/bs.move/function/teleport/local/run.mcfunction b/datapacks/Bookshelf/data/bs.move/function/teleport/local/run.mcfunction
index 90d82a5634..888f550aa5 100644
--- a/datapacks/Bookshelf/data/bs.move/function/teleport/local/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/teleport/local/run.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ^$(x) ^$(y) ^$(z)
scoreboard players set #move.is_local bs.data 1
diff --git a/datapacks/Bookshelf/data/bs.move/function/teleport/with.mcfunction b/datapacks/Bookshelf/data/bs.move/function/teleport/with.mcfunction
index 1f57bbf0d3..1c643b8cd4 100644
--- a/datapacks/Bookshelf/data/bs.move/function/teleport/with.mcfunction
+++ b/datapacks/Bookshelf/data/bs.move/function/teleport/with.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data move set value { \
blocks: true, \
entities: false, \
diff --git a/datapacks/Bookshelf/data/bs.move/tags/function/apply_local_vel.json b/datapacks/Bookshelf/data/bs.move/tags/function/apply_local_vel.json
index a714c36191..7091526bae 100644
--- a/datapacks/Bookshelf/data/bs.move/tags/function/apply_local_vel.json
+++ b/datapacks/Bookshelf/data/bs.move/tags/function/apply_local_vel.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#apply-velocity",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/05/28",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.move:teleport/with",
"bs.move:teleport/local/apply_local_vel"
diff --git a/datapacks/Bookshelf/data/bs.move/tags/function/apply_vel.json b/datapacks/Bookshelf/data/bs.move/tags/function/apply_vel.json
index 8f43cf60ad..da0512d0b4 100644
--- a/datapacks/Bookshelf/data/bs.move/tags/function/apply_vel.json
+++ b/datapacks/Bookshelf/data/bs.move/tags/function/apply_vel.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#apply-velocity",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/05/24",
+ "minecraft_version": "1.13"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.move:teleport/with",
"bs.move:teleport/canonical/apply_vel"
diff --git a/datapacks/Bookshelf/data/bs.move/tags/function/canonical_to_local.json b/datapacks/Bookshelf/data/bs.move/tags/function/canonical_to_local.json
index 2ac4a1ca7e..dc6e0e9c9a 100644
--- a/datapacks/Bookshelf/data/bs.move/tags/function/canonical_to_local.json
+++ b/datapacks/Bookshelf/data/bs.move/tags/function/canonical_to_local.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#canonical-to-local",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/25",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.move:convert/canonical_to_local/canonical_to_local"
]
diff --git a/datapacks/Bookshelf/data/bs.move/tags/function/help.json b/datapacks/Bookshelf/data/bs.move/tags/function/help.json
index a53e576d7e..52c18067b9 100644
--- a/datapacks/Bookshelf/data/bs.move/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.move/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/19",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.move:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.move/tags/function/load.json b/datapacks/Bookshelf/data/bs.move/tags/function/load.json
index 534792c6ba..001e8db128 100644
--- a/datapacks/Bookshelf/data/bs.move/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.move/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/19",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.hitbox:load",
"bs.move:__load__"
diff --git a/datapacks/Bookshelf/data/bs.move/tags/function/local_to_canonical.json b/datapacks/Bookshelf/data/bs.move/tags/function/local_to_canonical.json
index a4cc911a2d..097be0c3e0 100644
--- a/datapacks/Bookshelf/data/bs.move/tags/function/local_to_canonical.json
+++ b/datapacks/Bookshelf/data/bs.move/tags/function/local_to_canonical.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#local-to-canonical",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/25",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/04/19",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.move:convert/local_to_canonical/local_to_canonical"
]
diff --git a/datapacks/Bookshelf/data/bs.move/tags/function/set_motion.json b/datapacks/Bookshelf/data/bs.move/tags/function/set_motion.json
index efe7e5a385..1ec05dbe37 100644
--- a/datapacks/Bookshelf/data/bs.move/tags/function/set_motion.json
+++ b/datapacks/Bookshelf/data/bs.move/tags/function/set_motion.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#set-motion",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/10",
+ "minecraft_version": "1.14.3"
+ },
+ "updated": {
+ "date": "2023/12/13",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.move:set_motion"
]
diff --git a/datapacks/Bookshelf/data/bs.move/tags/function/unload.json b/datapacks/Bookshelf/data/bs.move/tags/function/unload.json
index 1873bb2de2..374747f05f 100644
--- a/datapacks/Bookshelf/data/bs.move/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.move/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/19",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.move:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.position/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.position/.metadata/generated/features.json
new file mode 100644
index 0000000000..42b8957f95
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.position/.metadata/generated/features.json
@@ -0,0 +1,533 @@
+[
+ {
+ "name": "add_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_pos_and_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_pos_x",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_pos_y",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_pos_z",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_rot_h",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_rot_v",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "canonical_to_local",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#canonical-to-local",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_distance_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-distance",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "contributors": [
+ "Triton365"
+ ],
+ "created": {
+ "date": "2019/07/14",
+ "version": "1.14.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_distance_squared_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-distance",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/14",
+ "version": "1.14.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_pos_and_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_pos_x",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_pos_y",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_pos_z",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_relative_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-relative",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/14",
+ "version": "1.14.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_relative_from_dir",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-relative",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_rot_h",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_rot_v",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "local_to_canonical",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#local-to-canonical",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/25",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/04/12",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_pos_and_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_pos_x",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_pos_y",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_pos_z",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_rot_h",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_rot_v",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.position/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.position/.metadata/generated/module.json
new file mode 100644
index 0000000000..7484aa44e6
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.position/.metadata/generated/module.json
@@ -0,0 +1,49 @@
+{
+ "name": "bs.position",
+ "display_name": "Position",
+ "description": "Manage entity positions and rotations using scores.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Triton365"
+ ],
+ "features": [
+ "bs.position:add_pos",
+ "bs.position:add_pos_and_rot",
+ "bs.position:add_pos_x",
+ "bs.position:add_pos_y",
+ "bs.position:add_pos_z",
+ "bs.position:add_rot",
+ "bs.position:add_rot_h",
+ "bs.position:add_rot_v",
+ "bs.position:canonical_to_local",
+ "bs.position:get_distance_ata",
+ "bs.position:get_distance_squared_ata",
+ "bs.position:get_pos",
+ "bs.position:get_pos_and_rot",
+ "bs.position:get_pos_x",
+ "bs.position:get_pos_y",
+ "bs.position:get_pos_z",
+ "bs.position:get_relative_ata",
+ "bs.position:get_relative_from_dir",
+ "bs.position:get_rot",
+ "bs.position:get_rot_h",
+ "bs.position:get_rot_v",
+ "bs.position:help",
+ "bs.position:load",
+ "bs.position:local_to_canonical",
+ "bs.position:set_pos",
+ "bs.position:set_pos_and_rot",
+ "bs.position:set_pos_x",
+ "bs.position:set_pos_y",
+ "bs.position:set_pos_z",
+ "bs.position:set_rot",
+ "bs.position:set_rot_h",
+ "bs.position:set_rot_v",
+ "bs.position:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.position/.metadata/module.json b/datapacks/Bookshelf/data/bs.position/.metadata/module.json
new file mode 100644
index 0000000000..410349fd0c
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.position/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.position",
+ "display_name": "Position",
+ "description": "Manage entity positions and rotations using scores.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.position/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.position/function/__help__.mcfunction
index dda4267fa6..a982ce5969 100644
--- a/datapacks/Bookshelf/data/bs.position/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.position documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.position/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.position/function/__load__.mcfunction
index 31a3b1af3a..bb892d9176 100644
--- a/datapacks/Bookshelf/data/bs.position/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
execute unless entity B5-0-0-0-1 run summon minecraft:marker -30000000 0 1600 {UUID:[I;181,0,0,1],Tags:["bs.entity","bs.persistent"]}
diff --git a/datapacks/Bookshelf/data/bs.position/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.position/function/__unload__.mcfunction
index 7f4f8bc9be..e9a98bda26 100644
--- a/datapacks/Bookshelf/data/bs.position/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html
+# ------------------------------------------------------------------------------------------------------------
kill B5-0-0-0-1
kill B5-0-0-0-2
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/position/all/all.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/position/all/all.mcfunction
index 436d176f9a..b0b61090a8 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/position/all/all.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/position/all/all.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.16.1)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#add-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx x double $(scale) run scoreboard players get @s bs.pos.x
$execute store result storage bs:ctx y double $(scale) run scoreboard players get @s bs.pos.y
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/position/all/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/position/all/run.mcfunction
index b898db740a..6409a1e85e 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/position/all/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/position/all/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~$(x) ~$(y) ~$(z)
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/position/x/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/position/x/run.mcfunction
index 8a99ea2d7b..4802984db5 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/position/x/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/position/x/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~$(x) ~ ~
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/position/x/x.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/position/x/x.mcfunction
index 1918a5a4c0..ea687f97be 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/position/x/x.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/position/x/x.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.16.1)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#add-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx x double $(scale) run scoreboard players get @s bs.pos.x
execute at @s run function bs.position:add/position/x/run with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/position/y/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/position/y/run.mcfunction
index f771ddeb5a..91135edc49 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/position/y/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/position/y/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~ ~$(y) ~
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/position/y/y.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/position/y/y.mcfunction
index 84904b8fbc..183aff060e 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/position/y/y.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/position/y/y.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.16.1)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#add-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx y double $(scale) run scoreboard players get @s bs.pos.y
execute at @s run function bs.position:add/position/y/run with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/position/z/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/position/z/run.mcfunction
index 9d04fb2f63..7cbf1abfaf 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/position/z/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/position/z/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~ ~ ~$(z)
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/position/z/z.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/position/z/z.mcfunction
index dc1e711dae..aa16b7a2c6 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/position/z/z.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/position/z/z.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.16.1)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#add-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx z double $(scale) run scoreboard players get @s bs.pos.z
execute at @s run function bs.position:add/position/z/run with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/rotation/all/all.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/rotation/all/all.mcfunction
index 14e83eea74..796cb0ed7e 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/rotation/all/all.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/rotation/all/all.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.16.1)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#add-rotation
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#add-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx x double $(scale) run scoreboard players get @s bs.rot.h
$execute store result storage bs:ctx y double $(scale) run scoreboard players get @s bs.rot.v
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/rotation/all/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/rotation/all/run.mcfunction
index f0c7936024..f7e43a5c8d 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/rotation/all/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/rotation/all/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~ ~ ~ ~$(x) ~$(y)
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/rotation/h/h.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/rotation/h/h.mcfunction
index dd0a1c7f1d..b4d06f9598 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/rotation/h/h.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/rotation/h/h.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.16.1)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#add-rotation
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#add-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx x double $(scale) run scoreboard players get @s bs.rot.h
execute at @s run function bs.position:add/rotation/h/run with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/rotation/h/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/rotation/h/run.mcfunction
index 269bf09271..710579de93 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/rotation/h/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/rotation/h/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~ ~ ~ ~$(x) ~
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/rotation/v/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/rotation/v/run.mcfunction
index bed1fc4846..d9a48ac3da 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/rotation/v/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/rotation/v/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~ ~ ~ ~ ~$(y)
diff --git a/datapacks/Bookshelf/data/bs.position/function/add/rotation/v/v.mcfunction b/datapacks/Bookshelf/data/bs.position/function/add/rotation/v/v.mcfunction
index 9c1424802b..71c8cdbbc6 100644
--- a/datapacks/Bookshelf/data/bs.position/function/add/rotation/v/v.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/add/rotation/v/v.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.16.1)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#add-rotation
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#add-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx y double $(scale) run scoreboard players get @s bs.rot.v
execute at @s run function bs.position:add/rotation/v/run with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.position/function/convert/canonical_to_local/canonical_to_local.mcfunction b/datapacks/Bookshelf/data/bs.position/function/convert/canonical_to_local/canonical_to_local.mcfunction
index a9769a4c5d..223b8ba4c1 100644
--- a/datapacks/Bookshelf/data/bs.position/function/convert/canonical_to_local/canonical_to_local.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/convert/canonical_to_local/canonical_to_local.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 20/10/2023 (1.20.2)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#canonical-to-local
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#canonical-to-local
+# ------------------------------------------------------------------------------------------------------------
# sincos(h: Phi) & sincos(v: Theta)
execute as B5-0-0-0-1 run function bs.position:convert/canonical_to_local/sincos
diff --git a/datapacks/Bookshelf/data/bs.position/function/convert/canonical_to_local/sincos.mcfunction b/datapacks/Bookshelf/data/bs.position/function/convert/canonical_to_local/sincos.mcfunction
index 51e9d2f45e..30453faf3c 100644
--- a/datapacks/Bookshelf/data/bs.position/function/convert/canonical_to_local/sincos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/convert/canonical_to_local/sincos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute positioned 0.0 0.0 0.0 rotated ~ 0.0 run tp @s ^ ^ ^10.0
execute store result score #position.convert.cos.h bs.data run data get entity @s Pos[2] 100
execute store result score #position.convert.sin.h bs.data run data get entity @s Pos[0] -100
diff --git a/datapacks/Bookshelf/data/bs.position/function/convert/local_to_canonical/compute.mcfunction b/datapacks/Bookshelf/data/bs.position/function/convert/local_to_canonical/compute.mcfunction
index 00b1ad3593..d9a1236a40 100644
--- a/datapacks/Bookshelf/data/bs.position/function/convert/local_to_canonical/compute.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/convert/local_to_canonical/compute.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute positioned 0.0 0.0 0.0 run tp @s ^$(x) ^$(y) ^$(z)
data modify storage bs:ctx _ set from entity @s Pos
execute in minecraft:overworld run tp @s -30000000 0 1600
diff --git a/datapacks/Bookshelf/data/bs.position/function/convert/local_to_canonical/local_to_canonical.mcfunction b/datapacks/Bookshelf/data/bs.position/function/convert/local_to_canonical/local_to_canonical.mcfunction
index c16786e498..11d5ef5e83 100644
--- a/datapacks/Bookshelf/data/bs.position/function/convert/local_to_canonical/local_to_canonical.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/convert/local_to_canonical/local_to_canonical.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 25/12/2023 (1.20.4)
-# Last modification: 12/04/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#local-to-canonical
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#local-to-canonical
+# ------------------------------------------------------------------------------------------------------------
execute store result storage bs:ctx x int 1 run scoreboard players get @s bs.pos.x
execute store result storage bs:ctx y int 1 run scoreboard players get @s bs.pos.y
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/distance/compute.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/distance/compute.mcfunction
index 8506bf1ac4..23e200173f 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/distance/compute.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/distance/compute.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# compute Euclidean distance: sqrt(x^2+y^2+z^2)
# Thanks to Triton365 for sharing this trick on the Minecraft Commands discord
$data modify entity @s transformation set value [$(x)f,0f,0f,0f,$(y)f,0f,0f,0f,$(z)f,0f,0f,0f,0f,0f,0f,1f]
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/distance/distance_ata.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/distance/distance_ata.mcfunction
index 3b4e3db4d9..8576ccf61c 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/distance/distance_ata.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/distance/distance_ata.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors: Triton365
-
-# Version: 3.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-distance
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-distance
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.position:get/position/ctx
$execute store result score #position.get_distance.x1 bs.data run data get storage bs:ctx _[0] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/distance/distance_squared_ata.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/distance/distance_squared_ata.mcfunction
index 13cfbce245..71f6258509 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/distance/distance_squared_ata.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/distance/distance_squared_ata.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-distance
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-distance
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.position:get/position/ctx
$execute store result score #position.get_distance.x1 bs.data run data get storage bs:ctx _[0] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/position/all.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/position/all.mcfunction
index 8689dc8192..a1eb3d71aa 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/position/all.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/position/all.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: ??/??/???? (1.12)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.position:get/position/ctx
$execute store result score @s bs.pos.x run data get storage bs:ctx _[0] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/position/ctx.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/position/ctx.mcfunction
index 769c5607c0..b710ba15c5 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/position/ctx.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/position/ctx.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
tp @s ~ ~ ~ ~ ~
data modify storage bs:ctx _ set from entity @s Pos
execute in minecraft:overworld run tp @s -30000000 0 1600
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/position/x.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/position/x.mcfunction
index 2c921fdd5f..bbc3ef7846 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/position/x.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/position/x.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: ??/??/???? (1.12)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.position:get/position/ctx
$execute store result score @s bs.pos.x run data get storage bs:ctx _[0] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/position/y.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/position/y.mcfunction
index b2bbd4df0d..02810d69fb 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/position/y.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/position/y.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: ??/??/???? (1.12)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.position:get/position/ctx
$execute store result score @s bs.pos.y run data get storage bs:ctx _[1] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/position/z.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/position/z.mcfunction
index d8f09fb5a1..6c4986cb0b 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/position/z.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/position/z.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: ??/??/???? (1.12)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.position:get/position/ctx
$execute store result score @s bs.pos.z run data get storage bs:ctx _[2] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_ata.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_ata.mcfunction
index 46ad5219cb..34a277aa91 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_ata.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_ata.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-relative
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-relative
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.position:get/position/ctx
$execute store result score #position.get_relative_ata.x bs.data run data get storage bs:ctx _[0] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_from_dir/ctx.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_from_dir/ctx.mcfunction
index 33e4ec4deb..b3d3063aa5 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_from_dir/ctx.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_from_dir/ctx.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute positioned 0.0 0.0 0.0 positioned ^ ^ ^1 run tp @s ~ ~ ~ ~ ~
data modify storage bs:ctx _ set from entity @s Pos
execute in minecraft:overworld run tp @s -30000000 0 1600
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_from_dir/relative_from_dir.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_from_dir/relative_from_dir.mcfunction
index fd076016bf..ed87b5e832 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_from_dir/relative_from_dir.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/relative/relative_from_dir/relative_from_dir.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 20/10/2023 (1.20.2)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-relative
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-relative
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.position:get/relative/relative_from_dir/ctx
$execute store result score @s bs.pos.x run data get storage bs:ctx _[0] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/rotation/all.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/rotation/all.mcfunction
index 40b3b31f88..86df98af9b 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/rotation/all.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/rotation/all.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof, theogiraudet
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation
+# ------------------------------------------------------------------------------------------------------------
execute in minecraft:overworld run tp B5-0-0-0-1 -30000000 0 1600 ~ ~
$execute store result score @s bs.rot.h run data get entity B5-0-0-0-1 Rotation[0] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/rotation/h.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/rotation/h.mcfunction
index 28b3ab5999..3bcfc14f5a 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/rotation/h.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/rotation/h.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof, theogiraudet
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation
+# ------------------------------------------------------------------------------------------------------------
execute in minecraft:overworld run tp B5-0-0-0-1 -30000000 0 1600 ~ ~
$execute store result score @s bs.rot.h run data get entity B5-0-0-0-1 Rotation[0] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.position/function/get/rotation/v.mcfunction b/datapacks/Bookshelf/data/bs.position/function/get/rotation/v.mcfunction
index bd2ad00b8c..197f6aedd9 100644
--- a/datapacks/Bookshelf/data/bs.position/function/get/rotation/v.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/get/rotation/v.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof, theogiraudet
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation
+# ------------------------------------------------------------------------------------------------------------
execute in minecraft:overworld run tp B5-0-0-0-1 -30000000 0 1600 ~ ~
$execute store result score @s bs.rot.v run data get entity B5-0-0-0-1 Rotation[1] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/position/all/all.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/position/all/all.mcfunction
index 3a602d9411..1bc32b2041 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/position/all/all.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/position/all/all.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx x double $(scale) run scoreboard players get @s bs.pos.x
$execute store result storage bs:ctx y double $(scale) run scoreboard players get @s bs.pos.y
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/position/all/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/position/all/run.mcfunction
index b898db740a..6409a1e85e 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/position/all/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/position/all/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~$(x) ~$(y) ~$(z)
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/position/x/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/position/x/run.mcfunction
index 8a99ea2d7b..4802984db5 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/position/x/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/position/x/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~$(x) ~ ~
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/position/x/x.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/position/x/x.mcfunction
index c1205e6228..083b62ffde 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/position/x/x.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/position/x/x.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx x double $(scale) run scoreboard players get @s bs.pos.x
execute at @s positioned 0.0 ~ ~ run function bs.position:set/position/x/run with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/position/y/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/position/y/run.mcfunction
index f771ddeb5a..91135edc49 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/position/y/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/position/y/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~ ~$(y) ~
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/position/y/y.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/position/y/y.mcfunction
index bd1fd29a70..fb528bab06 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/position/y/y.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/position/y/y.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx y double $(scale) run scoreboard players get @s bs.pos.y
execute at @s positioned ~ 0.0 ~ run function bs.position:set/position/y/run with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/position/z/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/position/z/run.mcfunction
index 9d04fb2f63..7cbf1abfaf 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/position/z/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/position/z/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~ ~ ~$(z)
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/position/z/z.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/position/z/z.mcfunction
index c9849a3deb..2bd786b6ec 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/position/z/z.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/position/z/z.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-position
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx z double $(scale) run scoreboard players get @s bs.pos.z
execute at @s positioned ~ ~ 0.0 run function bs.position:set/position/z/run with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/rotation/all/all.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/rotation/all/all.mcfunction
index 61a7d5cd9d..e0f9b41616 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/rotation/all/all.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/rotation/all/all.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof, theogiraudet
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx x double $(scale) run scoreboard players get @s bs.rot.h
$execute store result storage bs:ctx y double $(scale) run scoreboard players get @s bs.rot.v
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/rotation/all/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/rotation/all/run.mcfunction
index e4ce59292a..273f45be4e 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/rotation/all/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/rotation/all/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~ ~ ~ $(x) $(y)
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/rotation/h/h.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/rotation/h/h.mcfunction
index d35932339a..8c0186893a 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/rotation/h/h.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/rotation/h/h.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof, theogiraudet
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx x double $(scale) run scoreboard players get @s bs.rot.h
execute at @s run function bs.position:set/rotation/h/run with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/rotation/h/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/rotation/h/run.mcfunction
index f645280882..60541df51a 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/rotation/h/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/rotation/h/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~ ~ ~ $(x) ~
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/rotation/v/run.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/rotation/v/run.mcfunction
index 23e2a4a5c9..4a5024777c 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/rotation/v/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/rotation/v/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~ ~ ~ ~ $(y)
diff --git a/datapacks/Bookshelf/data/bs.position/function/set/rotation/v/v.mcfunction b/datapacks/Bookshelf/data/bs.position/function/set/rotation/v/v.mcfunction
index 3f29b63b3b..c3ffe39a16 100644
--- a/datapacks/Bookshelf/data/bs.position/function/set/rotation/v/v.mcfunction
+++ b/datapacks/Bookshelf/data/bs.position/function/set/rotation/v/v.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof, theogiraudet
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation
+# ------------------------------------------------------------------------------------------------------------
$execute store result storage bs:ctx y double $(scale) run scoreboard players get @s bs.rot.v
execute at @s run function bs.position:set/rotation/v/run with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/add_pos.json b/datapacks/Bookshelf/data/bs.position/tags/function/add_pos.json
index a1aadf7baa..acaef47b2b 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/add_pos.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/add_pos.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:add/position/all/all"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_and_rot.json b/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_and_rot.json
index 6c5e5af6ed..cecedfe197 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_and_rot.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_and_rot.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.position:add_pos",
"#bs.position:add_rot"
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_x.json b/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_x.json
index 57b64d33bc..494a1a2b4b 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_x.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_x.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:add/position/x/x"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_y.json b/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_y.json
index 2ab98963d4..766a4698c3 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_y.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_y.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:add/position/y/y"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_z.json b/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_z.json
index 04d72f9c10..32d7e06711 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_z.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/add_pos_z.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:add/position/z/z"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/add_rot.json b/datapacks/Bookshelf/data/bs.position/tags/function/add_rot.json
index 09e32f08b3..1b76120204 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/add_rot.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/add_rot.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:add/rotation/all/all"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/add_rot_h.json b/datapacks/Bookshelf/data/bs.position/tags/function/add_rot_h.json
index c147bdbcc7..08a4a558e9 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/add_rot_h.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/add_rot_h.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:add/rotation/h/h"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/add_rot_v.json b/datapacks/Bookshelf/data/bs.position/tags/function/add_rot_v.json
index c8e6170443..243205d0e3 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/add_rot_v.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/add_rot_v.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:add/rotation/v/v"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/canonical_to_local.json b/datapacks/Bookshelf/data/bs.position/tags/function/canonical_to_local.json
index 2aa207c727..303fc04aa1 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/canonical_to_local.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/canonical_to_local.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#canonical-to-local",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:convert/canonical_to_local/canonical_to_local"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_distance_ata.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_distance_ata.json
index 1d97084c7b..815e697f90 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_distance_ata.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_distance_ata.json
@@ -1,4 +1,23 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-distance",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "contributors": [
+ "Triton365"
+ ],
+ "created": {
+ "date": "2019/07/14",
+ "minecraft_version": "1.14.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:get/distance/distance_ata"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_distance_squared_ata.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_distance_squared_ata.json
index 0ab2171325..37209352f8 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_distance_squared_ata.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_distance_squared_ata.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-distance",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/14",
+ "minecraft_version": "1.14.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:get/distance/distance_squared_ata"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_pos.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_pos.json
index d6150b8231..61ee9b6149 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_pos.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_pos.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:get/position/all"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_and_rot.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_and_rot.json
index 6b3b4ab771..1161cbd2c0 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_and_rot.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_and_rot.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.position:get_pos",
"#bs.position:get_rot"
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_x.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_x.json
index f2cacc610b..f0932f3f33 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_x.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_x.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:get/position/x"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_y.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_y.json
index 796739a40a..919fd528a7 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_y.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_y.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:get/position/y"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_z.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_z.json
index 9625fecb72..a5933ec42f 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_z.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_pos_z.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:get/position/z"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_relative_ata.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_relative_ata.json
index 1551af450d..d8df22a67b 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_relative_ata.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_relative_ata.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-relative",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/14",
+ "minecraft_version": "1.14.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:get/relative/relative_ata"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_relative_from_dir.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_relative_from_dir.json
index cd9cae1daa..c4346dbe3e 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_relative_from_dir.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_relative_from_dir.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-relative",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:get/relative/relative_from_dir/relative_from_dir"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_rot.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_rot.json
index 51d7227ae7..5c3cc31cf0 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_rot.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_rot.json
@@ -1,4 +1,21 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:get/rotation/all"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_rot_h.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_rot_h.json
index 08d3ed39f3..2aa913544f 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_rot_h.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_rot_h.json
@@ -1,4 +1,21 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:get/rotation/h"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/get_rot_v.json b/datapacks/Bookshelf/data/bs.position/tags/function/get_rot_v.json
index 4ef56583a5..7779a13064 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/get_rot_v.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/get_rot_v.json
@@ -1,4 +1,21 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:get/rotation/v"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/help.json b/datapacks/Bookshelf/data/bs.position/tags/function/help.json
index d53fcfb0ce..959d7990f4 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/load.json b/datapacks/Bookshelf/data/bs.position/tags/function/load.json
index 69a0247e4b..fecd53c03d 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/local_to_canonical.json b/datapacks/Bookshelf/data/bs.position/tags/function/local_to_canonical.json
index 6cbcffb35e..20a5de765e 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/local_to_canonical.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/local_to_canonical.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#local-to-canonical",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/25",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/04/12",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:convert/local_to_canonical/local_to_canonical"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/set_pos.json b/datapacks/Bookshelf/data/bs.position/tags/function/set_pos.json
index 641c205885..f0bce7423f 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/set_pos.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/set_pos.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:set/position/all/all"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_and_rot.json b/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_and_rot.json
index a031756e1b..1984750e25 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_and_rot.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_and_rot.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.position:set_pos",
"#bs.position:set_rot"
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_x.json b/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_x.json
index dcc8387f24..94dc71390e 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_x.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_x.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:set/position/x/x"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_y.json b/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_y.json
index 2fa4445882..8f1668890a 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_y.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_y.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:set/position/y/y"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_z.json b/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_z.json
index 91e390314b..cfeadce7e4 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_z.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/set_pos_z.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:set/position/z/z"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/set_rot.json b/datapacks/Bookshelf/data/bs.position/tags/function/set_rot.json
index 22d2e745f5..71ce4abef8 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/set_rot.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/set_rot.json
@@ -1,4 +1,21 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:set/rotation/all/all"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/set_rot_h.json b/datapacks/Bookshelf/data/bs.position/tags/function/set_rot_h.json
index c4485dbb40..e1fa8c98a5 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/set_rot_h.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/set_rot_h.json
@@ -1,4 +1,21 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:set/rotation/h/h"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/set_rot_v.json b/datapacks/Bookshelf/data/bs.position/tags/function/set_rot_v.json
index 4f9428767c..6353fe3999 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/set_rot_v.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/set_rot_v.json
@@ -1,4 +1,21 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "minecraft_version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:set/rotation/v/v"
]
diff --git a/datapacks/Bookshelf/data/bs.position/tags/function/unload.json b/datapacks/Bookshelf/data/bs.position/tags/function/unload.json
index 10def5b41c..50a0ac980c 100644
--- a/datapacks/Bookshelf/data/bs.position/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.position/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.position:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.raycast/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.raycast/.metadata/generated/features.json
new file mode 100644
index 0000000000..89168aa54e
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.raycast/.metadata/generated/features.json
@@ -0,0 +1,68 @@
+[
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "run",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html#run-the-raycast",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/09",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/04/02",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.raycast/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.raycast/.metadata/generated/module.json
new file mode 100644
index 0000000000..2c097fc313
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.raycast/.metadata/generated/module.json
@@ -0,0 +1,18 @@
+{
+ "name": "bs.raycast",
+ "display_name": "Raycast",
+ "description": "Cast rays and see if they collide with blocks or entities.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "dependencies": [
+ "bs.hitbox"
+ ],
+ "features": [
+ "bs.raycast:help",
+ "bs.raycast:load",
+ "bs.raycast:run",
+ "bs.raycast:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.raycast/.metadata/module.json b/datapacks/Bookshelf/data/bs.raycast/.metadata/module.json
new file mode 100644
index 0000000000..c9b4e3b657
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.raycast/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.raycast",
+ "display_name": "Raycast",
+ "description": "Cast rays and see if they collide with blocks or entities.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/__help__.mcfunction
index 9e27c8ec87..ed02d104bc 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.raycast documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/__load__.mcfunction
index 376795a64c..0f6e413131 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
execute unless entity B5-0-0-0-1 run summon minecraft:marker -30000000 0 1600 {UUID:[I;181,0,0,1],Tags:["bs.entity","bs.persistent"]}
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/__unload__.mcfunction
index 06966e0714..1dfc21cf3e 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html
+# ------------------------------------------------------------------------------------------------------------
kill B5-0-0-0-1
forceload remove -30000000 1600
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/check/block/any.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/check/block/any.mcfunction
index 2b062951f1..bde9885fab 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/check/block/any.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/check/block/any.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute unless block ~ ~ ~ #bs.hitbox:is_composite run return run function bs.raycast:collide/cube
function #bs.hitbox:get_block
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/check/block/shape.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/check/block/shape.mcfunction
index 5f102886d2..e4dc4ab5e5 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/check/block/shape.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/check/block/shape.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# get hitbox coordinates
execute store result score #raycast.min_x bs.data run data get storage bs:out hitbox.shape[-1][0] 625000
execute store result score #raycast.min_y bs.data run data get storage bs:out hitbox.shape[-1][1] 625000
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/check/entity/any.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/check/entity/any.mcfunction
index 4c69b4836c..16797542a0 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/check/entity/any.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/check/entity/any.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
tag @s add bs.raycast.omit
function #bs.hitbox:get_entity
execute if entity @s[type=!#bs.hitbox:is_composite] run return run function bs.raycast:check/entity/size
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/check/entity/shape.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/check/entity/shape.mcfunction
index dd756ba16e..6c656e6898 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/check/entity/shape.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/check/entity/shape.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# get hitbox coordinates
execute store result score #raycast.min_x bs.data run data get storage bs:out hitbox.shape[-1][0] 625000
execute store result score #raycast.min_y bs.data run data get storage bs:out hitbox.shape[-1][1] 625000
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/check/entity/size.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/check/entity/size.mcfunction
index 45db611706..79312672a1 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/check/entity/size.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/check/entity/size.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# get the entity relative coordinates
execute at @s as B5-0-0-0-1 run function bs.raycast:compute/relative_pos with storage bs:data raycast
execute store result score #raycast.min_x bs.data run data get storage bs:ctx _[0] 10000000
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/collide/block.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/collide/block.mcfunction
index 5d9d4e838f..e70597b8be 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/collide/block.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/collide/block.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# stop the recursion then get the travelled distance
scoreboard players set #raycast.limit bs.data -2147483648
scoreboard players operation #raycast.distance bs.data = #raycast.tmin bs.data
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/collide/cube.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/collide/cube.mcfunction
index 4580dd310c..e91c3c4794 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/collide/cube.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/collide/cube.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# stop the recursion then compute the travelled distance
scoreboard players set #raycast.limit bs.data -2147483648
scoreboard players operation #raycast.lx bs.data -= #raycast.dx bs.data
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/collide/entity.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/collide/entity.mcfunction
index 9dd6f2c707..5c267cf604 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/collide/entity.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/collide/entity.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# stop the recursion then get the travelled distance
scoreboard players set #raycast.limit bs.data -2147483648
scoreboard players operation #raycast.distance bs.data = #raycast.tmin bs.data
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/compute/hit_point.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/compute/hit_point.mcfunction
index e0b91ac87c..fe70a3fb12 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/compute/hit_point.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/compute/hit_point.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ^ ^ ^$(distance)
data modify storage bs:out raycast.hit_point set from entity @s Pos
execute in minecraft:overworld run tp @s -30000000 0 1600
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/compute/relative_pos.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/compute/relative_pos.mcfunction
index 3da873e96c..c323de2700 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/compute/relative_pos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/compute/relative_pos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$tp @s ~$(x) ~$(y) ~$(z)
data modify storage bs:ctx _ set from entity @s Pos
execute in minecraft:overworld run tp @s -30000000 0 1600
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/recurse/init.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/recurse/init.mcfunction
index c85b507a10..1acf3cc24e 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/recurse/init.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/recurse/init.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# get the unit vector [ux,uz,uz]
execute positioned 0.0 0.0 0.0 positioned ^ ^ ^10 run tp @s ~ ~ ~
data modify storage bs:ctx _ set from entity @s Pos
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/recurse/next.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/recurse/next.mcfunction
index c26ae78f39..25d9e97ad2 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/recurse/next.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/recurse/next.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# check block and entity collision (debug: particle minecraft:block_marker barrier ~.5 ~.5 ~.5 0 0 0 0 1)
$execute if score #raycast.b bs.data matches 1 unless block ~ ~ ~ $(ignored_blocks) run function bs.raycast:check/block/any
$execute if score #raycast.e bs.data matches 1 as @e[type=!$(ignored_entities),tag=$(entities),tag=!bs.raycast.omit,dx=0] run function bs.raycast:check/entity/any
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/recurse/x.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/recurse/x.mcfunction
index 9cc2a93252..46390587f2 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/recurse/x.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/recurse/x.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# increment length by delta on x then move to the next block on the grid
scoreboard players operation #raycast.lx bs.data += #raycast.dx bs.data
execute if score #raycast.ux bs.data matches 1.. positioned ~1 ~ ~ run return run function bs.raycast:recurse/next with storage bs:data raycast
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/recurse/y.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/recurse/y.mcfunction
index 4e840075e4..650fdcc705 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/recurse/y.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/recurse/y.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# increment length by delta on y then move to the next block on the grid
scoreboard players operation #raycast.ly bs.data += #raycast.dy bs.data
execute if score #raycast.uy bs.data matches 1.. positioned ~ ~1 ~ run return run function bs.raycast:recurse/next with storage bs:data raycast
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/recurse/z.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/recurse/z.mcfunction
index bd48d9f4ca..be81cee6d0 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/recurse/z.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/recurse/z.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# increment length by delta on z then move to the next block on the grid
scoreboard players operation #raycast.lz bs.data += #raycast.dz bs.data
execute if score #raycast.uz bs.data matches 1.. positioned ~ ~ ~1 run return run function bs.raycast:recurse/next with storage bs:data raycast
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/run.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/run.mcfunction
index 1319f83f8b..6f6070dc84 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/run.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.4
-# Created: 09/10/2023 (1.20.2)
-# Last modification: 02/04/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html#run-the-raycast
+# ------------------------------------------------------------------------------------------------------------
tag @s add bs.raycast.omit
scoreboard players set #raycast.distance bs.data 2147483647
diff --git a/datapacks/Bookshelf/data/bs.raycast/function/with.mcfunction b/datapacks/Bookshelf/data/bs.raycast/function/with.mcfunction
index 0878af70dd..b9bc0f59c5 100644
--- a/datapacks/Bookshelf/data/bs.raycast/function/with.mcfunction
+++ b/datapacks/Bookshelf/data/bs.raycast/function/with.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data raycast set value { \
blocks: true, \
entities: false, \
diff --git a/datapacks/Bookshelf/data/bs.raycast/tags/function/help.json b/datapacks/Bookshelf/data/bs.raycast/tags/function/help.json
index 1c6074e261..eac8a0c021 100644
--- a/datapacks/Bookshelf/data/bs.raycast/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.raycast/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/20",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.raycast:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.raycast/tags/function/load.json b/datapacks/Bookshelf/data/bs.raycast/tags/function/load.json
index 65d92b428c..e8073e19a0 100644
--- a/datapacks/Bookshelf/data/bs.raycast/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.raycast/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/20",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.hitbox:load",
"bs.raycast:__load__"
diff --git a/datapacks/Bookshelf/data/bs.raycast/tags/function/run.json b/datapacks/Bookshelf/data/bs.raycast/tags/function/run.json
index 5aab9d9fba..13d0dd61e2 100644
--- a/datapacks/Bookshelf/data/bs.raycast/tags/function/run.json
+++ b/datapacks/Bookshelf/data/bs.raycast/tags/function/run.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html#run-the-raycast",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/09",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/04/02",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.raycast:with",
"bs.raycast:run"
diff --git a/datapacks/Bookshelf/data/bs.raycast/tags/function/unload.json b/datapacks/Bookshelf/data/bs.raycast/tags/function/unload.json
index 8ceedab1e3..6f6dd6ee02 100644
--- a/datapacks/Bookshelf/data/bs.raycast/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.raycast/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/20",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.raycast:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.schedule/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.schedule/.metadata/generated/features.json
new file mode 100644
index 0000000000..930804f6da
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.schedule/.metadata/generated/features.json
@@ -0,0 +1,120 @@
+[
+ {
+ "name": "cancel_all",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#cancel",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ },
+ "weak_dependencies": [
+ "bs.log"
+ ]
+ },
+ {
+ "name": "cancel_one",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#cancel",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2019/07/31",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ },
+ "weak_dependencies": [
+ "bs.log"
+ ]
+ },
+ {
+ "name": "clear",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#clear",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2019/07/31",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "schedule",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#schedule",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2019/07/31",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "weak_dependencies": [
+ "bs.log"
+ ]
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.schedule/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.schedule/.metadata/generated/module.json
new file mode 100644
index 0000000000..07fddc7180
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.schedule/.metadata/generated/module.json
@@ -0,0 +1,22 @@
+{
+ "name": "bs.schedule",
+ "display_name": "Schedule",
+ "description": "Enhance command scheduling with this module, providing flexibility beyond vanilla capabilities. Cancel commands and maintain execution context (entity & location).",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "weak_dependencies": [
+ "bs.log"
+ ],
+ "features": [
+ "bs.schedule:cancel_all",
+ "bs.schedule:cancel_one",
+ "bs.schedule:clear",
+ "bs.schedule:help",
+ "bs.schedule:load",
+ "bs.schedule:schedule",
+ "bs.schedule:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.schedule/.metadata/module.json b/datapacks/Bookshelf/data/bs.schedule/.metadata/module.json
new file mode 100644
index 0000000000..0ff278de14
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.schedule/.metadata/module.json
@@ -0,0 +1,9 @@
+{
+ "name": "bs.schedule",
+ "display_name": "Schedule",
+ "description": "Enhance command scheduling with this module, providing flexibility beyond vanilla capabilities. Cancel commands and maintain execution context (entity & location).",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "weak_dependencies": [
+ "bs.log"
+ ]
+}
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/__help__.mcfunction
index 378329a4b1..6f2cfccfd0 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.schedule documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/__load__.mcfunction
index d68b3410b3..020823a161 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
execute unless entity B5-0-0-0-1 run summon minecraft:marker -30000000 0 1600 {UUID:[I;181,0,0,1],Tags:["bs.entity","bs.persistent"]}
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/__unload__.mcfunction
index 73ff639dd3..6e8d8fd6b8 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html
+# ------------------------------------------------------------------------------------------------------------
kill B5-0-0-0-1
kill B5-0-0-0-4
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/cancel/cancel_all.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/cancel/cancel_all.mcfunction
index 3562514b5a..29f708b2c6 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/cancel/cancel_all.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/cancel/cancel_all.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 1.2
-# Created: 10/09/2023 (1.20.2)
-# Last modification: 20/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#cancel
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#cancel
+# ------------------------------------------------------------------------------------------------------------
$execute store result score #result bs.data run data remove storage bs:data schedule[$(with)]
function #bs.log:info {namespace:"bs.schedule", tag:"cancel", path:"#bs.schedule:cancel", message:'["Canceled ",{"score":{"name":"#result","objective":"bs.data"}}," command(s)."]'}
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/cancel/cancel_one.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/cancel/cancel_one.mcfunction
index 84ad1b69ac..b6602057bd 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/cancel/cancel_one.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/cancel/cancel_one.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 2.2
-# Created: ??/??/2019 (1.14)
-# Last modification: 20/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#cancel
-# Dependencies:
-# Note: Only remove the first occurrence.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#cancel
+# ------------------------------------------------------------------------------------------------------------
# Find the last element of the queue with the given data.
$data modify storage bs:ctx _ set from storage bs:data schedule[$(with)]
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/cancel/remove_one.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/cancel/remove_one.mcfunction
index eed5245c80..533afd3686 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/cancel/remove_one.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/cancel/remove_one.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$return run data remove storage bs:data schedule[{suid:$(suid)}]
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/clear.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/clear.mcfunction
index b37e116a5a..d45433c730 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/clear.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/clear.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 2.2
-# Created: ??/??/2019 (1.14)
-# Last modification: 20/01/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#clear
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/clear.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard players set #schedule.suid bs.data 0
data modify storage bs:data schedule set value []
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/execute/callback.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/execute/callback.mcfunction
index b793ede5ea..45775cea61 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/execute/callback.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/execute/callback.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:ctx _ set value []
execute store result storage bs:ctx y int 1 run time query gametime
function bs.schedule:execute/splice with storage bs:ctx
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/execute/context.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/execute/context.mcfunction
index 41b8af4086..2c63e60607 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/execute/context.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/execute/context.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute if data storage bs:ctx _[-1] run function bs.schedule:execute/loop
execute in minecraft:overworld run tp @s -30000000 0 1600
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/execute/loop.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/execute/loop.mcfunction
index 64bfef4fa7..3bacbb69e2 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/execute/loop.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/execute/loop.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify entity @s {} merge from storage bs:ctx _[-1]
execute store success score #success bs.data if data storage bs:ctx _[-1].Owner
execute if score #success bs.data matches 0 at @s run function bs.schedule:execute/run with storage bs:ctx _[-1]
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/execute/run.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/execute/run.mcfunction
index e3fa08ab07..4f005cb17a 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/execute/run.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/execute/run.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$$(command)
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/execute/splice.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/execute/splice.mcfunction
index 1d6411148e..e93fba1331 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/execute/splice.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/execute/splice.mcfunction
@@ -1,2 +1,17 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$data modify storage bs:ctx _ append from storage bs:data schedule[{time:$(y)}]
$data remove storage bs:data schedule[{time:$(y)}]
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/schedule/callback.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/schedule/callback.mcfunction
index a3f4c54fa3..7fb07eb9af 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/schedule/callback.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/schedule/callback.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$return run schedule function bs.schedule:execute/callback $(time)t append
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/schedule/context.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/schedule/context.mcfunction
index c42e40ed2f..623734d510 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/schedule/context.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/schedule/context.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
tp @s ~ ~ ~ ~ ~
data modify storage bs:ctx _.Pos set from entity @s Pos
data modify storage bs:ctx _.Rotation set from entity @s Rotation
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/schedule/schedule.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/schedule/schedule.mcfunction
index 74d8291f3f..6af7e039cd 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/schedule/schedule.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/schedule/schedule.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, theogiraudet
-# Contributors:
-
-# Version: 2.2
-# Created: ??/??/2019 (1.14)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#schedule
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#schedule
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value $(with)
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/schedule/unit/handle.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/schedule/unit/handle.mcfunction
index 187e84c925..19235729b4 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/schedule/unit/handle.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/schedule/unit/handle.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store success score #success bs.data run function bs.schedule:schedule/unit/normalize with storage bs:const schedule.units[{name:'$(unit)'}]
execute if score #success bs.data matches 0 run say a
execute if score #success bs.data matches 0 run function #bs.log:error {namespace:"bs.schedule", tag:"schedule", path:"#bs.schedule:schedule", message:'["Unit \\\'",{"storage":"bs:ctx","nbt":"_.unit"},"\\\' is not supported."]'}
diff --git a/datapacks/Bookshelf/data/bs.schedule/function/schedule/unit/normalize.mcfunction b/datapacks/Bookshelf/data/bs.schedule/function/schedule/unit/normalize.mcfunction
index d58a4f0745..f5bb713a4d 100644
--- a/datapacks/Bookshelf/data/bs.schedule/function/schedule/unit/normalize.mcfunction
+++ b/datapacks/Bookshelf/data/bs.schedule/function/schedule/unit/normalize.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store result storage bs:ctx _.time int $(scale) run data get storage bs:ctx _.time
diff --git a/datapacks/Bookshelf/data/bs.schedule/tags/function/cancel_all.json b/datapacks/Bookshelf/data/bs.schedule/tags/function/cancel_all.json
index 45fb7132c0..f3a5a01ce8 100644
--- a/datapacks/Bookshelf/data/bs.schedule/tags/function/cancel_all.json
+++ b/datapacks/Bookshelf/data/bs.schedule/tags/function/cancel_all.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#cancel",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.schedule:cancel/cancel_all"
]
diff --git a/datapacks/Bookshelf/data/bs.schedule/tags/function/cancel_one.json b/datapacks/Bookshelf/data/bs.schedule/tags/function/cancel_one.json
index 5d09134b41..1746e83264 100644
--- a/datapacks/Bookshelf/data/bs.schedule/tags/function/cancel_one.json
+++ b/datapacks/Bookshelf/data/bs.schedule/tags/function/cancel_one.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#cancel",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2019/07/31",
+ "minecraft_version": "1.14"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.schedule:cancel/cancel_one"
]
diff --git a/datapacks/Bookshelf/data/bs.schedule/tags/function/clear.json b/datapacks/Bookshelf/data/bs.schedule/tags/function/clear.json
index a341658aba..b9588c9c5d 100644
--- a/datapacks/Bookshelf/data/bs.schedule/tags/function/clear.json
+++ b/datapacks/Bookshelf/data/bs.schedule/tags/function/clear.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#clear",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2019/07/31",
+ "minecraft_version": "1.14"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.schedule:clear"
]
diff --git a/datapacks/Bookshelf/data/bs.schedule/tags/function/help.json b/datapacks/Bookshelf/data/bs.schedule/tags/function/help.json
index 16fc3444a9..479ad7b59e 100644
--- a/datapacks/Bookshelf/data/bs.schedule/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.schedule/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.schedule:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.schedule/tags/function/load.json b/datapacks/Bookshelf/data/bs.schedule/tags/function/load.json
index 8e566e24e9..559afa45ff 100644
--- a/datapacks/Bookshelf/data/bs.schedule/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.schedule/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.schedule:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.schedule/tags/function/schedule.json b/datapacks/Bookshelf/data/bs.schedule/tags/function/schedule.json
index 5d985ce2b9..ddaec73bcc 100644
--- a/datapacks/Bookshelf/data/bs.schedule/tags/function/schedule.json
+++ b/datapacks/Bookshelf/data/bs.schedule/tags/function/schedule.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#schedule",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2019/07/31",
+ "minecraft_version": "1.14"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.schedule:schedule/schedule"
]
diff --git a/datapacks/Bookshelf/data/bs.schedule/tags/function/unload.json b/datapacks/Bookshelf/data/bs.schedule/tags/function/unload.json
index 42d5311b58..29174a4cc5 100644
--- a/datapacks/Bookshelf/data/bs.schedule/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.schedule/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.schedule:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.sidebar/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.sidebar/.metadata/generated/features.json
new file mode 100644
index 0000000000..2653d2a27e
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.sidebar/.metadata/generated/features.json
@@ -0,0 +1,80 @@
+[
+ {
+ "name": "create",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html#create",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/18",
+ "version": "23w32a"
+ },
+ "updated": {
+ "date": "2023/12/07",
+ "version": "1.20.3"
+ },
+ "weak_dependencies": [
+ "bs.log"
+ ]
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/28",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/28",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "refresh",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html#refresh",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/18",
+ "version": "23w32a"
+ },
+ "updated": {
+ "date": "2023/12/07",
+ "version": "1.20.3"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/28",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.sidebar/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.sidebar/.metadata/generated/module.json
new file mode 100644
index 0000000000..e95c8f8028
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.sidebar/.metadata/generated/module.json
@@ -0,0 +1,19 @@
+{
+ "name": "bs.sidebar",
+ "display_name": "Sidebar",
+ "description": "Create a visually appealing and dynamic sidebar using the scoreboard.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "weak_dependencies": [
+ "bs.log"
+ ],
+ "features": [
+ "bs.sidebar:create",
+ "bs.sidebar:help",
+ "bs.sidebar:load",
+ "bs.sidebar:refresh",
+ "bs.sidebar:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.sidebar/.metadata/module.json b/datapacks/Bookshelf/data/bs.sidebar/.metadata/module.json
new file mode 100644
index 0000000000..e929af18b6
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.sidebar/.metadata/module.json
@@ -0,0 +1,9 @@
+{
+ "name": "bs.sidebar",
+ "display_name": "Sidebar",
+ "description": "Create a visually appealing and dynamic sidebar using the scoreboard.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "weak_dependencies": [
+ "bs.log"
+ ]
+}
diff --git a/datapacks/Bookshelf/data/bs.sidebar/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.sidebar/function/__help__.mcfunction
index 63e268e865..dfb094f85a 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.sidebar/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.sidebar documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.sidebar/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.sidebar/function/__load__.mcfunction
index 7c030d4264..46e4a350fb 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.sidebar/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
execute unless entity B5-0-0-0-2 run summon minecraft:text_display -30000000 0 1600 {UUID:[I;181,0,0,2],Tags:["bs.entity","bs.persistent"],view_range:0f}
diff --git a/datapacks/Bookshelf/data/bs.sidebar/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.sidebar/function/__unload__.mcfunction
index 2aca6e101f..79e22ea20a 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.sidebar/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html
+# ------------------------------------------------------------------------------------------------------------
kill B5-0-0-0-2
forceload remove -30000000 1600
diff --git a/datapacks/Bookshelf/data/bs.sidebar/function/create/check/name.mcfunction b/datapacks/Bookshelf/data/bs.sidebar/function/create/check/name.mcfunction
index 0be4606b10..6efd7aa627 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/function/create/check/name.mcfunction
+++ b/datapacks/Bookshelf/data/bs.sidebar/function/create/check/name.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# guard check, if the function compile the name is valid
return 1
$tellraw @s [$(name)]
diff --git a/datapacks/Bookshelf/data/bs.sidebar/function/create/check/objective.mcfunction b/datapacks/Bookshelf/data/bs.sidebar/function/create/check/objective.mcfunction
index 3c69e8f305..9bbb7acd46 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/function/create/check/objective.mcfunction
+++ b/datapacks/Bookshelf/data/bs.sidebar/function/create/check/objective.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# guard check, if the function compile the objective is valid
return 1
$scoreboard objectives add $(id) dummy
diff --git a/datapacks/Bookshelf/data/bs.sidebar/function/create/create.mcfunction b/datapacks/Bookshelf/data/bs.sidebar/function/create/create.mcfunction
index 69f0d3aeb1..f1c31c6bde 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/function/create/create.mcfunction
+++ b/datapacks/Bookshelf/data/bs.sidebar/function/create/create.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 18/08/2023 (23w32a)
-# Last modification: 07/12/2023 (1.20.3)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html#create
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html#create
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value {id:'$(objective)',name:'$(display_name)',contents:$(contents)}
diff --git a/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/abort.mcfunction b/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/abort.mcfunction
index 394a1aa472..c0286d371f 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/abort.mcfunction
+++ b/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/abort.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$scoreboard objectives remove $(id)
$data remove storage bs:data sidebar[{id:'$(id)'}]
diff --git a/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/next.mcfunction b/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/next.mcfunction
index 67772545fa..0123d5a2bf 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/next.mcfunction
+++ b/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/next.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$scoreboard players set $$(line) $(id) -$(line)
$scoreboard players display name $$(line) $(id) $(left)
$scoreboard players display numberformat $$(line) $(id) fixed $(right)
diff --git a/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/start.mcfunction b/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/start.mcfunction
index b2fd9f7d23..382ba4228b 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/start.mcfunction
+++ b/datapacks/Bookshelf/data/bs.sidebar/function/create/recurse/start.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$scoreboard objectives add $(id) dummy
$scoreboard objectives modify $(id) displayname $(name)
$data remove storage bs:data sidebar[{id:'$(id)'}]
diff --git a/datapacks/Bookshelf/data/bs.sidebar/function/refresh/loop.mcfunction b/datapacks/Bookshelf/data/bs.sidebar/function/refresh/loop.mcfunction
index 64505fdfdd..8d78f89fef 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/function/refresh/loop.mcfunction
+++ b/datapacks/Bookshelf/data/bs.sidebar/function/refresh/loop.mcfunction
@@ -1,3 +1,20 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html#create
+# ------------------------------------------------------------------------------------------------------------
+
$$(cmd) $(text)
data remove storage bs:ctx _.dyn[0]
diff --git a/datapacks/Bookshelf/data/bs.sidebar/function/refresh/refresh.mcfunction b/datapacks/Bookshelf/data/bs.sidebar/function/refresh/refresh.mcfunction
index 34daa2457d..701a6d43cf 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/function/refresh/refresh.mcfunction
+++ b/datapacks/Bookshelf/data/bs.sidebar/function/refresh/refresh.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 18/08/2023 (23w32a)
-# Last modification: 07/12/2023 (1.20.3)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html#refresh
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html#refresh
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set from storage bs:data sidebar[{id:'$(objective)'}]
diff --git a/datapacks/Bookshelf/data/bs.sidebar/tags/function/create.json b/datapacks/Bookshelf/data/bs.sidebar/tags/function/create.json
index dd4408d225..afdee73437 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/tags/function/create.json
+++ b/datapacks/Bookshelf/data/bs.sidebar/tags/function/create.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html#create",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/18",
+ "minecraft_version": "23w32a"
+ },
+ "updated": {
+ "date": "2023/12/07",
+ "minecraft_version": "1.20.3"
+ }
+ },
"values": [
"bs.sidebar:create/create"
]
diff --git a/datapacks/Bookshelf/data/bs.sidebar/tags/function/help.json b/datapacks/Bookshelf/data/bs.sidebar/tags/function/help.json
index d47eb1fb1a..15e1fe574e 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.sidebar/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/28",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.sidebar:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.sidebar/tags/function/load.json b/datapacks/Bookshelf/data/bs.sidebar/tags/function/load.json
index 531eeab9a5..75aa296c0c 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.sidebar/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/28",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.sidebar:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.sidebar/tags/function/refresh.json b/datapacks/Bookshelf/data/bs.sidebar/tags/function/refresh.json
index 6dfbc6734c..bf75bd968b 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/tags/function/refresh.json
+++ b/datapacks/Bookshelf/data/bs.sidebar/tags/function/refresh.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html#refresh",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/18",
+ "minecraft_version": "23w32a"
+ },
+ "updated": {
+ "date": "2023/12/07",
+ "minecraft_version": "1.20.3"
+ }
+ },
"values": [
"bs.sidebar:refresh/refresh"
]
diff --git a/datapacks/Bookshelf/data/bs.sidebar/tags/function/unload.json b/datapacks/Bookshelf/data/bs.sidebar/tags/function/unload.json
index 0ac58b3b9f..739cc128f9 100644
--- a/datapacks/Bookshelf/data/bs.sidebar/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.sidebar/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/28",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.sidebar:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.time/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.time/.metadata/generated/features.json
new file mode 100644
index 0000000000..ff62c504ab
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.time/.metadata/generated/features.json
@@ -0,0 +1,66 @@
+[
+ {
+ "name": "get",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html#system-time",
+ "authors": [
+ "Aksiome"
+ ],
+ "contributors": [
+ "Awhikax",
+ "RedCoal"
+ ],
+ "created": {
+ "date": "2021/10/30",
+ "version": "1.17.1"
+ },
+ "updated": {
+ "date": "2023/08/30",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/30",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/24",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/30",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/24",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/30",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/24",
+ "version": "1.20.2"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.time/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.time/.metadata/generated/module.json
new file mode 100644
index 0000000000..35144bb8cc
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.time/.metadata/generated/module.json
@@ -0,0 +1,19 @@
+{
+ "name": "bs.time",
+ "display_name": "Time",
+ "description": "Get information about the system time effortlessly.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "contributors": [
+ "Awhikax",
+ "RedCoal"
+ ],
+ "features": [
+ "bs.time:get",
+ "bs.time:help",
+ "bs.time:load",
+ "bs.time:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.time/.metadata/module.json b/datapacks/Bookshelf/data/bs.time/.metadata/module.json
new file mode 100644
index 0000000000..8fa06c018a
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.time/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.time",
+ "display_name": "Time",
+ "description": "Get information about the system time effortlessly.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.time/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.time/function/__help__.mcfunction
index 2403c5a2d3..c45c80ba09 100644
--- a/datapacks/Bookshelf/data/bs.time/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.time/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/time.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.time documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.time/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.time/function/__load__.mcfunction
index 3a3f77b864..22b9a2c531 100644
--- a/datapacks/Bookshelf/data/bs.time/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.time/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/time.html
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
setblock -30000000 0 1605 minecraft:repeating_command_block[facing=up]{auto:1b,Command:"help me",TrackOutput:1}
diff --git a/datapacks/Bookshelf/data/bs.time/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.time/function/__unload__.mcfunction
index daf2f59730..352f4436e7 100644
--- a/datapacks/Bookshelf/data/bs.time/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.time/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/time.html
+# ------------------------------------------------------------------------------------------------------------
setblock -30000000 0 1605 minecraft:air
forceload remove -30000000 1600
diff --git a/datapacks/Bookshelf/data/bs.time/function/get/cast.mcfunction b/datapacks/Bookshelf/data/bs.time/function/get/cast.mcfunction
index 4f7da261f5..9e3d65f52b 100644
--- a/datapacks/Bookshelf/data/bs.time/function/get/cast.mcfunction
+++ b/datapacks/Bookshelf/data/bs.time/function/get/cast.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$scoreboard players set $time.hours bs.out $(hours)
$scoreboard players set $time.minutes bs.out $(minutes)
$scoreboard players set $time.seconds bs.out $(seconds)
diff --git a/datapacks/Bookshelf/data/bs.time/function/get/get.mcfunction b/datapacks/Bookshelf/data/bs.time/function/get/get.mcfunction
index 814eac7ca2..f676d3acec 100644
--- a/datapacks/Bookshelf/data/bs.time/function/get/get.mcfunction
+++ b/datapacks/Bookshelf/data/bs.time/function/get/get.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors: RedCoal & Awhikax
-
-# Version: 2.0
-# Created: ??/??/???? (?.??)
-# Last modification: 30/08/2023 (23w33a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/time.html
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/time.html#system-time
+# ------------------------------------------------------------------------------------------------------------
data modify storage bs:data time.full set string block -30000000 0 1605 LastOutput 10 18
data modify storage bs:data time.hours set string storage bs:data time.full 0 2
diff --git a/datapacks/Bookshelf/data/bs.time/tags/function/get.json b/datapacks/Bookshelf/data/bs.time/tags/function/get.json
index b074851876..a55a406b81 100644
--- a/datapacks/Bookshelf/data/bs.time/tags/function/get.json
+++ b/datapacks/Bookshelf/data/bs.time/tags/function/get.json
@@ -1,4 +1,23 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html#system-time",
+ "authors": [
+ "Aksiome"
+ ],
+ "contributors": [
+ "RedCoal",
+ "Awhikax"
+ ],
+ "created": {
+ "date": "2021/10/30",
+ "minecraft_version": "1.17.1"
+ },
+ "updated": {
+ "date": "2023/08/30",
+ "minecraft_version": "23w33a"
+ }
+ },
"values": [
"bs.time:get/get"
]
diff --git a/datapacks/Bookshelf/data/bs.time/tags/function/help.json b/datapacks/Bookshelf/data/bs.time/tags/function/help.json
index 69e1cea288..73ea82900a 100644
--- a/datapacks/Bookshelf/data/bs.time/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.time/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/30",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/24",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.time:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.time/tags/function/load.json b/datapacks/Bookshelf/data/bs.time/tags/function/load.json
index ab17e20c3a..0a872675a8 100644
--- a/datapacks/Bookshelf/data/bs.time/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.time/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/30",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/24",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.time:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.time/tags/function/unload.json b/datapacks/Bookshelf/data/bs.time/tags/function/unload.json
index 48e9571b60..d58a6ba275 100644
--- a/datapacks/Bookshelf/data/bs.time/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.time/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/30",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/24",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.time:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.tree/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.tree/.metadata/generated/features.json
new file mode 100644
index 0000000000..c1b4e4772f
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.tree/.metadata/generated/features.json
@@ -0,0 +1,47 @@
+[
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2023/10/19",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2023/10/19",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2023/10/19",
+ "version": "1.20.2"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.tree/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.tree/.metadata/generated/module.json
new file mode 100644
index 0000000000..5ab037fe9b
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.tree/.metadata/generated/module.json
@@ -0,0 +1,14 @@
+{
+ "name": "bs.tree",
+ "display_name": "Tree",
+ "description": "Simplicity meets utility in this bank of trees.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "features": [
+ "bs.tree:help",
+ "bs.tree:load",
+ "bs.tree:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.tree/.metadata/module.json b/datapacks/Bookshelf/data/bs.tree/.metadata/module.json
new file mode 100644
index 0000000000..8de67b391d
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.tree/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.tree",
+ "display_name": "Tree",
+ "description": "Simplicity meets utility in this bank of trees.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.tree/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.tree/function/__help__.mcfunction
index 597850316b..6b297af11e 100644
--- a/datapacks/Bookshelf/data/bs.tree/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.tree/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.tree documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.tree/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.tree/function/__load__.mcfunction
index c22814283e..dd20e7c63f 100644
--- a/datapacks/Bookshelf/data/bs.tree/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.tree/function/__load__.mcfunction
@@ -1,4 +1,16 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html
+# ------------------------------------------------------------------------------------------------------------
diff --git a/datapacks/Bookshelf/data/bs.tree/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.tree/function/__unload__.mcfunction
index c22814283e..dd20e7c63f 100644
--- a/datapacks/Bookshelf/data/bs.tree/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.tree/function/__unload__.mcfunction
@@ -1,4 +1,16 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html
+# ------------------------------------------------------------------------------------------------------------
diff --git a/datapacks/Bookshelf/data/bs.tree/tags/function/help.json b/datapacks/Bookshelf/data/bs.tree/tags/function/help.json
index 6541fb011b..6eba2df943 100644
--- a/datapacks/Bookshelf/data/bs.tree/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.tree/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2023/10/19",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.tree:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.tree/tags/function/load.json b/datapacks/Bookshelf/data/bs.tree/tags/function/load.json
index 3003b3f5bc..4f81d07f1e 100644
--- a/datapacks/Bookshelf/data/bs.tree/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.tree/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2023/10/19",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.tree:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.tree/tags/function/unload.json b/datapacks/Bookshelf/data/bs.tree/tags/function/unload.json
index 1e42293942..4c7b442744 100644
--- a/datapacks/Bookshelf/data/bs.tree/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.tree/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2023/10/19",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.tree:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.vector/.metadata/generated/features.json
new file mode 100644
index 0000000000..c28fa3f083
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.vector/.metadata/generated/features.json
@@ -0,0 +1,314 @@
+[
+ {
+ "name": "abs_max",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#absolute-max",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/02/23",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2024/05/09",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "abs_min",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#absolute-min",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/05/09",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "basis_rot_3d",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#basis-rotation-3d",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "cartesian_to_spherical",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#cartesian-to-spherical",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "cross_product",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#cross-product",
+ "authors": [
+ "Aksiome",
+ "Majoras16"
+ ],
+ "created": {
+ "date": "2023/04/27",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "dot_product",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#dot-product",
+ "authors": [
+ "Aksiome",
+ "Majoras16"
+ ],
+ "created": {
+ "date": "2023/04/27",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/21",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "length",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length",
+ "authors": [
+ "Aksiome",
+ "KubbyDev",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/04/01",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "length_squared",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length",
+ "authors": [
+ "Aksiome",
+ "KubbyDev",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/04/01",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/21",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "normalize",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#normalize",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/02/19",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "normalize_max_component",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length",
+ "authors": [
+ "Aksiome",
+ "KubbyDev",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/04/01",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "pos_from_vec",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "rot_from_vec",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "spherical_to_cartesian",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#spherical-to-cartesian",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/21",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "vec_from_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "vec_from_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "vec_from_vel",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "vel_from_vec",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "version": "1.20.2"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.vector/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.vector/.metadata/generated/module.json
new file mode 100644
index 0000000000..9b354cdce5
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.vector/.metadata/generated/module.json
@@ -0,0 +1,34 @@
+{
+ "name": "bs.vector",
+ "display_name": "Vector",
+ "description": "Vectors are fundamental and incredibly powerful tools to manage motions, forces and⦠well⦠do physics!",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html",
+ "authors": [
+ "Aksiome",
+ "KubbyDev",
+ "Leirof",
+ "Majoras16"
+ ],
+ "features": [
+ "bs.vector:abs_max",
+ "bs.vector:abs_min",
+ "bs.vector:basis_rot_3d",
+ "bs.vector:cartesian_to_spherical",
+ "bs.vector:cross_product",
+ "bs.vector:dot_product",
+ "bs.vector:help",
+ "bs.vector:length",
+ "bs.vector:length_squared",
+ "bs.vector:load",
+ "bs.vector:normalize",
+ "bs.vector:normalize_max_component",
+ "bs.vector:pos_from_vec",
+ "bs.vector:rot_from_vec",
+ "bs.vector:spherical_to_cartesian",
+ "bs.vector:unload",
+ "bs.vector:vec_from_pos",
+ "bs.vector:vec_from_rot",
+ "bs.vector:vec_from_vel",
+ "bs.vector:vel_from_vec"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.vector/.metadata/module.json b/datapacks/Bookshelf/data/bs.vector/.metadata/module.json
new file mode 100644
index 0000000000..8768ea99be
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.vector/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.vector",
+ "display_name": "Vector",
+ "description": "Vectors are fundamental and incredibly powerful tools to manage motions, forces and⦠well⦠do physics!",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.vector/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/__help__.mcfunction
index b5a0e047f5..69050279a2 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.vector documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.vector/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/__load__.mcfunction
index 2e4bb27753..f972e9026d 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
execute unless entity B5-0-0-0-1 run summon minecraft:marker -30000000 0 1600 {UUID:[I;181,0,0,1],Tags:["bs.entity","bs.persistent"]}
diff --git a/datapacks/Bookshelf/data/bs.vector/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/__unload__.mcfunction
index e249f1946e..686a4b182a 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html
+# ------------------------------------------------------------------------------------------------------------
kill B5-0-0-0-1
kill B5-0-0-0-2
diff --git a/datapacks/Bookshelf/data/bs.vector/function/abs_max.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/abs_max.mcfunction
index ad3690d6c9..62d3c6c95c 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/abs_max.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/abs_max.mcfunction
@@ -1,3 +1,20 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#absolute-max
+# ------------------------------------------------------------------------------------------------------------
+
# INFO ------------------------------------------------------------------------
# Copyright Β© 2024 Gunivers Community.
diff --git a/datapacks/Bookshelf/data/bs.vector/function/abs_min.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/abs_min.mcfunction
index 3d22ab0c02..2ec57741ab 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/abs_min.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/abs_min.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 17/10/2023 (1.20.2)
-# Last modification: 09/05/2024 (1.20.6)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#absolute-min
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#absolute-min
+# ------------------------------------------------------------------------------------------------------------
scoreboard players operation $vector.abs_min bs.out = $vector.abs_min.0 bs.in
execute if predicate bs.vector:abs_min/check1 run scoreboard players operation $vector.abs_min bs.out = $vector.abs_min.1 bs.in
diff --git a/datapacks/Bookshelf/data/bs.vector/function/convert/basis_rot_3d/basis_rot_3d.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/convert/basis_rot_3d/basis_rot_3d.mcfunction
index 89789bd13b..bd65e6c4d1 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/convert/basis_rot_3d/basis_rot_3d.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/convert/basis_rot_3d/basis_rot_3d.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 1.0
-# Created: 20/10/2023 (1.20.2)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#basis-rotation-3d
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#basis-rotation-3d
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players set #vector.scaling bs.data $(scaling)
scoreboard players set #vector.dscale bs.data 1000000000
diff --git a/datapacks/Bookshelf/data/bs.vector/function/convert/basis_rot_3d/sincos.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/convert/basis_rot_3d/sincos.mcfunction
index 0c291bf810..b7264eff5a 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/convert/basis_rot_3d/sincos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/convert/basis_rot_3d/sincos.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store result entity @s Rotation[0] float $(y) run scoreboard players get $vector.basis_rot_3d.rot.0 bs.in
execute at @s positioned 0.0 0.0 0.0 rotated ~ 0.0 run tp @s ^ ^ ^10.0
execute store result score #vector.cos.h bs.data run data get entity @s Pos[2] 100
diff --git a/datapacks/Bookshelf/data/bs.vector/function/convert/cartesian_to_spherical/cartesian_to_spherical.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/convert/cartesian_to_spherical/cartesian_to_spherical.mcfunction
index 258af418c6..7360a0d04f 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/convert/cartesian_to_spherical/cartesian_to_spherical.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/convert/cartesian_to_spherical/cartesian_to_spherical.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 20/10/2023 (1.20.2)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#cartesian-to-spherical
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#cartesian-to-spherical
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.vector:convert/cartesian_to_spherical/compute
$execute store result score $vector.cartesian_to_spherical.0 bs.out run data get entity B5-0-0-0-1 Rotation[0] $(scaling)
diff --git a/datapacks/Bookshelf/data/bs.vector/function/convert/cartesian_to_spherical/compute.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/convert/cartesian_to_spherical/compute.mcfunction
index 50d1d095ed..183334b75c 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/convert/cartesian_to_spherical/compute.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/convert/cartesian_to_spherical/compute.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity @s Pos[0] double 0.001 store result storage bs:ctx x int 1 run scoreboard players get $vector.cartesian_to_spherical.0 bs.in
execute store result entity @s Pos[1] double 0.001 store result storage bs:ctx y int 1 run scoreboard players get $vector.cartesian_to_spherical.1 bs.in
execute store result entity @s Pos[2] double 0.001 store result storage bs:ctx z int 1 run scoreboard players get $vector.cartesian_to_spherical.2 bs.in
diff --git a/datapacks/Bookshelf/data/bs.vector/function/convert/spherical_to_cartesian/compute.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/convert/spherical_to_cartesian/compute.mcfunction
index ebb5106eef..5e04098bbb 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/convert/spherical_to_cartesian/compute.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/convert/spherical_to_cartesian/compute.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$execute store result entity @s Rotation[0] float $(y) run scoreboard players get $vector.spherical_to_cartesian.0 bs.in
$execute store result entity @s Rotation[1] float $(y) run scoreboard players get $vector.spherical_to_cartesian.1 bs.in
$execute rotated as @s positioned 0.0 0.0 0.0 run tp @s ^ ^ ^$(x)
diff --git a/datapacks/Bookshelf/data/bs.vector/function/convert/spherical_to_cartesian/spherical_to_cartesian.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/convert/spherical_to_cartesian/spherical_to_cartesian.mcfunction
index bf11285f31..f4fe097c77 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/convert/spherical_to_cartesian/spherical_to_cartesian.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/convert/spherical_to_cartesian/spherical_to_cartesian.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 20/10/2023 (1.20.2)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#spherical-to-cartesian
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#spherical-to-cartesian
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players set #vector.scaling bs.data $(scaling)
scoreboard players set #vector.dscale bs.data 1000000000
diff --git a/datapacks/Bookshelf/data/bs.vector/function/cross_product.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/cross_product.mcfunction
index 10c47eca91..34c9b546bb 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/cross_product.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/cross_product.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Majoras16
-# Contributors:
-
-# Version: 2.0
-# Created: 27/04/2023 (1.19.2)
-# Last modification: 17/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#cross-product
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#cross-product
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players set #vector.scaling bs.data $(scaling)
diff --git a/datapacks/Bookshelf/data/bs.vector/function/dot_product.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/dot_product.mcfunction
index ef082ba548..aabd497bc5 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/dot_product.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/dot_product.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Majoras16
-# Contributors:
-
-# Version: 2.0
-# Created: 27/04/2023 (1.19.2)
-# Last modification: 17/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#dot-product
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#dot-product
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players set #vector.scaling bs.data $(scaling)
diff --git a/datapacks/Bookshelf/data/bs.vector/function/length/compute.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/length/compute.mcfunction
index 8506bf1ac4..23e200173f 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/length/compute.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/length/compute.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# compute Euclidean distance: sqrt(x^2+y^2+z^2)
# Thanks to Triton365 for sharing this trick on the Minecraft Commands discord
$data modify entity @s transformation set value [$(x)f,0f,0f,0f,$(y)f,0f,0f,0f,$(z)f,0f,0f,0f,0f,0f,0f,1f]
diff --git a/datapacks/Bookshelf/data/bs.vector/function/length/length.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/length/length.mcfunction
index 796ada8377..fe5ebd24da 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/length/length.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/length/length.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 3.0
-# Created: ??/??/???? (1.13)
-# Last modification: 20/11/2023 (23w46a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length
+# ------------------------------------------------------------------------------------------------------------
execute store result storage bs:ctx x int 1 run scoreboard players get $vector.length.0 bs.in
execute store result storage bs:ctx y int 1 run scoreboard players get $vector.length.1 bs.in
diff --git a/datapacks/Bookshelf/data/bs.vector/function/length_squared.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/length_squared.mcfunction
index 7d3c415917..a526a8aa29 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/length_squared.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/length_squared.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: ??/??/???? (1.13)
-# Last modification: 17/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players set #vector.scaling bs.data $(scaling)
diff --git a/datapacks/Bookshelf/data/bs.vector/function/normalize/compute.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/normalize/compute.mcfunction
index 0f4fc2afcd..c533fbab18 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/normalize/compute.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/normalize/compute.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity @s Pos[0] double 0.00000001 run scoreboard players get $vector.normalize.0 bs.in
execute store result entity @s Pos[1] double 0.00000001 run scoreboard players get $vector.normalize.1 bs.in
execute store result entity @s Pos[2] double 0.00000001 run scoreboard players get $vector.normalize.2 bs.in
diff --git a/datapacks/Bookshelf/data/bs.vector/function/normalize/normalize.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/normalize/normalize.mcfunction
index 2f311a8fb1..ae19a8dc44 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/normalize/normalize.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/normalize/normalize.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: 19/02/2023 (1.19.2)
-# Last modification: 27/02/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#normalize
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#normalize
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.vector:normalize/compute
$execute store result score $vector.normalize.0 bs.out run data get storage bs:ctx _[0] $(scale)
diff --git a/datapacks/Bookshelf/data/bs.vector/function/normalize_max_component.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/normalize_max_component.mcfunction
index d4fdc174ed..ed2916a6a3 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/normalize_max_component.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/normalize_max_component.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.0
-# Created: 19/02/2023 (1.19.2)
-# Last modification: 17/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#normalize
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#normalize
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players set #vector.scale bs.data $(scale)
diff --git a/datapacks/Bookshelf/data/bs.vector/function/pos_from_vec.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/pos_from_vec.mcfunction
index 25cfbd6cf7..475c3e9a71 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/pos_from_vec.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/pos_from_vec.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 17/10/2023 (1.20.2)
-# Last modification: 17/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players operation @s bs.pos.x = $(name).0 $(objective)
$scoreboard players operation @s bs.pos.y = $(name).1 $(objective)
diff --git a/datapacks/Bookshelf/data/bs.vector/function/rot_from_vec.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/rot_from_vec.mcfunction
index fa3d825edc..0ef901eae7 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/rot_from_vec.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/rot_from_vec.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 17/10/2023 (1.20.2)
-# Last modification: 17/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players operation @s bs.rot.h = $(name).0 $(objective)
$scoreboard players operation @s bs.rot.v = $(name).1 $(objective)
diff --git a/datapacks/Bookshelf/data/bs.vector/function/vec_from_pos.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/vec_from_pos.mcfunction
index a76bc138ae..90539408da 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/vec_from_pos.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/vec_from_pos.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 17/10/2023 (1.20.2)
-# Last modification: 17/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players operation $(name).0 $(objective) = @s bs.pos.x
$scoreboard players operation $(name).1 $(objective) = @s bs.pos.y
diff --git a/datapacks/Bookshelf/data/bs.vector/function/vec_from_rot.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/vec_from_rot.mcfunction
index 748ead1e4c..2168c3f9d6 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/vec_from_rot.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/vec_from_rot.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 17/10/2023 (1.20.2)
-# Last modification: 17/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players operation $(name).0 $(objective) = @s bs.rot.h
$scoreboard players operation $(name).1 $(objective) = @s bs.rot.v
diff --git a/datapacks/Bookshelf/data/bs.vector/function/vec_from_vel.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/vec_from_vel.mcfunction
index 5dc0e713b5..1d5517b993 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/vec_from_vel.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/vec_from_vel.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 17/10/2023 (1.20.2)
-# Last modification: 17/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players operation $(name).0 $(objective) = @s bs.vel.x
$scoreboard players operation $(name).1 $(objective) = @s bs.vel.y
diff --git a/datapacks/Bookshelf/data/bs.vector/function/vel_from_vec.mcfunction b/datapacks/Bookshelf/data/bs.vector/function/vel_from_vec.mcfunction
index 447e1961f2..a08b8a0297 100644
--- a/datapacks/Bookshelf/data/bs.vector/function/vel_from_vec.mcfunction
+++ b/datapacks/Bookshelf/data/bs.vector/function/vel_from_vec.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.0
-# Created: 17/10/2023 (1.20.2)
-# Last modification: 17/10/2023 (1.20.2)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers
+# ------------------------------------------------------------------------------------------------------------
$scoreboard players operation @s bs.vel.x = $(name).0 $(objective)
$scoreboard players operation @s bs.vel.y = $(name).1 $(objective)
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/abs_max.json b/datapacks/Bookshelf/data/bs.vector/tags/function/abs_max.json
index 4410e3d118..a17dd3bc88 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/abs_max.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/abs_max.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#absolute-max",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/02/23",
+ "minecraft_version": "1.19.2"
+ },
+ "updated": {
+ "date": "2024/05/09",
+ "minecraft_version": "1.20.6"
+ }
+ },
"values": [
"bs.vector:abs_max"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/abs_min.json b/datapacks/Bookshelf/data/bs.vector/tags/function/abs_min.json
index e302471258..49ed7947b2 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/abs_min.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/abs_min.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#absolute-min",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/05/09",
+ "minecraft_version": "1.20.6"
+ }
+ },
"values": [
"bs.vector:abs_min"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/basis_rot_3d.json b/datapacks/Bookshelf/data/bs.vector/tags/function/basis_rot_3d.json
index 855afab53c..801551c8bc 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/basis_rot_3d.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/basis_rot_3d.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#basis-rotation-3d",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.vector:convert/basis_rot_3d/basis_rot_3d"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/cartesian_to_spherical.json b/datapacks/Bookshelf/data/bs.vector/tags/function/cartesian_to_spherical.json
index 57f2fc107c..6e995236af 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/cartesian_to_spherical.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/cartesian_to_spherical.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#cartesian-to-spherical",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.vector:convert/cartesian_to_spherical/cartesian_to_spherical"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/cross_product.json b/datapacks/Bookshelf/data/bs.vector/tags/function/cross_product.json
index e9f84a8c95..76ef9d6613 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/cross_product.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/cross_product.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#cross-product",
+ "authors": [
+ "Aksiome",
+ "Majoras16"
+ ],
+ "created": {
+ "date": "2023/04/27",
+ "minecraft_version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.vector:cross_product"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/dot_product.json b/datapacks/Bookshelf/data/bs.vector/tags/function/dot_product.json
index a9f5549f47..48686fcde1 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/dot_product.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/dot_product.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#dot-product",
+ "authors": [
+ "Aksiome",
+ "Majoras16"
+ ],
+ "created": {
+ "date": "2023/04/27",
+ "minecraft_version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.vector:dot_product"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/help.json b/datapacks/Bookshelf/data/bs.vector/tags/function/help.json
new file mode 100644
index 0000000000..890391ec7f
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/help.json
@@ -0,0 +1,20 @@
+{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/21",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
+ "values": [
+ "bs.vector:__help__"
+ ]
+}
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/length.json b/datapacks/Bookshelf/data/bs.vector/tags/function/length.json
index 1bb9a3c3fe..68b1d9dd91 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/length.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/length.json
@@ -1,4 +1,21 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2018/04/01",
+ "minecraft_version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "minecraft_version": "23w46a"
+ }
+ },
"values": [
"bs.vector:length/length"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/length_squared.json b/datapacks/Bookshelf/data/bs.vector/tags/function/length_squared.json
index a78f8564e2..ac5732ea68 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/length_squared.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/length_squared.json
@@ -1,4 +1,21 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2018/04/01",
+ "minecraft_version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.vector:length_squared"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/load.json b/datapacks/Bookshelf/data/bs.vector/tags/function/load.json
index 7be94f6372..2e003691ad 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/21",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.vector:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/normalize.json b/datapacks/Bookshelf/data/bs.vector/tags/function/normalize.json
index ff73c1cac3..49f4cd4694 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/normalize.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/normalize.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#normalize",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/02/19",
+ "minecraft_version": "1.19.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.vector:normalize/normalize"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/normalize_max_component.json b/datapacks/Bookshelf/data/bs.vector/tags/function/normalize_max_component.json
index 3b9be9f517..0901ada31d 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/normalize_max_component.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/normalize_max_component.json
@@ -1,4 +1,21 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2018/04/01",
+ "minecraft_version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "minecraft_version": "23w46a"
+ }
+ },
"values": [
"bs.vector:normalize_max_component"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/pos_from_vec.json b/datapacks/Bookshelf/data/bs.vector/tags/function/pos_from_vec.json
index 88ad290fcf..8faf254f66 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/pos_from_vec.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/pos_from_vec.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.vector:pos_from_vec"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/rot_from_vec.json b/datapacks/Bookshelf/data/bs.vector/tags/function/rot_from_vec.json
index 2d56328808..e58563b8c3 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/rot_from_vec.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/rot_from_vec.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.vector:rot_from_vec"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/spherical_to_cartesian.json b/datapacks/Bookshelf/data/bs.vector/tags/function/spherical_to_cartesian.json
index 69a6273bd3..1a6491bb0c 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/spherical_to_cartesian.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/spherical_to_cartesian.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#spherical-to-cartesian",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.vector:convert/spherical_to_cartesian/spherical_to_cartesian"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/unload.json b/datapacks/Bookshelf/data/bs.vector/tags/function/unload.json
index b4e0b25556..a0a6fd26e4 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/21",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.vector:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_pos.json b/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_pos.json
index 3f2b0efbd8..b8d6cdd1c0 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_pos.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_pos.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.vector:vec_from_pos"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_rot.json b/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_rot.json
index 9ce25b2e78..7220091b03 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_rot.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_rot.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.vector:vec_from_rot"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_vel.json b/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_vel.json
index d877ee7a29..bcbc983df8 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_vel.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/vec_from_vel.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.vector:vec_from_vel"
]
diff --git a/datapacks/Bookshelf/data/bs.vector/tags/function/vel_from_vec.json b/datapacks/Bookshelf/data/bs.vector/tags/function/vel_from_vec.json
index 5b3ce67211..a73208901e 100644
--- a/datapacks/Bookshelf/data/bs.vector/tags/function/vel_from_vec.json
+++ b/datapacks/Bookshelf/data/bs.vector/tags/function/vel_from_vec.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "minecraft_version": "1.20.2"
+ }
+ },
"values": [
"bs.vector:vel_from_vec"
]
diff --git a/datapacks/Bookshelf/data/bs.view/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.view/.metadata/generated/features.json
new file mode 100644
index 0000000000..d5da22019a
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.view/.metadata/generated/features.json
@@ -0,0 +1,205 @@
+[
+ {
+ "name": "as_aimed_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/30",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "as_looked_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#looked-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/06",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "at_aimed_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-block",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/30",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "at_aimed_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/30",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "at_aimed_point",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-point",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/25",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "at_block_placement",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#block-placement",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/24",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/05/09",
+ "version": "1.20.6"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "at_looked_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#looked-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/06",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "can_see_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#can-see-as-to-at",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/05/20",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/04/20",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/22",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "in_view_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#in-view-as-to-at",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/05/20",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/04/20",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/22",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.raycast"
+ ]
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/22",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.view/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.view/.metadata/generated/module.json
new file mode 100644
index 0000000000..e1837f40a4
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.view/.metadata/generated/module.json
@@ -0,0 +1,28 @@
+{
+ "name": "bs.view",
+ "display_name": "View",
+ "description": "Execute commands based on what an entity sees.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "dependencies": [
+ "bs.hitbox",
+ "bs.raycast"
+ ],
+ "features": [
+ "bs.view:as_aimed_entity",
+ "bs.view:as_looked_entity",
+ "bs.view:at_aimed_block",
+ "bs.view:at_aimed_entity",
+ "bs.view:at_aimed_point",
+ "bs.view:at_block_placement",
+ "bs.view:at_looked_entity",
+ "bs.view:can_see_ata",
+ "bs.view:help",
+ "bs.view:in_view_ata",
+ "bs.view:load",
+ "bs.view:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.view/.metadata/module.json b/datapacks/Bookshelf/data/bs.view/.metadata/module.json
new file mode 100644
index 0000000000..468232bf65
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.view/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.view",
+ "display_name": "View",
+ "description": "Execute commands based on what an entity sees.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.view/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.view/function/__help__.mcfunction
index d644edf33b..1872ba8514 100644
--- a/datapacks/Bookshelf/data/bs.view/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/__help__.mcfunction
@@ -1,6 +1,16 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.view documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.view/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.view/function/__load__.mcfunction
index fc05aeb7a4..38d31f5b69 100644
--- a/datapacks/Bookshelf/data/bs.view/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/__load__.mcfunction
@@ -1,8 +1,17 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
-
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
forceload add -30000000 1600
execute unless entity B5-0-0-0-1 run summon minecraft:marker -30000000 0 1600 {UUID:[I;181,0,0,1],Tags:["bs.entity","bs.persistent"]}
execute unless entity B5-0-0-0-2 run summon minecraft:text_display -30000000 0 1600 {UUID:[I;181,0,0,2],Tags:["bs.entity","bs.persistent"],view_range:0f}
diff --git a/datapacks/Bookshelf/data/bs.view/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.view/function/__unload__.mcfunction
index b6590bd382..3cae57c6d7 100644
--- a/datapacks/Bookshelf/data/bs.view/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/__unload__.mcfunction
@@ -1,7 +1,17 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
kill B5-0-0-0-1
kill B5-0-0-0-4
diff --git a/datapacks/Bookshelf/data/bs.view/function/aimed_block/at_aimed_block.mcfunction b/datapacks/Bookshelf/data/bs.view/function/aimed_block/at_aimed_block.mcfunction
index 388191ae43..6a1c66a9a4 100644
--- a/datapacks/Bookshelf/data/bs.view/function/aimed_block/at_aimed_block.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/aimed_block/at_aimed_block.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 30/11/2023 (1.20.3)
-# Last modification: 30/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-block
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-block
+# ------------------------------------------------------------------------------------------------------------
# run the raycast at the entity eyes
execute at @s anchored eyes positioned ^ ^ ^ run function bs.raycast:run
diff --git a/datapacks/Bookshelf/data/bs.view/function/aimed_block/with.mcfunction b/datapacks/Bookshelf/data/bs.view/function/aimed_block/with.mcfunction
index 0878af70dd..b9bc0f59c5 100644
--- a/datapacks/Bookshelf/data/bs.view/function/aimed_block/with.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/aimed_block/with.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data raycast set value { \
blocks: true, \
entities: false, \
diff --git a/datapacks/Bookshelf/data/bs.view/function/aimed_entity/as_aimed_entity.mcfunction b/datapacks/Bookshelf/data/bs.view/function/aimed_entity/as_aimed_entity.mcfunction
index c048aaf063..ee915940e2 100644
--- a/datapacks/Bookshelf/data/bs.view/function/aimed_entity/as_aimed_entity.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/aimed_entity/as_aimed_entity.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 30/11/2023 (1.20.3)
-# Last modification: 30/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-entity
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-entity
+# ------------------------------------------------------------------------------------------------------------
# run the raycast at the entity eyes
execute at @s anchored eyes positioned ^ ^ ^ run function bs.raycast:run
diff --git a/datapacks/Bookshelf/data/bs.view/function/aimed_entity/at_aimed_entity.mcfunction b/datapacks/Bookshelf/data/bs.view/function/aimed_entity/at_aimed_entity.mcfunction
index b0bdf2099e..44a26fc830 100644
--- a/datapacks/Bookshelf/data/bs.view/function/aimed_entity/at_aimed_entity.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/aimed_entity/at_aimed_entity.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 30/11/2023 (1.20.3)
-# Last modification: 30/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-entity
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-entity
+# ------------------------------------------------------------------------------------------------------------
# run the raycast at the entity eyes
execute at @s anchored eyes positioned ^ ^ ^ run function bs.raycast:run
diff --git a/datapacks/Bookshelf/data/bs.view/function/aimed_entity/with.mcfunction b/datapacks/Bookshelf/data/bs.view/function/aimed_entity/with.mcfunction
index 7c5f2142a6..d8a0e7e249 100644
--- a/datapacks/Bookshelf/data/bs.view/function/aimed_entity/with.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/aimed_entity/with.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data raycast set value { \
blocks: true, \
entities: true, \
diff --git a/datapacks/Bookshelf/data/bs.view/function/aimed_point/at_aimed_point.mcfunction b/datapacks/Bookshelf/data/bs.view/function/aimed_point/at_aimed_point.mcfunction
index 682fa854ba..f704d36bae 100644
--- a/datapacks/Bookshelf/data/bs.view/function/aimed_point/at_aimed_point.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/aimed_point/at_aimed_point.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 25/01/2024 (1.20.4)
-# Last modification: 30/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-point
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-point
+# ------------------------------------------------------------------------------------------------------------
# run the raycast at the entity eyes
execute at @s anchored eyes positioned ^ ^ ^ run function bs.raycast:run
diff --git a/datapacks/Bookshelf/data/bs.view/function/aimed_point/with.mcfunction b/datapacks/Bookshelf/data/bs.view/function/aimed_point/with.mcfunction
index 7c5f2142a6..d8a0e7e249 100644
--- a/datapacks/Bookshelf/data/bs.view/function/aimed_point/with.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/aimed_point/with.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data raycast set value { \
blocks: true, \
entities: true, \
diff --git a/datapacks/Bookshelf/data/bs.view/function/block_placement/at_block_placement.mcfunction b/datapacks/Bookshelf/data/bs.view/function/block_placement/at_block_placement.mcfunction
index 13e065020f..e430703aa3 100644
--- a/datapacks/Bookshelf/data/bs.view/function/block_placement/at_block_placement.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/block_placement/at_block_placement.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 24/01/2024 (1.20.4)
-# Last modification: 09/05/2024 (1.20.6)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#block-placement
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#block-placement
+# ------------------------------------------------------------------------------------------------------------
# run the raycast at the entity eyes
execute at @s anchored eyes positioned ^ ^ ^ run function bs.raycast:run
diff --git a/datapacks/Bookshelf/data/bs.view/function/block_placement/with.mcfunction b/datapacks/Bookshelf/data/bs.view/function/block_placement/with.mcfunction
index 0878af70dd..b9bc0f59c5 100644
--- a/datapacks/Bookshelf/data/bs.view/function/block_placement/with.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/block_placement/with.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data raycast set value { \
blocks: true, \
entities: false, \
diff --git a/datapacks/Bookshelf/data/bs.view/function/can_see_ata/can_see_ata.mcfunction b/datapacks/Bookshelf/data/bs.view/function/can_see_ata/can_see_ata.mcfunction
index 2c5a00ea92..3a80b61b87 100644
--- a/datapacks/Bookshelf/data/bs.view/function/can_see_ata/can_see_ata.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/can_see_ata/can_see_ata.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.3
-# Created: ??/??/???? (1.13)
-# Last modification: 20/04/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#can-see-as-to-at
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#can-see-as-to-at
+# ------------------------------------------------------------------------------------------------------------
execute as B5-0-0-0-1 run function bs.view:can_see_ata/max_distance/at
execute store result score #view.can_see_ata.x2 bs.data run data get entity @s Pos[0] 1000
diff --git a/datapacks/Bookshelf/data/bs.view/function/can_see_ata/max_distance/at.mcfunction b/datapacks/Bookshelf/data/bs.view/function/can_see_ata/max_distance/at.mcfunction
index 0c0ecc0e09..cd5c35c467 100644
--- a/datapacks/Bookshelf/data/bs.view/function/can_see_ata/max_distance/at.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/can_see_ata/max_distance/at.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
tp @s ~ ~ ~ ~ ~
execute store result score #view.can_see_ata.x1 bs.data run data get entity @s Pos[0] 1000
execute store result score #view.can_see_ata.y1 bs.data run data get entity @s Pos[1] 1000
diff --git a/datapacks/Bookshelf/data/bs.view/function/can_see_ata/max_distance/compute.mcfunction b/datapacks/Bookshelf/data/bs.view/function/can_see_ata/max_distance/compute.mcfunction
index ca8eda0249..db0ff62dd5 100644
--- a/datapacks/Bookshelf/data/bs.view/function/can_see_ata/max_distance/compute.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/can_see_ata/max_distance/compute.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# compute Euclidean distance: sqrt(x^2+y^2+z^2)
# Thanks to Triton365 for sharing this trick on the Minecraft Commands discord
$data modify entity @s transformation set value [$(x)f,0f,0f,0f,$(y)f,0f,0f,0f,$(z)f,0f,0f,0f,0f,0f,0f,1f]
diff --git a/datapacks/Bookshelf/data/bs.view/function/can_see_ata/with.mcfunction b/datapacks/Bookshelf/data/bs.view/function/can_see_ata/with.mcfunction
index 820390d1d9..43a1907d74 100644
--- a/datapacks/Bookshelf/data/bs.view/function/can_see_ata/with.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/can_see_ata/with.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
data modify storage bs:data raycast set value { \
blocks: true, \
entities: false, \
diff --git a/datapacks/Bookshelf/data/bs.view/function/in_view_ata/angle.mcfunction b/datapacks/Bookshelf/data/bs.view/function/in_view_ata/angle.mcfunction
index d450784714..a3da142bde 100644
--- a/datapacks/Bookshelf/data/bs.view/function/in_view_ata/angle.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/in_view_ata/angle.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
execute store result entity @s Rotation[0] float -0.001 run data get storage bs:ctx _ 250
execute at @s positioned 0.0 0.0 0.0 rotated ~ 0.0 run tp @s ^ ^ ^10.0
execute store result storage bs:ctx x double .0002 run data get entity @s Pos[0] 1000
diff --git a/datapacks/Bookshelf/data/bs.view/function/in_view_ata/check.mcfunction b/datapacks/Bookshelf/data/bs.view/function/in_view_ata/check.mcfunction
index 4f1c52121e..4024a73059 100644
--- a/datapacks/Bookshelf/data/bs.view/function/in_view_ata/check.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/in_view_ata/check.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$return run execute if entity @s[distance=..$(x)]
diff --git a/datapacks/Bookshelf/data/bs.view/function/in_view_ata/in_view_ata.mcfunction b/datapacks/Bookshelf/data/bs.view/function/in_view_ata/in_view_ata.mcfunction
index d267233f9a..468184c697 100644
--- a/datapacks/Bookshelf/data/bs.view/function/in_view_ata/in_view_ata.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/in_view_ata/in_view_ata.mcfunction
@@ -1,19 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.2
-# Created: ??/??/???? (1.13)
-# Last modification: 20/04/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#in-view-as-to-at
-# Dependencies:
-# - bs.math
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#in-view-as-to-at
+# ------------------------------------------------------------------------------------------------------------
$data modify storage bs:ctx _ set value $(angle)
execute as B5-0-0-0-1 run function bs.view:in_view_ata/angle
diff --git a/datapacks/Bookshelf/data/bs.view/function/looked_entity/as_looked_entity.mcfunction b/datapacks/Bookshelf/data/bs.view/function/looked_entity/as_looked_entity.mcfunction
index 10bcc978b0..303b0cf310 100644
--- a/datapacks/Bookshelf/data/bs.view/function/looked_entity/as_looked_entity.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/looked_entity/as_looked_entity.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 06/12/2023 (1.20.3)
-# Last modification: 30/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#looked-entity
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#looked-entity
+# ------------------------------------------------------------------------------------------------------------
execute unless predicate bs.view:is_looking_at_entity run return fail
execute if entity @n[tag=bs.view.is_lookable,tag=!bs.view.bi,sort=arbitrary] run function bs.view:looked_entity/setup
diff --git a/datapacks/Bookshelf/data/bs.view/function/looked_entity/at_looked_entity.mcfunction b/datapacks/Bookshelf/data/bs.view/function/looked_entity/at_looked_entity.mcfunction
index abb21c9113..f0d5610ce6 100644
--- a/datapacks/Bookshelf/data/bs.view/function/looked_entity/at_looked_entity.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/looked_entity/at_looked_entity.mcfunction
@@ -1,18 +1,20 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#looked-entity
+# ------------------------------------------------------------------------------------------------------------
-# Authors: Aksiome
-# Contributors:
-
-# Version: 1.1
-# Created: 06/12/2023 (1.20.3)
-# Last modification: 30/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#looked-entity
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
execute unless predicate bs.view:is_looking_at_entity run return fail
execute if entity @n[tag=bs.view.is_lookable,tag=!bs.view.bi,sort=arbitrary] run function bs.view:looked_entity/setup
diff --git a/datapacks/Bookshelf/data/bs.view/function/looked_entity/setup.mcfunction b/datapacks/Bookshelf/data/bs.view/function/looked_entity/setup.mcfunction
index 3cd304ba19..67cec50431 100644
--- a/datapacks/Bookshelf/data/bs.view/function/looked_entity/setup.mcfunction
+++ b/datapacks/Bookshelf/data/bs.view/function/looked_entity/setup.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
tag @n[tag=bs.view.b0,sort=arbitrary,limit=255] remove bs.view.b0
tag @n[tag=bs.view.b1,sort=arbitrary,limit=255] remove bs.view.b1
tag @n[tag=bs.view.b2,sort=arbitrary,limit=255] remove bs.view.b2
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/as_aimed_entity.json b/datapacks/Bookshelf/data/bs.view/tags/function/as_aimed_entity.json
index ba25db5312..e9cb51bc17 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/as_aimed_entity.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/as_aimed_entity.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/30",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.view:aimed_entity/with",
"bs.view:aimed_entity/as_aimed_entity"
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/as_looked_entity.json b/datapacks/Bookshelf/data/bs.view/tags/function/as_looked_entity.json
index 25fd13b4c6..0bc5594940 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/as_looked_entity.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/as_looked_entity.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#looked-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/06",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.view:looked_entity/as_looked_entity"
]
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_block.json b/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_block.json
index b35cb6d660..65a4e57eae 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_block.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_block.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-block",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/30",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.view:aimed_block/with",
"bs.view:aimed_block/at_aimed_block"
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_entity.json b/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_entity.json
index 3efe6fbf2a..e622183dad 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_entity.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_entity.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/30",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.view:aimed_entity/with",
"bs.view:aimed_entity/at_aimed_entity"
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_point.json b/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_point.json
index 7dab268553..f5c9ff4f00 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_point.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/at_aimed_point.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-point",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/25",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.view:aimed_point/with",
"bs.view:aimed_point/at_aimed_point"
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/at_block_placement.json b/datapacks/Bookshelf/data/bs.view/tags/function/at_block_placement.json
index 883b8dd328..0009fd6e1f 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/at_block_placement.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/at_block_placement.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#block-placement",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/24",
+ "minecraft_version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/05/09",
+ "minecraft_version": "1.20.6"
+ }
+ },
"values": [
"bs.view:block_placement/with",
"bs.view:block_placement/at_block_placement"
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/at_looked_entity.json b/datapacks/Bookshelf/data/bs.view/tags/function/at_looked_entity.json
index d6964c8ae4..33624b87df 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/at_looked_entity.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/at_looked_entity.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#looked-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/06",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.view:looked_entity/at_looked_entity"
]
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/can_see_ata.json b/datapacks/Bookshelf/data/bs.view/tags/function/can_see_ata.json
index 25f7c2b6e0..1b2a5b1c24 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/can_see_ata.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/can_see_ata.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#can-see-as-to-at",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/05/20",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/04/20",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.view:can_see_ata/with",
"bs.view:can_see_ata/can_see_ata"
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/help.json b/datapacks/Bookshelf/data/bs.view/tags/function/help.json
index ad631d11f0..d671353308 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/22",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.view:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/in_view_ata.json b/datapacks/Bookshelf/data/bs.view/tags/function/in_view_ata.json
index 9ea2e269be..49b7b8ba40 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/in_view_ata.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/in_view_ata.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#in-view-as-to-at",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/05/20",
+ "minecraft_version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/04/20",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.view:in_view_ata/in_view_ata"
]
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/load.json b/datapacks/Bookshelf/data/bs.view/tags/function/load.json
index 1b9ed48375..86aee7eefb 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/22",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"#bs.raycast:load",
"bs.view:__load__"
diff --git a/datapacks/Bookshelf/data/bs.view/tags/function/unload.json b/datapacks/Bookshelf/data/bs.view/tags/function/unload.json
index 1d726d52eb..11e364caf8 100644
--- a/datapacks/Bookshelf/data/bs.view/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.view/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/22",
+ "minecraft_version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.view:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.weather/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.weather/.metadata/generated/features.json
new file mode 100644
index 0000000000..9af9391cde
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.weather/.metadata/generated/features.json
@@ -0,0 +1,47 @@
+[
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.weather/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.weather/.metadata/generated/module.json
new file mode 100644
index 0000000000..7f9c690455
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.weather/.metadata/generated/module.json
@@ -0,0 +1,14 @@
+{
+ "name": "bs.weather",
+ "display_name": "Weather",
+ "description": "Everything concerning the weather.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "features": [
+ "bs.weather:help",
+ "bs.weather:load",
+ "bs.weather:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.weather/.metadata/module.json b/datapacks/Bookshelf/data/bs.weather/.metadata/module.json
new file mode 100644
index 0000000000..f24d86c20f
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.weather/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.weather",
+ "display_name": "Weather",
+ "description": "Everything concerning the weather.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.weather/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.weather/function/__help__.mcfunction
index 010c614cbc..10e2a92ba5 100644
--- a/datapacks/Bookshelf/data/bs.weather/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.weather/function/__help__.mcfunction
@@ -1,6 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html
+# ------------------------------------------------------------------------------------------------------------
-# CODE ------------------------------------------------------------------------
tellraw @s [{"text": "[bs.weather documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.weather/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.weather/function/__load__.mcfunction
index c22814283e..51cfd30cf8 100644
--- a/datapacks/Bookshelf/data/bs.weather/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.weather/function/__load__.mcfunction
@@ -1,4 +1,16 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html
+# ------------------------------------------------------------------------------------------------------------
diff --git a/datapacks/Bookshelf/data/bs.weather/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.weather/function/__unload__.mcfunction
index c22814283e..51cfd30cf8 100644
--- a/datapacks/Bookshelf/data/bs.weather/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.weather/function/__unload__.mcfunction
@@ -1,4 +1,16 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html
+# ------------------------------------------------------------------------------------------------------------
diff --git a/datapacks/Bookshelf/data/bs.weather/tags/function/help.json b/datapacks/Bookshelf/data/bs.weather/tags/function/help.json
index ebaabc0684..eec063e86a 100644
--- a/datapacks/Bookshelf/data/bs.weather/tags/function/help.json
+++ b/datapacks/Bookshelf/data/bs.weather/tags/function/help.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.weather:__help__"
]
diff --git a/datapacks/Bookshelf/data/bs.weather/tags/function/load.json b/datapacks/Bookshelf/data/bs.weather/tags/function/load.json
index eea34c9637..07acd872b4 100644
--- a/datapacks/Bookshelf/data/bs.weather/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.weather/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.weather:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.weather/tags/function/unload.json b/datapacks/Bookshelf/data/bs.weather/tags/function/unload.json
index 0850039be3..39928d6a71 100644
--- a/datapacks/Bookshelf/data/bs.weather/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.weather/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.weather:__unload__"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/.metadata/generated/features.json b/datapacks/Bookshelf/data/bs.xp/.metadata/generated/features.json
new file mode 100644
index 0000000000..97e52d37a4
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.xp/.metadata/generated/features.json
@@ -0,0 +1,223 @@
+[
+ {
+ "name": "add_levels",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "add_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "add_progress",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/03/08",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_max_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "get_progress",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2024/03/08",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_remaining_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "get_total_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_levels",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "set_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "set_progress",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2024/03/08",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_total_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+]
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.xp/.metadata/generated/module.json b/datapacks/Bookshelf/data/bs.xp/.metadata/generated/module.json
new file mode 100644
index 0000000000..c4cfbbb876
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.xp/.metadata/generated/module.json
@@ -0,0 +1,26 @@
+{
+ "name": "bs.xp",
+ "display_name": "XP",
+ "description": "Efficiently manage the experience points and levels of players.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "features": [
+ "bs.xp:add_levels",
+ "bs.xp:add_points",
+ "bs.xp:add_progress",
+ "bs.xp:get_max_points",
+ "bs.xp:get_progress",
+ "bs.xp:get_remaining_points",
+ "bs.xp:get_total_points",
+ "bs.xp:help",
+ "bs.xp:load",
+ "bs.xp:set_levels",
+ "bs.xp:set_points",
+ "bs.xp:set_progress",
+ "bs.xp:set_total_points",
+ "bs.xp:unload"
+ ]
+}
\ No newline at end of file
diff --git a/datapacks/Bookshelf/data/bs.xp/.metadata/module.json b/datapacks/Bookshelf/data/bs.xp/.metadata/module.json
new file mode 100644
index 0000000000..7c39944c92
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.xp/.metadata/module.json
@@ -0,0 +1,6 @@
+{
+ "name": "bs.xp",
+ "display_name": "XP",
+ "description": "Efficiently manage the experience points and levels of players.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html"
+}
diff --git a/datapacks/Bookshelf/data/bs.xp/function/__help__.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/__help__.mcfunction
index c555ba967a..99a2baa6f5 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/__help__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/__help__.mcfunction
@@ -1,6 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html
+# ------------------------------------------------------------------------------------------------------------
tellraw @s [{"text": "[bs.xp documentation]", "color": "dark_aqua", "clickEvent": {"action": "open_url", "value": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html"}, "hoverEvent": {"action": "show_text", "contents": "Click to open URL"}}]
diff --git a/datapacks/Bookshelf/data/bs.xp/function/__load__.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/__load__.mcfunction
index dd38c9cfc8..242118fd20 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/__load__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/__load__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives add bs.out dummy [{"text":"BS ","color":"dark_gray"},{"text":"Output","color":"aqua"}]
scoreboard objectives add bs.data dummy [{"text":"BS ","color":"dark_gray"},{"text":"Data","color":"aqua"}]
diff --git a/datapacks/Bookshelf/data/bs.xp/function/__unload__.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/__unload__.mcfunction
index f9405e9a96..176f34c114 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/__unload__.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/__unload__.mcfunction
@@ -1,7 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html
+# ------------------------------------------------------------------------------------------------------------
scoreboard objectives remove bs.in
scoreboard objectives remove bs.out
diff --git a/datapacks/Bookshelf/data/bs.xp/function/add/levels.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/add/levels.mcfunction
index 989dbbb4e3..4c4a6adc1a 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/add/levels.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/add/levels.mcfunction
@@ -1,17 +1,17 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.18.2)
-# Last modification: 20/11/2023 (23w46a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
-
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove
+# ------------------------------------------------------------------------------------------------------------
$xp add @s $(levels) levels
diff --git a/datapacks/Bookshelf/data/bs.xp/function/add/points.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/add/points.mcfunction
index 53d77d7f82..b7c42e2eb5 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/add/points.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/add/points.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.18.2)
-# Last modification: 20/11/2023 (23w46a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove
+# ------------------------------------------------------------------------------------------------------------
$xp add @s $(points) points
diff --git a/datapacks/Bookshelf/data/bs.xp/function/add/progress/apply.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/add/progress/apply.mcfunction
index 51636bad26..7841cb6324 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/add/progress/apply.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/add/progress/apply.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$xp add @s $(x) points
diff --git a/datapacks/Bookshelf/data/bs.xp/function/add/progress/progress.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/add/progress/progress.mcfunction
index 5cda857b08..669826b568 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/add/progress/progress.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/add/progress/progress.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.18.2)
-# Last modification: 08/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove
+# ------------------------------------------------------------------------------------------------------------
# level 111111129 => max_points = 1000000002
$execute store result storage bs:ctx x int 1 store result score #xp.add_progress bs.data run data get storage bs:const xp.progress $(progress)
diff --git a/datapacks/Bookshelf/data/bs.xp/function/get/max_points/max_points.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/get/max_points/max_points.mcfunction
index e9db4f6303..6123bbc72e 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/get/max_points/max_points.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/get/max_points/max_points.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.18.2)
-# Last modification: 20/11/2023 (23w46a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get
+# ------------------------------------------------------------------------------------------------------------
execute store result score $xp.get_max_points bs.out run xp query @s levels
execute if score $xp.get_max_points bs.out matches 0..15 run return run function bs.xp:get/max_points/range_1
diff --git a/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_1.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_1.mcfunction
index e9350dcf1f..53a6bedd02 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_1.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_1.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# 2 Γ current_level + 7 (for levels 0β15)
scoreboard players operation $xp.get_max_points bs.out *= 2 bs.const
return run scoreboard players add $xp.get_max_points bs.out 7
diff --git a/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_2.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_2.mcfunction
index b7df3ee799..b455cc1e8c 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_2.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_2.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# 5 Γ current_level β 38 (for levels 16β30)
scoreboard players operation $xp.get_max_points bs.out *= 5 bs.const
return run scoreboard players remove $xp.get_max_points bs.out 38
diff --git a/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_3.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_3.mcfunction
index 4adf6b1b47..7c8f863033 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_3.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/get/max_points/range_3.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# 9 Γ current_level β 158 (for levels 31+)
scoreboard players operation $xp.get_max_points bs.out *= 9 bs.const
return run scoreboard players remove $xp.get_max_points bs.out 158
diff --git a/datapacks/Bookshelf/data/bs.xp/function/get/progress.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/get/progress.mcfunction
index b7afe0be39..31552d40a7 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/get/progress.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/get/progress.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.18.2)
-# Last modification: 08/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get
+# ------------------------------------------------------------------------------------------------------------
$execute store result score $xp.get_progress bs.out run return run data get entity @s XpP $(scale)
diff --git a/datapacks/Bookshelf/data/bs.xp/function/get/remaining_points.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/get/remaining_points.mcfunction
index 839f08f473..4139df6a23 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/get/remaining_points.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/get/remaining_points.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.18.2)
-# Last modification: 20/11/2023 (23w46a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get
+# ------------------------------------------------------------------------------------------------------------
execute store result score $xp.get_remaining_points bs.out run function #bs.xp:get_max_points
execute store result score #xp.get_remaining_points bs.data run xp query @s points
diff --git a/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_1.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_1.mcfunction
index 85404dd9e3..72b45cf1be 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_1.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_1.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# level^2 + 6 Γ level (at levels 0β16)
scoreboard players operation #xp.get_total_points.x bs.data *= 6 bs.const
scoreboard players operation #xp.get_total_points.x2 bs.data *= #xp.get_total_points.x2 bs.data
diff --git a/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_2.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_2.mcfunction
index aea99702bb..ae7d9986f2 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_2.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_2.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# 2.5 Γ level^2 β 40.5 Γ level + 360 (at levels 17β31)
# => 1/2 Γ (5 Γ level^2 - 81 Γ level) + 360
scoreboard players operation #xp.get_total_points.x bs.data *= 81 bs.const
diff --git a/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_3.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_3.mcfunction
index 95ecc72ae8..6957391251 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_3.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/get/total_points/range_3.mcfunction
@@ -1,3 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
# 4.5 Γ level^2 β 162.5 Γ level + 2220 (at levels 32+)
# => 1/2 Γ (9 Γ level^2 - 325 Γ level) + 2220
scoreboard players operation #xp.get_total_points.x bs.data *= 325 bs.const
diff --git a/datapacks/Bookshelf/data/bs.xp/function/get/total_points/total_points.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/get/total_points/total_points.mcfunction
index dfbb4d87ce..c29c274129 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/get/total_points/total_points.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/get/total_points/total_points.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.18.2)
-# Last modification: 20/11/2023 (23w46a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get
+# ------------------------------------------------------------------------------------------------------------
execute store result score $xp.get_total_points bs.out run xp query @s points
execute store result score #xp.get_total_points.x bs.data store result score #xp.get_total_points.x2 bs.data run xp query @s levels
diff --git a/datapacks/Bookshelf/data/bs.xp/function/set/levels.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/set/levels.mcfunction
index e8d8024414..4b92bce192 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/set/levels.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/set/levels.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.18.2)
-# Last modification: 20/11/2023 (23w46a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set
+# ------------------------------------------------------------------------------------------------------------
$xp set @s $(levels) levels
diff --git a/datapacks/Bookshelf/data/bs.xp/function/set/points.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/set/points.mcfunction
index 317524c98d..47e104f327 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/set/points.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/set/points.mcfunction
@@ -1,17 +1,18 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.18.2)
-# Last modification: 20/11/2023 (23w46a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set
+# ------------------------------------------------------------------------------------------------------------
$xp set @s $(points) points
diff --git a/datapacks/Bookshelf/data/bs.xp/function/set/progress/apply.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/set/progress/apply.mcfunction
index 7be8365b7f..96170d4727 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/set/progress/apply.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/set/progress/apply.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$xp set @s $(x) points
diff --git a/datapacks/Bookshelf/data/bs.xp/function/set/progress/progress.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/set/progress/progress.mcfunction
index 66c46d43b3..16d42fa90d 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/set/progress/progress.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/set/progress/progress.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.18.2)
-# Last modification: 08/03/2024 (1.20.4)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set
+# ------------------------------------------------------------------------------------------------------------
# level 111111129 => max_points = 1000000002
$execute store result storage bs:ctx x int 1 store result score #xp.set_progress bs.data run data get storage bs:const xp.progress $(progress)
diff --git a/datapacks/Bookshelf/data/bs.xp/function/set/total_points.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/set/total_points.mcfunction
index 78d3dae790..0f4b2cfa04 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/set/total_points.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/set/total_points.mcfunction
@@ -1,18 +1,19 @@
-# INFO ------------------------------------------------------------------------
-# Copyright Β© 2024 Gunivers Community.
-
-# Authors: Aksiome, Leirof
-# Contributors:
-
-# Version: 2.1
-# Created: ??/??/???? (1.18.2)
-# Last modification: 20/11/2023 (23w46a)
-
-# Documentation: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set
-# Dependencies:
-# Note:
-
-# CODE ------------------------------------------------------------------------
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature: https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set
+# ------------------------------------------------------------------------------------------------------------
xp set @s 0 points
xp set @s 0 levels
diff --git a/datapacks/Bookshelf/data/bs.xp/function/utils/restore_levels.mcfunction b/datapacks/Bookshelf/data/bs.xp/function/utils/restore_levels.mcfunction
index ecb1c1c1c9..d9a2ad82db 100644
--- a/datapacks/Bookshelf/data/bs.xp/function/utils/restore_levels.mcfunction
+++ b/datapacks/Bookshelf/data/bs.xp/function/utils/restore_levels.mcfunction
@@ -1 +1,16 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) 2024 Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
+
$xp set @s $(y) levels
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/add_levels.json b/datapacks/Bookshelf/data/bs.xp/tags/function/add_levels.json
index a91bf8b0a0..1524297b09 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/add_levels.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/add_levels.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "minecraft_version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "minecraft_version": "23w46a"
+ }
+ },
"values": [
"bs.xp:add/levels"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/add_points.json b/datapacks/Bookshelf/data/bs.xp/tags/function/add_points.json
index a90e0e2ad8..d2a94b7827 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/add_points.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/add_points.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "minecraft_version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "minecraft_version": "23w46a"
+ }
+ },
"values": [
"bs.xp:add/points"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/add_progress.json b/datapacks/Bookshelf/data/bs.xp/tags/function/add_progress.json
index 538175a400..0636eaec27 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/add_progress.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/add_progress.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/03/08",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.xp:add/progress/progress"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/get_max_points.json b/datapacks/Bookshelf/data/bs.xp/tags/function/get_max_points.json
index d9fe2f60f7..10c0c65c2c 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/get_max_points.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/get_max_points.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "minecraft_version": "23w46a"
+ }
+ },
"values": [
"bs.xp:get/max_points/max_points"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/get_progress.json b/datapacks/Bookshelf/data/bs.xp/tags/function/get_progress.json
index 5f735b7517..48bb30424a 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/get_progress.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/get_progress.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "minecraft_version": "1.18.2"
+ },
+ "updated": {
+ "date": "2024/03/08",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.xp:get/progress"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/get_remaining_points.json b/datapacks/Bookshelf/data/bs.xp/tags/function/get_remaining_points.json
index 1b90c538c5..c12dd119e4 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/get_remaining_points.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/get_remaining_points.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "minecraft_version": "23w46a"
+ }
+ },
"values": [
"bs.xp:get/remaining_points"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/get_total_points.json b/datapacks/Bookshelf/data/bs.xp/tags/function/get_total_points.json
index c2333bce8c..ea3e3020dd 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/get_total_points.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/get_total_points.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "minecraft_version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "minecraft_version": "23w46a"
+ }
+ },
"values": [
"bs.xp:get/total_points/total_points"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/help.json b/datapacks/Bookshelf/data/bs.xp/tags/function/help.json
new file mode 100644
index 0000000000..3e43675b12
--- /dev/null
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/help.json
@@ -0,0 +1,20 @@
+{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
+ "values": [
+ "bs.xp:__help__"
+ ]
+}
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/load.json b/datapacks/Bookshelf/data/bs.xp/tags/function/load.json
index 197f65e2e5..4a6985c6b3 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/load.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/load.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.xp:__load__"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/set_levels.json b/datapacks/Bookshelf/data/bs.xp/tags/function/set_levels.json
index 93c8b6350e..e2af7e6096 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/set_levels.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/set_levels.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "minecraft_version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "minecraft_version": "23w46a"
+ }
+ },
"values": [
"bs.xp:set/levels"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/set_points.json b/datapacks/Bookshelf/data/bs.xp/tags/function/set_points.json
index 32962636bc..efdd376fbc 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/set_points.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/set_points.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "minecraft_version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "minecraft_version": "23w46a"
+ }
+ },
"values": [
"bs.xp:set/points"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/set_progress.json b/datapacks/Bookshelf/data/bs.xp/tags/function/set_progress.json
index b78dd9e11e..726e1376a0 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/set_progress.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/set_progress.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "minecraft_version": "1.18.2"
+ },
+ "updated": {
+ "date": "2024/03/08",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.xp:set/progress/progress"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/set_total_points.json b/datapacks/Bookshelf/data/bs.xp/tags/function/set_total_points.json
index 4ec669300e..31ba787b2f 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/set_total_points.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/set_total_points.json
@@ -1,4 +1,20 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "minecraft_version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "minecraft_version": "23w46a"
+ }
+ },
"values": [
"bs.xp:set/total_points"
]
diff --git a/datapacks/Bookshelf/data/bs.xp/tags/function/unload.json b/datapacks/Bookshelf/data/bs.xp/tags/function/unload.json
index 47528ef2dc..ee13aeae30 100644
--- a/datapacks/Bookshelf/data/bs.xp/tags/function/unload.json
+++ b/datapacks/Bookshelf/data/bs.xp/tags/function/unload.json
@@ -1,4 +1,19 @@
{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "minecraft_version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "minecraft_version": "1.20.4"
+ }
+ },
"values": [
"bs.xp:__unload__"
]
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 615e9cffb2..5ab9d38f27 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -1,5 +1,27 @@
# π οΈ Changelog
+## π¦ Bookshelf - 2.1.0
+
+## π Fixes
+- ([211](https://github.com/Gunivers/Bookshelf/pull/211)) Add missing help function tag in `bs.link`.
+- ([211](https://github.com/Gunivers/Bookshelf/pull/211)) Add missing help function tag in `bs.vector`.
+- ([211](https://github.com/Gunivers/Bookshelf/pull/211)) Add missing help function tag in `bs.xp`.
+
+### π Documentation
+- ([206](https://github.com/Gunivers/Bookshelf/issues/206)) Add new related datapacks and mods.
+- ([208](https://github.com/Gunivers/Bookshelf/issues/208)) Add missing documentation for documentation for feature `bs.position:get_pos_and_rot`.
+- ([208](https://github.com/Gunivers/Bookshelf/issues/208)) Add missing documentation for documentation for feature `bs.position:set_pos_and_rot`.
+- ([208](https://github.com/Gunivers/Bookshelf/issues/208)) Add missing documentation for documentation for feature `bs.position:add_pos_and_rot`.
+
+### π Conventions
+- ([#200](https://github.com/Gunivers/Bookshelf/issues/200)) We throw away the old feature function header to a new one with only the licence. This header is now mandatory for all functions. All the metadata that was present inside the old one have been moved to the feature function tag.
+- ([#52](https://github.com/Gunivers/Bookshelf/issues/52), [#175](https://github.com/Gunivers/Bookshelf/issues/175)) Each module has now its own metadata that should be specified manually. The metadata of the features and modules are used to generate more metadata, including the dependencies. These metadata can be used by bots like the incomming Bookshelf Manager. More information [here](project:contribute/metadata.md).
+
+### βοΈ Github and CI
+- Added a template for pull requests.
+- Added templates for issues.
+- ([#199](https://github.com/Gunivers/Bookshelf/pull/199)) The different metadata (the manually specified one and the generated one) are now automatically verified at each commit inside a pull request. This prevents them from being forgotten. More information [here](project:contribute/contribution-validation.md).
+
## π¦ Bookshelf - 2.0.0
```{admonition} Breaking changes
diff --git a/docs/_templates/mods-and-datapacks.md b/docs/_templates/mods-and-datapacks.md
new file mode 100644
index 0000000000..8e5dcae10b
--- /dev/null
+++ b/docs/_templates/mods-and-datapacks.md
@@ -0,0 +1,52 @@
+::::{grid} 2
+
+:::{grid-item-card} π‘ Better Suggestion
+:link: https://modrinth.com/mod/nbt-autocomplete
+:margin: 0 3 0 0
+
+Makes Minecraft command suggestions more useful.
+:::
+
+:::{grid-item-card} π₯ Carpet
+:link: https://modrinth.com/mod/carpet
+:margin: 0 3 0 0
+
+Carpet is a mod for vanilla Minecraft that allows you to take full control of what matters from a technical perspective of the game.
+:::
+
+:::{grid-item-card} π Language Reload
+:link: https://modrinth.com/mod/language-reload
+:margin: 0 3 0 0
+
+Language Reload is a Fabric mod that adds quality of life changes related to languages. Useful for resource pack makers.
+:::
+
+:::{grid-item-card} π¬ More Chat History
+:link: https://modrinth.com/mod/morechathistory
+:margin: 0 3 0 0
+
+Increases the maximum length of chat history.
+:::
+
+:::{grid-item-card} π NBT Autocomplete
+:link: https://modrinth.com/mod/nbt-autocomplete
+:margin: 0 3 0 0
+
+NBT Autocomplete is a client-side mod adding suggestions for NBT tags in commands.
+:::
+
+:::{grid-item-card} π Performance Tool
+:link: https://github.com/SnaveSutit/mcworld-performance-dp
+:margin: 0 3 0 0
+
+This is a datapack to mesure performance of other datapacks or commands directly in game.
+:::
+
+:::{grid-item-card} π§ Suggestion Tweaker
+:link: https://modrinth.com/mod/suggestion-tweaker
+:margin: 0 3 0 0
+
+A mod that improves the way suggestions are filtered and sorted when writing a command.
+:::
+
+::::
diff --git a/docs/_templates/related-libraries.md b/docs/_templates/related-libraries.md
index 018fca6d01..0010208748 100644
--- a/docs/_templates/related-libraries.md
+++ b/docs/_templates/related-libraries.md
@@ -70,6 +70,13 @@ Detect when a player opens (almost) any GUI!
Iris is a utility datapack designed to determine what block or entity a player is looking at, with micrometric precision and taking into account individual block geometries.
:::
+:::{grid-item-card} π’ Large Number
+:link: https://github.com/kaer-3058/large_number
+:margin: 0 3 0 0
+
+Datapack providing functionalities for handling large numbers, trigonometric functions, and various mathematical operations.
+:::
+
:::{grid-item-card} β‘οΈ MCF Raycast Raymarch
:link: https://github.com/Neylz/MCF_Raycast-Raymarch
:margin: 0 3 0 0
@@ -84,6 +91,13 @@ Usage of raymarching to optimize mcfunction raycasts.
Moxlib aims to make Datapack creation fun and enjoyable. This is a multi-purpose datapack.
:::
+:::{grid-item-card} π’ Minecraft Floating Point Arithmetic
+:link: https://github.com/gibbsly/gm
+:margin: 0 3 0 0
+
+A basic utility pack to do math with floats and/or doubles.
+:::
+
:::{grid-item-card} π₯ Minecraft Ray Collision Detector
:link: https://github.com/K-bai/Minecraft-Ray-Collision-Detector
:margin: 0 3 0 0
diff --git a/docs/_templates/tools.md b/docs/_templates/tools.md
index 84efb31945..5e531d572c 100644
--- a/docs/_templates/tools.md
+++ b/docs/_templates/tools.md
@@ -35,11 +35,4 @@ The Misode's website proposes many tools to generate aspects of the map making s
VSCode extension to view Minecraft NBT files. For structure files, this shows a 3D block view.
:::
-:::{grid-item-card} π Performance Tool
-:link: https://github.com/SnaveSutit/mcworld-performance-dp
-:margin: 0 3 0 0
-
-This is a datapack to mesure performance of other datapacks or commands directly in game.
-:::
-
::::
diff --git a/docs/conf.py b/docs/conf.py
index 961dce3903..45e5ee5918 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -94,7 +94,7 @@
# {"name": "Download", "url": "https://glib.gunivers.net/", "icon": "fa-solid fa-download"},
{"name": "GitHub", "url": "https://github.com/Gunivers/Bookshelf", "icon": "fa-brands fa-github"},
{"name": "Support us", "url": "https://www.helloasso.com/associations/altearn/formulaires/3/en", "icon": "fa-solid fa-heart"},
- {"name": "Discord server", "url": "https://discord.gg/E8qq6tN", "icon": "fa-brands fa-discord"},
+ {"name": "Discord server", "url": "https://discord.gg/MkXytNjmBt", "icon": "fa-brands fa-discord"},
{"name": "Gunivers", "url": "https://gunivers.net", "icon": "_static/logo-gunivers.png", "type": "local"},
],
}
diff --git a/docs/contribute/contribution-validation.md b/docs/contribute/contribution-validation.md
new file mode 100644
index 0000000000..6ca87c7647
--- /dev/null
+++ b/docs/contribute/contribution-validation.md
@@ -0,0 +1,32 @@
+# β
Contribution validation
+
+A Bookshelf contribution often requires some additional modifications other than the code itself.
+To ensure the different modifications are correctly contributed, we have set up different validation steps.
+
+## βοΈ Automatic validation
+
+First, we have defined some scripts that are automatically executed when proposing a pull request (and after each commit inside the pull request).
+These scripts verify:
+- If the metadata of the features, modules, and datapacks are defined and up to date (see [metadata page](project:metadata.md)).
+- If there is no regression in the code, by executing the different unit tests (see [debug page](project:debug.md#-unit-tests)).
+
+A Bookshelf contributor can also manually and locally execute these checks using the `all.ipynb` notebook in the `scripts` folder (requires Python, see `scripts/pyproject.toml` file).
+
+Some checks about the metadata can fail because the specified metadata are not up to date.
+Indeed, some module/feature metadata such as the dependencies are computed, and the Bookshelf contributor needs to manually run the generators to enable their computation.
+These generators are available in the `scripts/all.ipynb` notebook and are not executed by the CI/CD.
+
+## π Pull request template
+
+When a Bookshelf contributor opens a pull request on the Bookshelf repository, the message of the pull request is filled with a checklist.
+This checklist helps the Bookshelf contributor to ensure that they have not forgotten any changes we cannot automatically verify, such as the modification of the changelog file.
+Here is a non-exhaustive list of what a feature contribution requires:
+- Update the changelog with the content of the contribution and the ID of the pull request.
+- Document the new features in the documentation and update the documentation for existing features (if needed).
+- Provide some unit tests if possible.
+- Link the pull request to an existing issue.
+
+## π Manual review
+
+Finally, other Bookshelf contributors manually review the pull request before approving it.
+
diff --git a/docs/contribute/definitions.md b/docs/contribute/definitions.md
index 7ec131a784..2faefa38e0 100644
--- a/docs/contribute/definitions.md
+++ b/docs/contribute/definitions.md
@@ -7,5 +7,7 @@ html_theme.sidebar_secondary.remove: true
In order to speak with the same vocabulary, here is some words that have a specific meaning in this project:
- **Module**: a group of features that share a common purpose and that are contained in a namespace (i.e. datapack structures)
-- **Feature**: something designed for the final user in order to allow him to perform a task. A feature can be a function, a loot_table, a structure, a predicate or whatever.
-- **Brigadier**: This is the command completer and highlighter of Minecraft that you can see when you enter a command in the chat. We define it here because most of people doesn't know that this system have a name.
\ No newline at end of file
+- **Feature**: something designed for the final user in order to allow him to perform a task. Most of the time, a feature is a function tag to call instead of the function. This enable, among other things, filtering the `/function` completion by proposing only the features. A feature can also be a loot_table, a structure, a predicate or whatever.
+- **Brigadier**: This is the command completer and highlighter of Minecraft that you can see when you enter a command in the chat. We define it here because most of people doesn't know that this system have a name.
+- **Data pack developer**: A person who develops a datapack (using Bookshelf or not).
+- **Bookshelf contributor**: A person contributing to the development of Bookshelf, through pull request for instance.
diff --git a/docs/contribute/file-format.md b/docs/contribute/file-format.md
index b3f1363f72..03fd6cb6e7 100644
--- a/docs/contribute/file-format.md
+++ b/docs/contribute/file-format.md
@@ -4,36 +4,48 @@ html_theme.sidebar_secondary.remove: true
# π File format
-Each feature of Bookshelf implements documentation to
-provide additional information to developers and users. It must respect the following format:
+Each function of Bookshelf should have a header to indicate the license.
+The header may also specified the link to the feature documentation (not mandatory).
+Header to put at the beggining of each function:
+```
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+#
+# Documentation of the feature:
+# ------------------------------------------------------------------------------------------------------------
```
-# INFO ------------------------------------------------------------------------
-# Copyright Β© Gunivers Community.
-
-# Authors: <, , ...>
-# Contributors: <, , ...>
-
-# Version:
-# Created: // ()
-# Last modification: // ()
-# Documentation:
-# Dependencies : <, , ...>
-# Note:
+The `` placeholder must be fill by the current year and the `` placeholder by the link to the documentation of this specific feature.
-# CODE ------------------------------------------------------------------------
+If the documentation is not specified, the header looks like:
+```
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+# ------------------------------------------------------------------------------------------------------------
```
-We can find various information about the function itself (the example is not exhaustive), of which the following is a complete list:
-
-| Field | Description |
-|-------|-------------|
-| Authors | The list of authors of the function. |
-| Contributors | The list of contributors to the function. A contributor is someone who helps to create the function without developing it (the one who gives a track to realize the function or the one who fixes a bug for example). |
-| Version | Version version of the system, composed by 2 numbers: major version and minor version (`major.minor`). Minor is a change in a part of the code while major is a function overhaul.` |
-| Created | Date and minecraft version in which the system was originally created (for history purpose) |
-| Last modification | Date and minecraft version in which the system was modified for the last time |
-| Documentation | Link to the documentation of the function |
-| Dependencies | List of the dependencies |
-| Note | Allows you to provide additional information about the function such as a description of what the function does, how to use it if the use is particular, the behaviors of the function or the side effects of its use. |
+If a Bookshelf contributor forgot to put a header at the beggining of a function, the CI/CD pipeline will reject the merge of the contribution in Bookshelf.
+To be sure the code meets the minimal requirements, see the [contribution validation page](project:contribution-validation.md).
diff --git a/docs/contribute/index.md b/docs/contribute/index.md
index 157f8711b8..72fab98ed0 100644
--- a/docs/contribute/index.md
+++ b/docs/contribute/index.md
@@ -30,6 +30,8 @@ tree-structure
nomenclature
shared-data
file-format
+metadata
+contribution-validation
````
````{toctree}
diff --git a/docs/contribute/metadata.md b/docs/contribute/metadata.md
new file mode 100644
index 0000000000..46021d708c
--- /dev/null
+++ b/docs/contribute/metadata.md
@@ -0,0 +1,114 @@
+---
+html_theme.sidebar_secondary.remove: true
+---
+
+# π Metadata
+
+To facilitate the work of bots such as the incoming Bookshelf Manager, each feature, module, and data pack should declare some metadata.
+The Bookshelf contributor should specify some of them manually.
+These metadata are then used to produce more complete metadata files that a bot can consume.
+To generate the full metadata, the Bookshelf contributor must execute the metadata generators in the `scripts/all.ipynb` notebook (requires Python, see the `scripts/pyproject.toml` file).
+All metadata are verified by the CI/CD pipeline (see the [contribution validation page](project:../contribute/contribution-validation.md)).
+
+## β Feature metadata
+
+The feature metadata are directly placed on the function tag of the feature:
+
+```json
+{
+ "__bookshelf__": {
+ "feature": true,
+ "documentation": "",
+ "authors": [
+ ""
+ ],
+ "contributors": [
+ ""
+ ],
+ "created": {
+ "date": "",
+ "minecraft_version": ""
+ },
+ "updated": {
+ "date": "",
+ "minecraft_version": ""
+ }
+ },
+ "values": [
+ ...
+ ]
+}
+```
+
+| Field | Description | Mandatory |
+|-------|-------------|---------- |
+| feature | Indicate if the current function tag is the end point of a feature or not. | yes |
+| documentation | The link to the documentation of the feature. | yes |
+| authors | The list of authors of the feature. Cannot be empty. | yes |
+| contributors | The list of contributors to the feature. A contributor is someone who helps to create the function without developing it (the one who gives a track to realize the function or the one who fixes a bug for example). Cannot be empty. | no |
+| created | Date and minecraft version in which the system was originally created (for history purpose) | yes |
+| updated | Date and minecraft version in which the system was modified for the last time | yes |
+
+The generated metadata are placed in `/data/.metadata/generated/features.json`.
+
+## 𧩠Module metadata
+
+The module metadata are specified in `/data/.metadata/module.json` (see [tree structure page](project:../contribute/tree-structure.md)).
+Here is the format:
+
+```json
+{
+ "name": "",
+ "display_name": "",
+ "description": "",
+ "documentation": "",
+ "icon": "",
+ "authors": [
+ ""
+ ],
+ "contributors": [
+ ""
+ ],
+ "weak_dependencies": [
+ ""
+ ]
+}
+```
+
+| Field | Description | Mandatory |
+|-------|-------------|---------- |
+| name | The name of the module. Format: `bs.foo`. | yes |
+| display_name | The display name of the module. For instance: `Foo`. | yes |
+| description | A description for the module. | yes |
+| documentation | The link to the documentation of the module. | yes |
+| icon | The name of the module icon image. Should be placed on the same folder than the `metadata` file. | no (but trigger warnings) |
+| authors | The list of authors of the module. Cannot be empty. The authors are automatically computed from the features, this field allows defining authors that are not indicated inside the features. | no |
+| contributors | The list of contributors to the feature. A contributor is someone who helps to create the function without developing it (the one who gives a track to realize the function or the one who fixes a bug for example). The contributors are automatically computed from the features, this field allows defining contributors that are not indicated inside the features. | no |
+| weak dependencies | List of the feature weak dependencies. A weak dependency is a dependency module that is not essential to the functioning of the feature. For instance, `bs.log`. | no |
+
+The generated metadata are placed in `/data/.metadata/generated/module.json`.
+
+# π¦ Datapack metadata
+
+The datapack metadata are the `pack.mcmeta` file:
+
+```json
+{
+ "pack": {
+ "pack_format": 41,
+ "description": "Bookshelf - Library designed for mapmakers"
+ }
+}
+
+```
+
+| Field | Description | Mandatory |
+|-------|-------------|---------- |
+| pack_format | See the [Minecraft wiki](https://minecraft.wiki/w/Pack_format). | yes |
+| description | A description for the datapack. | yes |
+
+
+# π Manifest
+
+The manifest is the file containing the metadata of all datapacks, modules, and features of Bookshelf.
+This manifest is automatically generated and it is located at `generated/manifest.json`.
diff --git a/docs/contribute/tree-structure.md b/docs/contribute/tree-structure.md
index bb9c0a9354..2706b6baec 100644
--- a/docs/contribute/tree-structure.md
+++ b/docs/contribute/tree-structure.md
@@ -8,17 +8,21 @@ Bookshelf respects a certain tree structure which can be similar to the Java pac
- Each module should be responsible for loading and unloading itself. This means that each module must redefine objectives, constants, and everything else that is needed.
+- Each module should declare a metadata file, as detailled in the [metadata page](project:metadata.md).
+
- Each feature function should have its own function tag.
-- Each module should have a help function tag and load function tag (responsible for loading the module and its dependencies).
+- Each module should have a help function tag, a load function tag (responsible for loading the module and its dependencies) and an unload function tag.
- A feature is equal to a unique utility, so we should not hesitate to decompose its features in order to make it more readable and to promote reusability.
-In addition to these few constraints, the contributor is free to organise their files as they wishes as long as it remains coherent, understandable and it respects the global structure detailed below:
+In addition to these few constraints, the Bookshelf contributor is free to organise their files as they wishes as long as it remains coherent, understandable and it respects the global structure detailed below:
```
πdata
ββ π
+ | ββ π .metadata
+ | | ββ π metadata.json
β ββ π functions
β β ββ π
β β β ββ π .mcfunction
diff --git a/docs/faq.md b/docs/faq.md
index d569fc8829..b859930e81 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -30,7 +30,7 @@ Bookshelf prioritizes accessibility and versatility. While this may occasionally
Bookshelf is licensed to allow you to use and modify it for personal use and distribute maps or datapacks that use Bookshelf without any issues, as long as you share any modification made to the original source code. For that, we chose the [MPL 2.0](https://github.com/Gunivers/Bookshelf/blob/master/LICENSE) (Mozila Public License 2.0).
-```{button-link} https://discord.gg/E8qq6tN
+```{button-link} https://discord.gg/MkXytNjmBt
:color: primary
:shadow:
:align: center
diff --git a/docs/index.md b/docs/index.md
index 8fda246707..a6a9c59728 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -75,7 +75,7 @@ While we strive to keep these modules as much optimized and accurate as possible
## π€ Contribution
-If you have any doubts related to the project or want to discuss something, then join [our Discord](https://discord.gg/E8qq6tN) server.
+If you have any doubts related to the project or want to discuss something, then join [our Discord](https://discord.gg/MkXytNjmBt) server.
If you want to contribute, please refer to the [contribution docs](https://bookshelf.docs.gunivers.net/en/latest/contribute/index.html) for more information.
diff --git a/docs/modules/move.md b/docs/modules/move.md
index c3c7fbd709..973ec75f86 100644
--- a/docs/modules/move.md
+++ b/docs/modules/move.md
@@ -248,7 +248,7 @@ execute if score $move.hit_face bs.data matches 0..1 store result score $move.ve
execute if score $move.hit_face bs.data matches 2..3 store result score $move.vel_remaining.z bs.data run scoreboard players set @s bs.vel.z 0
```
-To simplify the creation of these behaviors, there's no need to handle a local velocity directly. The vector is automatically converted before and after the collision resolution. If you need help with custom collisions, you can ask us on our [discord server](https://discord.gg/E8qq6tN)!
+To simplify the creation of these behaviors, there's no need to handle a local velocity directly. The vector is automatically converted before and after the collision resolution. If you need help with custom collisions, you can ask us on our [discord server](https://discord.gg/MkXytNjmBt)!
---
diff --git a/docs/modules/position.md b/docs/modules/position.md
index cc1ce182d6..4a53573600 100644
--- a/docs/modules/position.md
+++ b/docs/modules/position.md
@@ -23,7 +23,7 @@ You can find below all functions available in this module.
---
-### Add position
+### Add position and rotation
:::::{tab-set}
::::{tab-item} x,y,z
@@ -146,15 +146,6 @@ scoreboard players set @s bs.pos.z 65
function #bs.position:add_pos_z {scale:1}
```
::::
-:::::
-
-> **Credits**: Aksiome, Leirof
-
----
-
-### Add rotation
-
-:::::{tab-set}
::::{tab-item} h,v
```{function} #bs.position:add_rot {scale:}
@@ -222,10 +213,37 @@ Rotate an entity according to its vertical rotation score.
```
::::
+::::{tab-item} x,y,z,h,v
+
+```{function} #bs.position:add_pos_and_rot {scale:}
+
+Add position scores to the entity's coordinates and rotate it according to its rotation score.
+
+:Inputs:
+ **Execution `as `**: Entity to teleport and rotate.
+
+ **Scores `@s bs.pos.[x,y,z]`**: Coordinates to add.
+
+ **Scores `@s bs.rot.[h,v]`**: Rotation to add.
+
+ **Function macro**:
+ :::{treeview}
+ - {nbt}`compound` Arguments
+ - {nbt}`number` **scale**: Scalar applied to the output.
+ :::
+
+:Outputs:
+ **State**: Entity is teleported at the position indicated by the position scores, and rotated according to the rotation scores.
+```
+
+::::
+
:::::
+
> **Credits**: Aksiome, Leirof
+
---
### Canonical to local
@@ -338,7 +356,7 @@ Scores in Minecraft have a limited size similar to a signed integer variable. Th
---
-### Get position
+### Get position and rotation
:::::{tab-set}
::::{tab-item} x,y,z
@@ -469,25 +487,16 @@ tellraw @a [{"text": "Z = ", "color": "dark_gray"},{"score":{"name":"@e[type=spi
```
::::
-:::::
-
-> **Credits**: Aksiome, Leirof
-
----
-
-### Get relative
-
-:::::{tab-set}
-::::{tab-item} As to at
+::::{tab-item} h,v
-```{function} #bs.position:get_relative_ata {scale:}
+```{function} #bs.position:get_rot {scale:}
-Get the execution position of the function relatively to the position of the executing entity.
+Get the execution rotation of the function and store it in 2 scores.
:Inputs:
- **Execution `as `**: Entity considered at the reference point.
+ **Execution `as `**: Entity to store the score to.
- **Execution `at ` or `positioned `**: Position te get the relative position from.
+ **Execution `at ` or `rotated `**: Rotation to get.
**Function macro**:
:::{treeview}
@@ -496,130 +505,154 @@ Get the execution position of the function relatively to the position of the exe
:::
:Outputs:
- **Scores `@s bs.pos.[x,y,z]`**: Relative coordinates.
-```
-
-*Get your position relative to the nearest Creeper (without scaling):*
-
-```mcfunction
-# Once
-execute as @s at @e[type=creeper,limit=1,sort=nearest] run function #bs.position:get_relative_ata {scale:1}
-
-# See the result
-tellraw @a [{"text": "Relative position : X=", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.pos.x"}, "color": "gold"},{"text":", Y=", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.pos.y"},"color":"gold"},{"text":", Z=","color":"dark_gray"},{"score":{"name":"@s","objective":"bs.pos.z"},"color":"gold"}]
+ **Scores `@s bs.rot.[h,v]`**: Rotation of the position.
```
::::
-::::{tab-item} From direction
+::::{tab-item} h only
-```{function} #bs.position:get_relative_from_dir {scale:}
+```{function} #bs.position:get_rot_h {scale:}
-Get a direction vector based on the execution position and rotation. Scale is used as the norm/length.
+Get the execution horizontal rotation of the function.
:Inputs:
**Execution `as `**: Entity to store the score to.
- **Execution `at ` or `positioned rotated `**: Position and rotation to get the relative position from.
+ **Execution `at ` or `rotated `**: Rotation to get.
**Function macro**:
:::{treeview}
- {nbt}`compound` Arguments
- - {nbt}`number` **scale**: Scalar for the function's outputs.
+ - {nbt}`number` **scale**: Scalar for the function's output.
:::
:Outputs:
- **Scores `@s bs.pos.[x,y,z]`**: Relative coordinates.
+ **Score `@s bs.rot.h`**: Horizontal rotation of the position.
```
-*Get your position relative to the position that is 2 blocks in front of you (scaled by 1000):*
+::::
+::::{tab-item} v only
-```mcfunction
-# Once
-execute at @s run function #bs.position:get_relative_from_dir {scale:2000}
+```{function} #bs.position:get_rot_v {scale:}
-# See the result
-tellraw @a [{"text": "Relative position : X=", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.pos.x"}, "color": "gold"},{"text":", Y=", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.pos.y"},"color":"gold"},{"text":", Z=","color":"dark_gray"},{"score":{"name":"@s","objective":"bs.pos.z"},"color":"gold"}]
-```
+Get the execution vertical rotation of the function.
-::::
-:::::
+:Inputs:
+ **Execution `as `**: Entity to store the score to.
-> **Credits**: Aksiome, Leirof
+ **Execution `at ` or `rotated `**: Rotation to get.
----
+ **Function macro**:
+ :::{treeview}
+ - {nbt}`compound` Arguments
+ - {nbt}`number` **scale**: Scalar for the function's output.
+ :::
-### Get rotation
+:Outputs:
+ **Score `@s bs.rot.v`**: Vertical rotation of the position.
+```
-:::::{tab-set}
-::::{tab-item} h,v
+::::
+::::{tab-item} x,y,z,h,v
-```{function} #bs.position:get_rot {scale:}
+```{function} #bs.position:get_pos_and_rot {scale:}
-Get the execution rotation of the function and store it in 2 scores.
+Get the execution position and rotation of the function and store the coordinates and rotation in 5 scores.
:Inputs:
**Execution `as `**: Entity to store the score to.
- **Execution `at ` or `rotated `**: Rotation to get.
+ **Execution `at ` or `positioned rotated `**: Position and rotation to get.
**Function macro**:
:::{treeview}
- {nbt}`compound` Arguments
- - {nbt}`number` **scale**: Scalar for the function's outputs.
+ - {nbt}`number` **scale**: Scalar for the function's output.
:::
:Outputs:
+ **Scores `@s bs.pos.[x,y,z]`**: Coordinates of the position.
+
**Scores `@s bs.rot.[h,v]`**: Rotation of the position.
```
::::
-::::{tab-item} h only
+:::::
-```{function} #bs.position:get_rot_h {scale:}
+> **Credits**: Aksiome, Leirof, theogiraudet
-Get the execution horizontal rotation of the function.
+---
+
+### Get relative
+
+:::::{tab-set}
+::::{tab-item} As to at
+
+```{function} #bs.position:get_relative_ata {scale:}
+
+Get the execution position of the function relatively to the position of the executing entity.
:Inputs:
- **Execution `as `**: Entity to store the score to.
+ **Execution `as `**: Entity considered at the reference point.
- **Execution `at ` or `rotated `**: Rotation to get.
+ **Execution `at ` or `positioned `**: Position te get the relative position from.
**Function macro**:
:::{treeview}
- {nbt}`compound` Arguments
- - {nbt}`number` **scale**: Scalar for the function's output.
+ - {nbt}`number` **scale**: Scalar for the function's outputs.
:::
:Outputs:
- **Score `@s bs.rot.h`**: Horizontal rotation of the position.
+ **Scores `@s bs.pos.[x,y,z]`**: Relative coordinates.
+```
+
+*Get your position relative to the nearest Creeper (without scaling):*
+
+```mcfunction
+# Once
+execute as @s at @e[type=creeper,limit=1,sort=nearest] run function #bs.position:get_relative_ata {scale:1}
+
+# See the result
+tellraw @a [{"text": "Relative position : X=", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.pos.x"}, "color": "gold"},{"text":", Y=", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.pos.y"},"color":"gold"},{"text":", Z=","color":"dark_gray"},{"score":{"name":"@s","objective":"bs.pos.z"},"color":"gold"}]
```
::::
-::::{tab-item} v only
+::::{tab-item} From direction
-```{function} #bs.position:get_rot_v {scale:}
+```{function} #bs.position:get_relative_from_dir {scale:}
-Get the execution vertical rotation of the function.
+Get a direction vector based on the execution position and rotation. Scale is used as the norm/length.
:Inputs:
**Execution `as `**: Entity to store the score to.
- **Execution `at ` or `rotated `**: Rotation to get.
+ **Execution `at ` or `positioned rotated `**: Position and rotation to get the relative position from.
**Function macro**:
:::{treeview}
- {nbt}`compound` Arguments
- - {nbt}`number` **scale**: Scalar for the function's output.
+ - {nbt}`number` **scale**: Scalar for the function's outputs.
:::
:Outputs:
- **Score `@s bs.rot.v`**: Vertical rotation of the position.
+ **Scores `@s bs.pos.[x,y,z]`**: Relative coordinates.
+```
+
+*Get your position relative to the position that is 2 blocks in front of you (scaled by 1000):*
+
+```mcfunction
+# Once
+execute at @s run function #bs.position:get_relative_from_dir {scale:2000}
+
+# See the result
+tellraw @a [{"text": "Relative position : X=", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.pos.x"}, "color": "gold"},{"text":", Y=", "color": "dark_gray"},{"score":{"name":"@s", "objective": "bs.pos.y"},"color":"gold"},{"text":", Z=","color":"dark_gray"},{"score":{"name":"@s","objective":"bs.pos.z"},"color":"gold"}]
```
::::
:::::
-> **Credits**: Aksiome, Leirof, theogiraudet
+> **Credits**: Aksiome, Leirof
---
@@ -648,7 +681,7 @@ Unlike relative position (canonical), this reference frame considers the entity'
---
-### Set position
+### Set position and rotation
:::::{tab-set}
::::{tab-item} x,y,z
@@ -771,15 +804,6 @@ scoreboard players set @s bs.pos.z 65
function #bs.position:set_pos_z {scale:1}
```
::::
-:::::
-
-> **Credits**: Aksiome, Leirof
-
----
-
-### Set rotation
-
-:::::{tab-set}
::::{tab-item} h,v
```{function} #bs.position:set_rot {scale:}
@@ -846,6 +870,30 @@ Rotate an entity according to its vertical rotation score.
**State**: Entity is teleported to the rotation indicated by the vertical score.
```
+::::
+::::{tab-item} x,y,z,h,v
+
+```{function} #bs.position:set_pos_and_rot {scale:}
+
+Place and rotate an entity according to its position and rotation scores.
+
+:Inputs:
+ **Execution `as `**: Entity to teleport.
+
+ **Scores `@s bs.rot.[x,y,z]`**: Coordinates to teleport to.
+
+ **Scores `@s bs.rot.[h,v]`**: Rotation to teleport to.
+
+ **Function macro**:
+ :::{treeview}
+ - {nbt}`compound` Arguments
+ - {nbt}`number` **scale**: Scalar applied to the output.
+ :::
+
+:Outputs:
+ **State**: Entity is teleported to the position indicated by the position scores and rotated according to the rotation scores.
+```
+
::::
:::::
diff --git a/docs/quickstart.md b/docs/quickstart.md
index 4ee5b61a85..87068ec313 100644
--- a/docs/quickstart.md
+++ b/docs/quickstart.md
@@ -92,7 +92,7 @@ Bookshelf relies on persistent entities to enhance performances. Therefore, it's
Bookshelf is designed to minimize unintended side effects. However, complications can arise when multiple datapacks utilize the same one. To prevent potential issues, itβs always recommended to set inputs prior to executing a function. This holds true even though Bookshelf adheres to a strict policy of preserving inputs. By following this practice, you can ensure smoother operation and prevent unexpected behaviors.
:::{note}
-This section is in progress. If you have some ideas about how to improve the first steps with Bookshelf, please share it on our [Discord server](https://discord.gg/E8qq6tN).
+This section is in progress. If you have some ideas about how to improve the first steps with Bookshelf, please share it on our [Discord server](https://discord.gg/MkXytNjmBt).
:::
---
@@ -135,7 +135,7 @@ In this command block, you can enter the command of one of the following example
:::{note}
-This section is in progress. If you have some ideas about how to improves the first steps with the Glibs, please share it on our [Discord server](https://discord.gg/E8qq6tN).
+This section is in progress. If you have some ideas about how to improves the first steps with the Glibs, please share it on our [Discord server](https://discord.gg/MkXytNjmBt).
:::
---
diff --git a/docs/related/guides-and-tools.md b/docs/related/guides-and-tools.md
index 4c2fde4903..f34307833d 100644
--- a/docs/related/guides-and-tools.md
+++ b/docs/related/guides-and-tools.md
@@ -9,7 +9,12 @@ This page listes some of them.
```{include} ../_templates/map-making-guides.md
```
-## π οΈ Tools
+## π οΈ External Tools
```{include} ../_templates/tools.md
```
+
+## π¦ Mods and Datapacks
+
+```{include} ../_templates/mods-and-datapacks.md
+```
diff --git a/assets/command_storage_bs.dat b/generated/command_storage_bs.dat
similarity index 99%
rename from assets/command_storage_bs.dat
rename to generated/command_storage_bs.dat
index f093ca8786..07eee8127a 100644
Binary files a/assets/command_storage_bs.dat and b/generated/command_storage_bs.dat differ
diff --git a/generated/manifest.json b/generated/manifest.json
new file mode 100644
index 0000000000..53f77f9297
--- /dev/null
+++ b/generated/manifest.json
@@ -0,0 +1,4244 @@
+[
+ {
+ "name": "Bookshelf",
+ "description": "Bookshelf - Library designed for mapmakers",
+ "pack_format": 41,
+ "modules": [
+ {
+ "name": "bs.biome",
+ "display_name": "Biome",
+ "description": "Comprehensive information and tools related to biome properties.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.biome",
+ "features": [
+ {
+ "name": "get_biome",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-biome",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/04/22",
+ "version": "1.20.5"
+ },
+ "updated": {
+ "date": "2024/04/22",
+ "version": "1.20.5"
+ }
+ },
+ {
+ "name": "get_temperature",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-temperature",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2018/08/16",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2024/04/22",
+ "version": "1.20.5"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.5"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.5"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.5"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.bitwise",
+ "display_name": "Bitwise",
+ "description": "A collection of various bitwise operations, providing versatile tools for manipulating binary data.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.bitwise",
+ "features": [
+ {
+ "name": "and",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/02/27",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/22",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "bit_count",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#bit-count",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "bit_length",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#bit-length",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2020/09/06",
+ "version": "1.16"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "not",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/08/27",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2024/03/18",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "or",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/02/27",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/22",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "two_complement",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#complement-to-2",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2020/09/06",
+ "version": "1.16"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.19"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "xor",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/bitwise.html#logical-operators",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2018/02/27",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/22",
+ "version": "23w33a"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.block",
+ "display_name": "Block",
+ "description": "Manage blocks, including states and NBTs, while offering advanced tools for seamless transformations.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "contributors": [
+ "theogiraudet"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.block",
+ "features": [
+ {
+ "name": "fill_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#fill",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "fill_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#fill",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#get",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#get",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "keep_properties",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "lookup_item",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "lookup_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "match",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#match",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "merge_properties",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "remove_properties",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "replace_mapped_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome"
+ ],
+ "contributors": [
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/05/25",
+ "version": "1.20.6"
+ },
+ "updated": {
+ "date": "2024/05/25",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "replace_properties",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "replace_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-type",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#set",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_type",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#set",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "shift_properties",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#manage-state",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "spawn_block_display",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "spawn_falling_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "spawn_solid_block_display",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html#spawn",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/block.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/15",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.color",
+ "display_name": "Color",
+ "description": "Facilitate color conversion between various formats.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.color",
+ "features": [
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "hex_to_int",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/biome.html#get-biome",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/04/22",
+ "version": "1.20.5"
+ },
+ "updated": {
+ "date": "2024/04/22",
+ "version": "1.20.5"
+ }
+ },
+ {
+ "name": "hex_to_rgb",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-rgb",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "int_to_hex",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-hex",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "int_to_rgb",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-rgb",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2019/08/12",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2023/10/22",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "rgb_to_hex",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-hex",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "rgb_to_int",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html#convert-to-int",
+ "authors": [
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2019/08/12",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2023/10/22",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/color.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/27",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.health",
+ "display_name": "Health",
+ "description": "Efficiently manage the lifecycle and vital aspects of an entity.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.health",
+ "weak_dependencies": [
+ "bs.log"
+ ],
+ "features": [
+ {
+ "name": "add_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#add-remove",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_max_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#add-remove",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/23",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_max_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/23",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#set",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_max_health",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#set",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/03/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "time_to_live",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html#time-to-live",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/07/08",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/11/19",
+ "version": "1.20.3"
+ },
+ "weak_dependencies": [
+ "bs.log"
+ ]
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/health.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/15",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.hitbox",
+ "display_name": "Hitbox",
+ "description": "Get and check the hitboxes of blocks or entities.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.hitbox",
+ "features": [
+ {
+ "name": "get_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#get",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/23",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "is_in_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#is-inside",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "is_in_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html#is-inside",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/21",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/23",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/hitbox.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/23",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.id",
+ "display_name": "ID",
+ "description": "Manage entity IDs, essential in scenarios like shooting games where you need to track who is targeting whom.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.id",
+ "features": [
+ {
+ "name": "give_cuid",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#give-chain-unique-id",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/10/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/28",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "give_suid",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#give-simple-unique-id",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/10/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/28",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/18/29",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/18/29",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/18/29",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "update_cuids",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/id.html#update-chain-unique-id",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/10/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/08/28",
+ "version": "23w33a"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.link",
+ "display_name": "Link",
+ "description": "Construct coherent entity structures by linking entitiesβ positions and rotations.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.link",
+ "dependencies": [
+ "bs.id",
+ "bs.position"
+ ],
+ "features": [
+ {
+ "name": "create_link_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#create-link",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2020/05/16",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.15"
+ },
+ "dependencies": [
+ "bs.id"
+ ]
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_pos_and_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_pos_x",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_pos_y",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_pos_z",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_rot_h",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "imitate_rot_v",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#imitate-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "keep_local_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#keep-local-position",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/13",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.1"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.position"
+ ]
+ },
+ {
+ "name": "mirror_point_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#mirror-point",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.1"
+ },
+ "dependencies": [
+ "bs.position"
+ ]
+ },
+ {
+ "name": "mirror_x_plane",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#mirror-plane",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.1"
+ }
+ },
+ {
+ "name": "mirror_z_plane",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#mirror-plane",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.1"
+ }
+ },
+ {
+ "name": "reverse_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_pos_and_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_pos_x",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_pos_y",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_pos_z",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_rot_h",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "reverse_rot_v",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#reverse-behaviors",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/09/11",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/12",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "update_link",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/link.html#update-link",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/06/29",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "dependencies": [
+ "bs.position"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "bs.math",
+ "display_name": "Math",
+ "description": "The beatifull world of mathematics⦠in Minecraft!",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html",
+ "authors": [
+ "Aksiome",
+ "Ethanout",
+ "KubbyDev",
+ "Leirof",
+ "Triton365",
+ "theogiraudet",
+ "xiaodou123"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.math",
+ "features": [
+ {
+ "name": "acos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/09/04",
+ "version": "1.12.1"
+ },
+ "updated": {
+ "date": "2023/09/05",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "asin",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/08/24",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2023/09/05",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "atan",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/10/01",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2023/09/05",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "atan2",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#inverse-trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "version": "23w33a"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "combine",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#combine",
+ "authors": [
+ "Ethanout"
+ ],
+ "created": {
+ "date": "2023/08/13",
+ "version": "23w31a"
+ },
+ "updated": {
+ "date": "2023/08/13",
+ "version": "23w31a"
+ }
+ },
+ {
+ "name": "cos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/15",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2023/08/31",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "divide",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#rounded-division",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/08/26",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2023/09/01",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "exp",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#exponential",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2018/12/25",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/31",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "exp2",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#exponential",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/31",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/31",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "factorial",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#factorial",
+ "authors": [
+ "KubbyDev"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2017/09/08",
+ "version": "1.12.1"
+ },
+ "updated": {
+ "date": "2023/08/31",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "frexp",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#float-manipulation",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/02",
+ "version": "23w33a"
+ },
+ "updated": {
+ "date": "2024/01/31",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "gcd",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#greatest-common-denominator",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/10/28",
+ "version": "1.12.2"
+ },
+ "updated": {
+ "date": "2023/08/03",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "ipow",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#power",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "isqrt",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#square-root",
+ "authors": [
+ "Ethanout",
+ "Triton365",
+ "xiaodou123"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2023/01/26",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "ldexp",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#float-manipulation",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/28",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/28",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "log",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/06",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "log10",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/07",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "log2",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/07",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "loga",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#logarithm",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2019/01/07",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/01/29",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "pow",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#pow",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/30",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/01/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "sin",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Leirof"
+ ],
+ "contributors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2017/05/16",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2023/08/31",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "sincos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "version": "23w33a"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "sqrt",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#square-root",
+ "authors": [
+ "Aksiome",
+ "Ethanout",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/01/28",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "tan",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html#trigonometry",
+ "authors": [
+ "Aksiome",
+ "KubbyDev"
+ ],
+ "created": {
+ "date": "2018/10/01",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/math.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/05",
+ "version": "1.13.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.move",
+ "display_name": "Move",
+ "description": "Make your entity move exactly the way you want them to!",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.move",
+ "dependencies": [
+ "bs.hitbox"
+ ],
+ "features": [
+ {
+ "name": "apply_local_vel",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#apply-velocity",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/05/28",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "apply_vel",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#apply-velocity",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/05/24",
+ "version": "1.13"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "canonical_to_local",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#canonical-to-local",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/25",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/19",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/19",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "local_to_canonical",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#local-to-canonical",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/25",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/04/19",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_motion",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html#set-motion",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/10",
+ "version": "1.14.3"
+ },
+ "updated": {
+ "date": "2023/12/13",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/move.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/19",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.position",
+ "display_name": "Position",
+ "description": "Manage entity positions and rotations using scores.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "contributors": [
+ "Triton365"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.position",
+ "features": [
+ {
+ "name": "add_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_pos_and_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_pos_x",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_pos_y",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_pos_z",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_rot_h",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "add_rot_v",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#add-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2024/01/22",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "canonical_to_local",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#canonical-to-local",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_distance_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-distance",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "contributors": [
+ "Triton365"
+ ],
+ "created": {
+ "date": "2019/07/14",
+ "version": "1.14.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_distance_squared_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-distance",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/14",
+ "version": "1.14.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_pos_and_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_pos_x",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_pos_y",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_pos_z",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#get-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_relative_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-relative",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/07/14",
+ "version": "1.14.3"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_relative_from_dir",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-relative",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_rot_h",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_rot_v",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#get-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "local_to_canonical",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#local-to-canonical",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/25",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/04/12",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_pos_and_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/09/09",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_pos_x",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_pos_y",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_pos_z",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/master/modules/position.html#set-position-and-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_rot_h",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_rot_v",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html#set-rotation",
+ "authors": [
+ "Aksiome",
+ "Leirof",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2017/05/14",
+ "version": "1.12"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/position.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.raycast",
+ "display_name": "Raycast",
+ "description": "Cast rays and see if they collide with blocks or entities.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.raycast",
+ "dependencies": [
+ "bs.hitbox"
+ ],
+ "features": [
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "run",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html#run-the-raycast",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/09",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/04/02",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/raycast.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.schedule",
+ "display_name": "Schedule",
+ "description": "Enhance command scheduling with this module, providing flexibility beyond vanilla capabilities. Cancel commands and maintain execution context (entity & location).",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.schedule",
+ "weak_dependencies": [
+ "bs.log"
+ ],
+ "features": [
+ {
+ "name": "cancel_all",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#cancel",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ },
+ "weak_dependencies": [
+ "bs.log"
+ ]
+ },
+ {
+ "name": "cancel_one",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#cancel",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2019/07/31",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ },
+ "weak_dependencies": [
+ "bs.log"
+ ]
+ },
+ {
+ "name": "clear",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#clear",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2019/07/31",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2024/01/20",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "schedule",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html#schedule",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2019/07/31",
+ "version": "1.14"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "weak_dependencies": [
+ "bs.log"
+ ]
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/schedule.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/10",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.sidebar",
+ "display_name": "Sidebar",
+ "description": "Create a visually appealing and dynamic sidebar using the scoreboard.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.sidebar",
+ "weak_dependencies": [
+ "bs.log"
+ ],
+ "features": [
+ {
+ "name": "create",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html#create",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/18",
+ "version": "23w32a"
+ },
+ "updated": {
+ "date": "2023/12/07",
+ "version": "1.20.3"
+ },
+ "weak_dependencies": [
+ "bs.log"
+ ]
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/28",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/28",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "refresh",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html#refresh",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/18",
+ "version": "23w32a"
+ },
+ "updated": {
+ "date": "2023/12/07",
+ "version": "1.20.3"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/sidebar.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/28",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.time",
+ "display_name": "Time",
+ "description": "Get information about the system time effortlessly.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "contributors": [
+ "Awhikax",
+ "RedCoal"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.time",
+ "features": [
+ {
+ "name": "get",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html#system-time",
+ "authors": [
+ "Aksiome"
+ ],
+ "contributors": [
+ "Awhikax",
+ "RedCoal"
+ ],
+ "created": {
+ "date": "2021/10/30",
+ "version": "1.17.1"
+ },
+ "updated": {
+ "date": "2023/08/30",
+ "version": "23w33a"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/30",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/24",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/30",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/24",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/time.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/30",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/24",
+ "version": "1.20.2"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.tree",
+ "display_name": "Tree",
+ "description": "Simplicity meets utility in this bank of trees.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.tree",
+ "features": [
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2023/10/19",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2023/10/19",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/tree.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2023/10/19",
+ "version": "1.20.2"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.vector",
+ "display_name": "Vector",
+ "description": "Vectors are fundamental and incredibly powerful tools to manage motions, forces and⦠well⦠do physics!",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html",
+ "authors": [
+ "Aksiome",
+ "KubbyDev",
+ "Leirof",
+ "Majoras16"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.vector",
+ "features": [
+ {
+ "name": "abs_max",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#absolute-max",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/02/23",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2024/05/09",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "abs_min",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#absolute-min",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/05/09",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "basis_rot_3d",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#basis-rotation-3d",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "cartesian_to_spherical",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#cartesian-to-spherical",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "cross_product",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#cross-product",
+ "authors": [
+ "Aksiome",
+ "Majoras16"
+ ],
+ "created": {
+ "date": "2023/04/27",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "dot_product",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#dot-product",
+ "authors": [
+ "Aksiome",
+ "Majoras16"
+ ],
+ "created": {
+ "date": "2023/04/27",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/21",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "length",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length",
+ "authors": [
+ "Aksiome",
+ "KubbyDev",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/04/01",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "length_squared",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length",
+ "authors": [
+ "Aksiome",
+ "KubbyDev",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/04/01",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/21",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "normalize",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#normalize",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/02/19",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "normalize_max_component",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#length",
+ "authors": [
+ "Aksiome",
+ "KubbyDev",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2018/04/01",
+ "version": "1.19.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "pos_from_vec",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "rot_from_vec",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "spherical_to_cartesian",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#spherical-to-cartesian",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/20",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/21",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "vec_from_pos",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "vec_from_rot",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "vec_from_vel",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "version": "1.20.2"
+ }
+ },
+ {
+ "name": "vel_from_vec",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/vector.html#helpers",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/10/17",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2023/02/17",
+ "version": "1.20.2"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.view",
+ "display_name": "View",
+ "description": "Execute commands based on what an entity sees.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.view",
+ "dependencies": [
+ "bs.hitbox",
+ "bs.raycast"
+ ],
+ "features": [
+ {
+ "name": "as_aimed_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/30",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "as_looked_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#looked-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/06",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "at_aimed_block",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-block",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/30",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "at_aimed_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/30",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "at_aimed_point",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#aimed-point",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/25",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "at_block_placement",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#block-placement",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/01/24",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/05/09",
+ "version": "1.20.6"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "at_looked_entity",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#looked-entity",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/12/06",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/03/30",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "can_see_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#can-see-as-to-at",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/05/20",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/04/20",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.hitbox"
+ ]
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/22",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "in_view_ata",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html#in-view-as-to-at",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2019/05/20",
+ "version": "1.20.3"
+ },
+ "updated": {
+ "date": "2024/04/20",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/22",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ },
+ "dependencies": [
+ "bs.raycast"
+ ]
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/view.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/09/22",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.weather",
+ "display_name": "Weather",
+ "description": "Everything concerning the weather.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.weather",
+ "features": [
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/weather.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/25",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.xp",
+ "display_name": "XP",
+ "description": "Efficiently manage the experience points and levels of players.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "module_path": "datapacks/Bookshelf/data/bs.xp",
+ "features": [
+ {
+ "name": "add_levels",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "add_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "add_progress",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#add-remove",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/03/08",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_max_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "get_progress",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2024/03/08",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "get_remaining_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "get_total_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#get",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_levels",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "set_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "set_progress",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2024/03/08",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "set_total_points",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html#set",
+ "authors": [
+ "Aksiome",
+ "Leirof"
+ ],
+ "created": {
+ "date": "2022/04/14",
+ "version": "1.18.2"
+ },
+ "updated": {
+ "date": "2023/11/20",
+ "version": "23w46a"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/xp.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/08/31",
+ "version": "1.20.1"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "Bookshelf Dev",
+ "description": "Bookshelf Development Kit - Library designed for mapmakers",
+ "pack_format": 41,
+ "modules": [
+ {
+ "name": "bs.dump",
+ "display_name": "Dump",
+ "description": "Dump the content of given variables to the chat.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "module_path": "datapacks/Bookshelf Dev/data/bs.dump",
+ "features": [
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/05",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "var",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/dump.html#dump-var",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2024/03/02",
+ "version": "1.20.4"
+ },
+ "updated": {
+ "date": "2024/03/02",
+ "version": "1.20.4"
+ }
+ }
+ ]
+ },
+ {
+ "name": "bs.log",
+ "display_name": "Log",
+ "description": "Log messages in the chat with varying levels of severity.",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome",
+ "theogiraudet"
+ ],
+ "module_path": "datapacks/Bookshelf Dev/data/bs.log",
+ "features": [
+ {
+ "name": "debug",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#debug",
+ "authors": [
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "error",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#error",
+ "authors": [
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "help",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "info",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#info",
+ "authors": [
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "version": "1.20.6"
+ }
+ },
+ {
+ "name": "load",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "tick",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "unload",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html",
+ "authors": [
+ "Aksiome"
+ ],
+ "created": {
+ "date": "2023/11/13",
+ "version": "1.20.2"
+ },
+ "updated": {
+ "date": "2024/02/27",
+ "version": "1.20.4"
+ }
+ },
+ {
+ "name": "warn",
+ "documentation": "https://bookshelf.docs.gunivers.net/en/latest/modules/log.html#warn",
+ "authors": [
+ "theogiraudet"
+ ],
+ "created": {
+ "date": "2023/08/05",
+ "version": "23w31a"
+ },
+ "updated": {
+ "date": "2024/05/08",
+ "version": "1.20.6"
+ }
+ }
+ ]
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/scripts/LICENSE b/scripts/LICENSE
new file mode 100644
index 0000000000..a612ad9813
--- /dev/null
+++ b/scripts/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/scripts/README.md b/scripts/README.md
new file mode 100644
index 0000000000..505f253abe
--- /dev/null
+++ b/scripts/README.md
@@ -0,0 +1,9 @@
+# Bookshelf Scripts
+
+Bookshelf Scripts require Python 3.12 or more.
+
+To be able to execute the scripts:
+
+```
+pip install -e .
+```
diff --git a/scripts/all.ipynb b/scripts/all.ipynb
index e420719ce1..94ad29aa14 100644
--- a/scripts/all.ipynb
+++ b/scripts/all.ipynb
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Dependencies"
+ "## Install dependencies"
]
},
{
@@ -13,14 +13,14 @@
"metadata": {},
"outputs": [],
"source": [
- "%pip install -r requirements.txt"
+ "%pip install -e ."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Test datapacks"
+ "## Run packtest"
]
},
{
@@ -29,10 +29,114 @@
"metadata": {},
"outputs": [],
"source": [
- "import mcunit\n",
+ "import packtest\n",
"import definitions\n",
"\n",
- "mcunit.run(definitions.DATAPACKS_PATH, definitions.MC_VERSION)"
+ "packtest.run(definitions.MC_VERSION, definitions.DATAPACKS_PATH)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Validate metadata"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Check Function Header"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from check_function_headers.check_function_headers import check\n",
+ "from files_provider.files_provider import FilesProvider\n",
+ "\n",
+ "files = FilesProvider() \\\n",
+ " .get_all_files_not_upstreamed() \\\n",
+ " .only_dp_artifacts() \\\n",
+ " .get_features()\n",
+ "\n",
+ "check(files)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Check Metadata File"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from files_provider.files_provider import FilesProvider\n",
+ "from metadata.check_module_metadata_file import check\n",
+ "\n",
+ "modules = FilesProvider() \\\n",
+ " .get_all_files_not_upstreamed() \\\n",
+ " .only_dp_artifacts() \\\n",
+ " .get_modules() \\\n",
+ " .get()\n",
+ "\n",
+ "check(modules)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Check Feature Tag Metadata"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from files_provider.files_provider import FilesProvider\n",
+ "from check_feature_tag.check_feature_tag import check\n",
+ "\n",
+ "files = FilesProvider() \\\n",
+ " .get_all_files_not_upstreamed() \\\n",
+ " .only_dp_artifacts() \\\n",
+ " .get_features()\n",
+ "\n",
+ "check(files)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Check Generated Metadata"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from metadata.check_generated_metadata import check\n",
+ "from files_provider.files_provider import FilesProvider\n",
+ "\n",
+ "modules = FilesProvider() \\\n",
+ " .get_all_files_not_upstreamed() \\\n",
+ " .only_dp_artifacts() \\\n",
+ " .get_modules()\n",
+ "\n",
+ "check(modules)"
]
},
{
@@ -43,6 +147,13 @@
"## Run generators"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Features"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
@@ -52,8 +163,26 @@
"import generators\n",
"import definitions\n",
"\n",
- "generators.biome.run(definitions.MC_VERSION, definitions.DATAPACKS_PATH, definitions.ASSETS_PATH)\n",
- "generators.block.run(definitions.MC_VERSION, definitions.DATAPACKS_PATH, definitions.ASSETS_PATH)"
+ "generators.biome.run(definitions.MC_VERSION, definitions.DATAPACKS_PATH, definitions.GENERATED_PATH)\n",
+ "generators.block.run(definitions.MC_VERSION, definitions.DATAPACKS_PATH, definitions.GENERATED_PATH)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Metadata"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from metadata.generate_metadata import generate\n",
+ "\n",
+ "generate()"
]
}
],
@@ -73,7 +202,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.6"
+ "version": "3.12.3"
}
},
"nbformat": 4,
diff --git a/scripts/ci/check_feature_tag_metadata_wf.py b/scripts/ci/check_feature_tag_metadata_wf.py
new file mode 100644
index 0000000000..85162d5bf7
--- /dev/null
+++ b/scripts/ci/check_feature_tag_metadata_wf.py
@@ -0,0 +1,15 @@
+from pathlib import Path
+from check_feature_tag.check_feature_tag import check
+from files_provider.files_provider import FilePathsManager, FilesProvider
+
+from github_file_getter import get_not_merged_files
+
+
+paths: list[Path] = get_not_merged_files()
+
+files = FilePathsManager(paths) \
+ .only_dp_artifacts() \
+ .get_features()
+
+if(errors := check(files)):
+ exit(1)
diff --git a/scripts/ci/check_function_headers_wf.py b/scripts/ci/check_function_headers_wf.py
new file mode 100644
index 0000000000..a447fbe935
--- /dev/null
+++ b/scripts/ci/check_function_headers_wf.py
@@ -0,0 +1,14 @@
+from pathlib import Path
+from check_function_headers.check_function_headers import check
+from files_provider.files_provider import FilePathsManager, FilesProvider
+
+from github_file_getter import get_not_merged_files
+
+
+paths: list[Path] = get_not_merged_files()
+files = FilePathsManager(paths) \
+ .only_dp_artifacts() \
+ .get_features()
+
+if(errors := check(files)):
+ exit(1)
diff --git a/scripts/ci/check_generated_metadata_wf.py b/scripts/ci/check_generated_metadata_wf.py
new file mode 100644
index 0000000000..af6c21a153
--- /dev/null
+++ b/scripts/ci/check_generated_metadata_wf.py
@@ -0,0 +1,15 @@
+from pathlib import Path
+from metadata.check_generated_metadata import check
+from files_provider.files_provider import FilePathsManager
+
+from github_file_getter import get_not_merged_files
+
+
+paths: list[Path] = get_not_merged_files()
+
+modules = FilePathsManager(paths) \
+ .only_dp_artifacts() \
+ .get_modules()
+
+if(errors := check(modules)):
+ exit(1)
diff --git a/scripts/ci/check_metadata_files_wf.py b/scripts/ci/check_metadata_files_wf.py
new file mode 100644
index 0000000000..a2774485f0
--- /dev/null
+++ b/scripts/ci/check_metadata_files_wf.py
@@ -0,0 +1,16 @@
+from pathlib import Path
+from metadata.check_module_metadata_file import check
+from files_provider.files_provider import FilePathsManager, FilesProvider
+
+from github_file_getter import get_not_merged_files
+
+
+paths: list[Path] = get_not_merged_files()
+
+files = FilePathsManager(paths) \
+ .only_dp_artifacts() \
+ .get_modules() \
+ .get()
+
+if(errors := check(files)):
+ exit(1)
diff --git a/scripts/distribute.py b/scripts/ci/distribute_release_wf.py
similarity index 96%
rename from scripts/distribute.py
rename to scripts/ci/distribute_release_wf.py
index c9993b2ed5..c62560019e 100644
--- a/scripts/distribute.py
+++ b/scripts/ci/distribute_release_wf.py
@@ -106,16 +106,16 @@ def create_world_archive(target: Path, filename: str):
)
def create_datapacks_archive(target: Path, filename: str):
- for datapack in ["Bookshelf", "Bookshelf Dev"]:
+ for datapack in definitions.BOOKSHELF_LIBS:
print(f"π¦ Creating archive for datapack {datapack}")
create_archive(
- target / filename.format(datapack.lower().replace(" ", "-")),
+ target / filename.format(str(datapack).lower().replace(" ", "-")),
definitions.DATAPACKS_PATH / datapack,
get_datapack_files(datapack),
)
def create_modules_archive(target: Path, filename: str):
- for datapack in ["Bookshelf", "Bookshelf Dev"]:
+ for datapack in definitions.BOOKSHELF_LIBS:
for module in list_modules(datapack):
print(f"𧩠Creating archive for module {module}")
create_archive(
diff --git a/scripts/ci/github_file_getter.py b/scripts/ci/github_file_getter.py
new file mode 100644
index 0000000000..1646d03ae3
--- /dev/null
+++ b/scripts/ci/github_file_getter.py
@@ -0,0 +1,20 @@
+import json
+import os
+import subprocess
+
+from pathlib import Path
+
+
+def get_not_merged_files() -> list[Path]:
+ workspace = os.getenv('GITHUB_WORKSPACE')
+ event = os.getenv('GITHUB_EVENT')
+
+ body = json.loads(event)
+ baseSHA = body['pull_request']['base']['sha']
+ headSHA = body['pull_request']['head']['sha']
+
+ gitLogCommand = f"git diff --name-only {baseSHA}...{headSHA}"
+ result = subprocess.check_output(gitLogCommand, encoding='utf-8', shell=True)
+ filePaths = result.splitlines()
+
+ return [ Path(workspace) / path for path in filePaths ]
diff --git a/scripts/ci/run_packtest_wf.py b/scripts/ci/run_packtest_wf.py
new file mode 100644
index 0000000000..1660144009
--- /dev/null
+++ b/scripts/ci/run_packtest_wf.py
@@ -0,0 +1,11 @@
+import definitions
+import re
+
+from packtest import Assets, Runner
+
+runner = Runner(Assets(definitions.MC_VERSION))
+with runner.run(definitions.DATAPACKS_PATH, definitions.ROOT_DIR) as process:
+ for line in iter(process.stdout.readline, ""):
+ if match := re.search(r"::error title=(.*?)::(.*)", line):
+ print(line, end='')
+ exit(process.wait())
diff --git a/scripts/definitions.py b/scripts/definitions.py
deleted file mode 100644
index 160449c79f..0000000000
--- a/scripts/definitions.py
+++ /dev/null
@@ -1,29 +0,0 @@
-import os
-import yaml
-from mcunit import MCUnit
-from pathlib import Path
-
-
-ROOT_DIR: Path = Path(__file__).parent.parent.resolve()
-
-with open(ROOT_DIR / ".env.yml", 'r') as file:
- config = yaml.safe_load(file)
- MC_VERSION = config['mc_version']
- ASSETS_PATH: Path = ROOT_DIR / config['assets_path']
- BUILD_PATH: Path = ROOT_DIR / config['build_path']
- DATAPACKS_PATH: Path = ROOT_DIR / config['datapacks_path']
- WORLD_PATH: Path = ROOT_DIR / config['world_path']
-
-
-if __name__ == "__main__":
- mcunit = MCUnit(MC_VERSION)
- if env_file := os.getenv('GITHUB_ENV'):
- with open(env_file, "a") as file:
- file.write(f"MC_VERSION={MC_VERSION}\n")
- file.write(f"WORLD_PATH={WORLD_PATH}\n")
- file.write(f"ASSETS_PATH={ASSETS_PATH}\n")
- file.write(f"BUILD_PATH={BUILD_PATH}\n")
- file.write(f"DATAPACKS_PATH={DATAPACKS_PATH}\n")
- file.write(f"TEST_PACKTEST={mcunit.packtest_url}\n")
- file.write(f"TEST_FABRIC_API={mcunit.fabric_api_url}\n")
- file.write(f"TEST_FABRIC_SERVER={mcunit.fabric_server_url}\n")
diff --git a/scripts/generators/__init__.py b/scripts/generators/__init__.py
deleted file mode 100644
index 30b2c8f4b0..0000000000
--- a/scripts/generators/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import os
-import sys
-
-sys.path.append(os.path.dirname(__file__))
-
-import biome
-import block
diff --git a/scripts/mcunit.py b/scripts/mcunit.py
deleted file mode 100644
index 3f79aa1e30..0000000000
--- a/scripts/mcunit.py
+++ /dev/null
@@ -1,119 +0,0 @@
-import argparse
-import hashlib
-import os
-import platform
-import re
-import requests
-import subprocess
-import tempfile
-
-from pathlib import Path
-
-
-def create_symlink(src: Path, dest: Path):
- if platform.system() == 'Windows':
- subprocess.check_call(['mklink', '/J', str(dest), str(src)], shell=True)
- else:
- os.symlink(src, dest, target_is_directory=True)
-
-
-def clear_directory(dir: Path):
- if not dir.is_dir():
- return
- for entry in dir.iterdir():
- try:
- entry.unlink()
- except OSError:
- clear_directory(entry)
- dir.rmdir()
-
-
-class MCUnit():
- """
- Utility for setting up and running Minecraft Unit Tests.
- """
-
- def __init__(self, mc_version: str) -> None:
- """
- Initializes MCUnit with the specified Minecraft version.
- """
- self.mc_version = mc_version
- self.fabric_server_url = self.get_fabric_url(mc_version)
- self.fabric_api_url = self.get_modrinth_url("P7dR8mSH", mc_version)
- self.packtest_url = self.get_modrinth_url("XsKUhp45", mc_version)
-
- def get_fabric_url(self, mc_version: str) -> str:
- response = requests.get(f"https://meta.fabricmc.net/v2/versions/loader/{mc_version}")
- response.raise_for_status()
- versions = response.json()
- return f'https://meta.fabricmc.net/v2/versions/loader/{mc_version}/{versions[0]["loader"]["version"]}/1.0.1/server/jar'
-
- def get_modrinth_url(self, project_id: str, mc_version: str) -> str:
- response = requests.get(f"https://api.modrinth.com/v2/project/{project_id}/version")
- response.raise_for_status()
- versions = response.json()
- if versions := [version for version in versions if mc_version in version["game_versions"]]:
- return versions[0]["files"][0]["url"]
- raise RuntimeError(f"Could not find packtest version for the given Minecraft version: {mc_version}")
-
- def download_file(self, url: str, filepath: Path) -> None:
- if not filepath.exists():
- print(f"\033[93mπ Downloading\033[0m [{url}]")
- response = requests.get(url)
- response.raise_for_status()
- filepath.parent.mkdir(parents=True, exist_ok=True)
- filepath.write_bytes(response.content)
-
- def run(self, datapacks_path: str) -> None:
- """
- Sets up and runs the test server.
- """
- dirname = "mcunit-" + hashlib.sha1(self.packtest_url.encode('utf-8')).hexdigest()
- tmpdir = Path(tempfile.gettempdir()) / dirname
- tmpdir.mkdir(parents=True, exist_ok=True)
-
- print("π¦ Setting up assets")
- for url, filepath in [
- (self.fabric_server_url, tmpdir / "server.jar"),
- (self.fabric_api_url, tmpdir / "mods/fabric-api.jar"),
- (self.packtest_url, tmpdir / "mods/packtest.jar"),
- ]:
- self.download_file(url, filepath)
-
- print("π Linking datapacks")
- clear_directory(tmpdir / "world")
- datapacks_src_path = Path(datapacks_path).resolve()
- datapacks_dst_path = tmpdir / "world/datapacks"
- datapacks_dst_path.parent.mkdir(parents=True, exist_ok=True)
- create_symlink(datapacks_src_path, datapacks_dst_path)
- (tmpdir / "allowed_symlinks.txt").write_text(str(datapacks_src_path))
-
- print("π§ͺ Running test server")
- with subprocess.Popen(
- "java -Xmx2G -Dpacktest.auto -Dpacktest.auto.annotations -jar server.jar nogui",
- stdout=subprocess.PIPE,
- universal_newlines=True,
- shell=True,
- cwd=tmpdir,
- ) as process:
- for log in iter(process.stdout.readline, ""):
- if match := re.search(r"::error title=(.*?)::(.*)", log):
- title, description = match.groups()
- print(f"\033[1m\033[91m β {title}\033[0m: {description}")
-
- if err_count := process.wait():
- print(f"π₯ {err_count} required tests failed :(")
- else:
- print("β
All required tests passed :)")
-
-
-def run(datapacks_path: str, mc_version: str):
- MCUnit(mc_version).run(datapacks_path)
-
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser(description="Run packtest automated test server")
- parser.add_argument("--source", type=str, required=True, help="set the datapacks path")
- parser.add_argument("--version", type=str, required=True, help="set the minecraft version to use")
- args = parser.parse_args()
- run(args.source, args.version)
diff --git a/scripts/pyproject.toml b/scripts/pyproject.toml
new file mode 100644
index 0000000000..1dd35ce9dd
--- /dev/null
+++ b/scripts/pyproject.toml
@@ -0,0 +1,18 @@
+[project]
+name = "bookshelf-scripts"
+version = "1.0.0"
+description = "Scripts to generate Bookshelf's files and for Github pipeline."
+authors = [
+ { name = "Gunivers", email = "contact@gunivers.net" }
+]
+license = {file = "LICENSE" }
+dependencies = [
+ "nbtlib==1.12.1",
+ "pyyaml",
+ "requests",
+ "Jinja2",
+ "colored"
+]
+
+[options]
+python_requires = ">=3.12"
diff --git a/scripts/requirements.txt b/scripts/requirements.txt
deleted file mode 100644
index b18309cd19..0000000000
--- a/scripts/requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-nbtlib==1.12.1
-pyyaml
-requests
diff --git a/scripts/generators/processors/__init__.py b/scripts/src/check_feature_tag/__init__.py
similarity index 100%
rename from scripts/generators/processors/__init__.py
rename to scripts/src/check_feature_tag/__init__.py
diff --git a/scripts/src/check_feature_tag/check_feature_tag.py b/scripts/src/check_feature_tag/check_feature_tag.py
new file mode 100644
index 0000000000..b515e6ce6a
--- /dev/null
+++ b/scripts/src/check_feature_tag/check_feature_tag.py
@@ -0,0 +1,132 @@
+from functools import partial
+import re
+from files_provider.files_provider import Artifact
+from function_call_getter.function_call_getter import FunctionCallGetter
+from function_call_getter._types import (VisitableFeatureSet, VisitableFeature, Visitor)
+import definitions
+from logger import newLogger
+from logger.logger import Logger
+from files_provider._types import Feature
+
+date = {
+ "date": {
+ "optional": False,
+ "type": "string",
+ "syntax": r"^\d{4}/\d{2}/\d{2}$"
+ },
+ "minecraft_version": {
+ "optional": False,
+ "type": "string",
+ "syntax": "^.*$"
+ }
+ }
+
+bookshelf_key = {
+ "feature": {
+ "optional": False,
+ "type": "bool",
+ "value": True
+ },
+ "documentation": {
+ "optional": False,
+ "type": "string",
+ "syntax": r"^" + re.escape(definitions.DOC_URL) + r".*$"
+ },
+ "authors": {
+ "optional": False,
+ "type": "list",
+ "tags": [ "not_empty" ]
+ },
+ "contributors": {
+ "optional": True,
+ "type": "list",
+ "tags": [ "not_empty" ]
+ },
+ "created": {
+ "optional": False,
+ "type": "object",
+ "elements": date
+ },
+ "updated": {
+ "optional": False,
+ "type": "object",
+ "elements": date
+ }
+}
+
+def check(artifact_paths: list[Artifact]) -> bool:
+ """
+ return True if errors were found
+ """
+
+ logger = newLogger()
+ logger.print_step("The following files will be reviewed:", "π")
+ logger.print_log(*[str(path.real_path.relative_to(definitions.ROOT_DIR)) for path in artifact_paths])
+
+ getter = FunctionCallGetter()
+
+ feature_set: VisitableFeatureSet = getter.build_function_call_tree(artifact_paths)
+ logger.print_step(f"Found {len(feature_set.features)} features:", "π¦")
+ logger.print_log(*[feature.mc_path for feature in feature_set.features])
+
+ logger.print_step("Checking their specified metadataβ¦", "β³")
+
+ visitor = Visitor([VisitableFeature], partial(__callback, logger))
+ visitor.visit(feature_set)
+
+ return logger.print_done()
+
+def __callback(logger: Logger, feature: VisitableFeature) -> bool:
+ check_feature(Feature(feature.real_path, feature.mc_path, feature.content), logger)
+ return True
+
+def check_feature(feature: Feature, logger: Logger) -> dict:
+ metadata = feature._content.get(definitions.FEATURE_TAG_NAMESPACE, None)
+ if metadata == None:
+ logger.print_err(f"No metadata in feature tag '{feature.mc_path}'.")
+ else:
+ for key, value in bookshelf_key.items():
+ __check_key(feature.mc_path, [definitions.FEATURE_TAG_NAMESPACE, key], value, metadata, logger)
+ return feature._content.get(definitions.FEATURE_TAG_NAMESPACE)
+
+
+def __check_string(value, path: list[str], pattern: dict, tag_path: str, logger: Logger):
+ syntax = pattern.get("syntax", None)
+ if syntax != None and not re.match(syntax, value):
+ logger.print_err(f"Invalid syntax for key '{".".join(path)}' in Bookshelf metadata of feature tag '{tag_path}'.")
+
+def __check_list(value, path: list[str], pattern: dict, tag_path: str, logger: Logger):
+ if not isinstance(value, list):
+ logger.print_err(f"Key '{".".join(path)}' in Bookshelf metadata of feature tag '{tag_path}' should be a list.")
+ elif "not_empty" in pattern.get("tags", []):
+ if len(value) == 0:
+ logger.print_err(f"Key '{".".join(path)}' in Bookshelf metadata of feature tag '{tag_path}' should not be empty.")
+
+def __check_object(value, path: list[str], pattern: dict, tag_path: str, logger: Logger):
+ if not isinstance(value, dict):
+ logger.print_err(f"Key '{".".join(path)}' in Bookshelf metadata of feature tag '{tag_path}' should be an object.")
+ else:
+ for key, element in pattern.get("elements", {}).items():
+ __check_key(tag_path, path + [key], element, value, logger)
+
+def __check_bool(value, path: list[str], pattern: dict, tag_path: str, logger: Logger):
+ if not isinstance(value, bool):
+ logger.print_err(f"Key '{".".join(path)}' in Bookshelf metadata of feature tag '{tag_path}' should be a boolean.")
+ elif value != pattern.get("value", False):
+ logger.print_err(f"Key '{".".join(path)}' in Bookshelf metadata of feature tag '{tag_path}' should be {pattern.get('value', False)}.")
+
+def __check_key(tag_path: str, path: list[str], pattern: dict, obj: dict, logger: Logger):
+ type = pattern.get("type", None)
+ value = obj.get(path[-1], None)
+ if value == None and pattern.get("optional", True) == False:
+ logger.print_err(f"Missing key '{".".join(path)}' in Bookshelf metadata of feature tag '{tag_path}'.")
+ elif pattern.get("optional", True) == False:
+ if type == "string":
+ __check_string(value, path, pattern, tag_path, logger)
+ elif type == "list":
+ __check_list(value, path, pattern, tag_path, logger)
+ elif type == "object":
+ __check_object(value, path, pattern, tag_path, logger)
+ elif type == "bool":
+ __check_bool(value, path, pattern, tag_path, logger)
+
diff --git a/scripts/src/check_function_headers/__init__.py b/scripts/src/check_function_headers/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/scripts/src/check_function_headers/check_function_headers.py b/scripts/src/check_function_headers/check_function_headers.py
new file mode 100644
index 0000000000..46bdb0966d
--- /dev/null
+++ b/scripts/src/check_function_headers/check_function_headers.py
@@ -0,0 +1,58 @@
+from functools import partial
+import re
+from typing import cast
+from files_provider.files_provider import Artifact
+from function_call_getter.function_call_getter import FunctionCallGetter
+from function_call_getter._types import (VisitableFeatureSet, VisitableFeature, VisitableFunction, Visitor)
+import definitions
+from logger import newLogger
+from logger.logger import Logger
+import utils.function_header as function_header
+import utils.function_header as function_header
+
+header_header = "# INFO"
+header_footer = "# CODE"
+
+def check(artifact_paths: list[Artifact]) -> bool:
+ """
+ return True if errors were found
+ """
+
+ logger = newLogger()
+ logger.print_step('The following files will be reviewed:', 'π')
+ logger.print_log(*[str(path.real_path.relative_to(definitions.ROOT_DIR)) for path in artifact_paths])
+
+ getter = FunctionCallGetter()
+
+ feature_set: VisitableFeatureSet = getter.build_function_call_tree(artifact_paths)
+ logger.print_step(f"Found {len(feature_set.features)} features:", "π¦")
+ logger.print_log(*[feature.mc_path for feature in feature_set.features])
+
+ logger.print_step("Checking the header of all the called functionβ¦", "β³")
+
+ visitor = Visitor([VisitableFunction, VisitableFeature], partial(callback, logger))
+ visitor.visit(feature_set)
+
+ return logger.print_done()
+
+
+def callback(logger: Logger, function: VisitableFunction | VisitableFeature) -> bool:
+
+ if isinstance(function, VisitableFeature):
+ content = cast(VisitableFeature, function).content
+ if not definitions.FEATURE_TAG_NAMESPACE in content:
+ logger.print_err(f"No metadata in feature tag '{function.mc_path}'. End points analyze will be ignored.")
+
+ else:
+ header_with_doc = re.escape(function_header.get("%REGEX%", True)).replace("\\\n", "\n").replace("%REGEX%", re.escape(definitions.DOC_URL) + r"([-a-zA-Z0-9@:%_\+.~#?&//=]*)")
+ header_without_doc = function_header.get()
+
+ content: list[str] = [line for line in function.content if line != ""]
+
+ splitted_header_without_doc = header_without_doc.splitlines()
+ splitted_header_with_doc = header_with_doc.splitlines()
+ current_header_if_doc = "\n".join([line.strip() for line in content[0:len(splitted_header_with_doc)]])
+ current_header_if_no_doc = "\n".join([line.strip() for line in content[0:len(splitted_header_without_doc)]])
+
+ if current_header_if_no_doc != header_without_doc and not re.match(header_with_doc, current_header_if_doc):
+ logger.print_err(f"Invalid header in function '{function.mc_path}' (feature {function.feature.mc_path}).")
diff --git a/scripts/src/definitions.py b/scripts/src/definitions.py
new file mode 100644
index 0000000000..175599dd8f
--- /dev/null
+++ b/scripts/src/definitions.py
@@ -0,0 +1,17 @@
+import yaml
+from pathlib import Path
+
+
+ROOT_DIR: Path = Path(__file__).parent.parent.parent.resolve()
+
+with open(ROOT_DIR / ".env.yml", 'r') as file:
+ config = yaml.safe_load(file)
+ MC_VERSION = config['mc_version']
+ GENERATED_PATH: Path = ROOT_DIR / config['generated_path']
+ BUILD_PATH: Path = ROOT_DIR / config['build_path']
+ DATAPACKS_PATH: Path = ROOT_DIR / config['datapacks_path']
+ WORLD_PATH: Path = ROOT_DIR / config['world_path']
+ BOOKSHELF_LIBS: list[str] = config['bookshelf_libs']
+ METADATA_FOLDER: str = config['metadata_folder']
+ DOC_URL: str = config['doc_url']
+ FEATURE_TAG_NAMESPACE: str = config['feature_tag_namespace']
diff --git a/scripts/src/files_provider/__init__.py b/scripts/src/files_provider/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/scripts/src/files_provider/_types.py b/scripts/src/files_provider/_types.py
new file mode 100644
index 0000000000..4f82291306
--- /dev/null
+++ b/scripts/src/files_provider/_types.py
@@ -0,0 +1,98 @@
+from abc import ABC, abstractmethod
+from dataclasses import dataclass
+from enum import Enum
+import json
+import os
+from pathlib import Path
+from typing import Optional
+
+
+class Artifact[T](ABC):
+ namespace: str
+ name: str
+ real_path: Path
+ mc_path: str
+ _content: T
+
+ def __init__(self, real_path: Path, mc_path: str) -> None:
+ self.real_path = real_path
+ self.mc_path = mc_path
+ self.namespace = mc_path.split(":")[0]
+ self.name = mc_path.split(":")[1]
+ self._content = None
+
+ @abstractmethod
+ def __load__(self) -> T:
+ pass
+
+ def get_content(self) -> T:
+ if not self._content:
+ self._content = self.__load__()
+ return self._content
+
+
+class Function(Artifact[list[str]]):
+
+ def __init__(self, real_path: Path, mc_path: str):
+ super().__init__(real_path, mc_path)
+
+ def __load__(self) -> list[str]:
+ with open(self.real_path, mode='r', encoding='utf-8') as f:
+ return f.readlines()
+
+
+class Tag(Artifact[dict]):
+
+ def __init__(self, real_path: Path, mc_path: str):
+ super().__init__(real_path, mc_path)
+
+ def __load__(self) -> dict:
+ with open(self.real_path, mode='r', encoding='utf-8') as f:
+ return json.load(f)
+
+
+class Feature(Artifact[dict]):
+
+ def __init__(self, real_path: Path, mc_path: str, content: dict):
+ super().__init__(real_path, mc_path)
+ self._content = content
+
+ def __load__(self) -> dict:
+ return self._content
+
+
+@dataclass
+class DataCategoryValue:
+ path_fragment: str
+ clazz: type
+ extension: str
+ mc_path_prefix: str
+
+class DataCategory(Enum):
+ FUNCTION = DataCategoryValue("functions", Function, ".mcfunction", "#")
+ FUN_TAG = DataCategoryValue(os.path.join("tags", "functions"), Tag, ".json", "")
+
+
+def build_artifact(real_path: Path) -> Optional[Artifact]:
+ from files_provider.utils import parse_real_path
+ result = parse_real_path(real_path)
+ if result:
+ return result[1].value.clazz(real_path, result[0])
+ return None
+
+
+@dataclass
+class Module:
+ namespace: str
+ path: Path
+
+ def __hash__(self):
+ return hash(self.path)
+
+@dataclass
+class Datapack:
+ name: str
+ path: Path
+
+ def __hash__(self):
+ return hash(self.path)
diff --git a/scripts/src/files_provider/files_provider.py b/scripts/src/files_provider/files_provider.py
new file mode 100644
index 0000000000..7a483c72a5
--- /dev/null
+++ b/scripts/src/files_provider/files_provider.py
@@ -0,0 +1,119 @@
+from dataclasses import dataclass
+import os
+from pathlib import Path
+import subprocess
+from typing import Callable
+import definitions
+import glob
+from typing import cast
+from files_provider._types import *
+from files_provider.utils import get_module_path
+
+
+
+class Manager[T]:
+
+ _content: list[T]
+
+ def map[U](self, function: Callable[[T], U]):
+ self.files = list(map(function, self.files))
+
+ def filter(self, function: Callable[[T], bool]):
+ self.files = list(filter(function, self.files))
+
+ def get(self) -> list[T]:
+ return self._content
+
+
+@dataclass
+class DatapackManager(Manager[Datapack]):
+
+ def __init__(self, datapacks: list[Datapack]):
+ self._content = datapacks
+
+ def get_modules(self) -> 'ModuleManager':
+ modules: list[Module] = list()
+ for datapack in self._content:
+ modules.extend([ Module(module.name, Path(module.path)) for module in os.scandir(datapack.path / 'data') if module.is_dir() and module.name != 'minecraft'])
+ return ModuleManager(modules)
+
+ def get_separated_modules(self) -> list['ModuleManager']:
+ modules = self.get_modules().get()
+ result: list[ModuleManager] = []
+ for module in modules:
+ result.append(ModuleManager([module]))
+ return result
+
+
+@dataclass
+class ModuleManager(Manager[Module]):
+
+ def __init__(self, modules: list[Module]):
+ self._content = modules
+
+ def get_all_features(self) -> list[Feature]:
+ features: list[Feature] = []
+ for module in self._content:
+ for file in glob.glob(pathname="tags/functions/**/*.json", root_dir=module.path, recursive=True):
+ artifact = build_artifact(Path(os.path.join(module.path, file)))
+ artifact.get_content()
+ bookshelf_tag = cast(Tag, artifact)._content.get(definitions.FEATURE_TAG_NAMESPACE, None)
+ if isinstance(artifact, Tag) and bookshelf_tag != None and bookshelf_tag.get('feature', False):
+ features.append(Feature(artifact.real_path, artifact.mc_path, artifact._content))
+ return features
+
+
+class ArtifactManager(Manager[Artifact]):
+
+ def __init__(self, artifacts: list[Artifact]):
+ self._content = artifacts
+
+ def get_modules(self) -> ModuleManager:
+ modules: set[Module] = set()
+ for artifact in self._content:
+ modules.add(Module(artifact.namespace, get_module_path(artifact.namespace, artifact.real_path)))
+ return ModuleManager(modules)
+
+ def get_features(self) -> list[Feature]:
+ features: list[Feature] = []
+ for artifact in self._content:
+ if isinstance(artifact, Tag) and cast(Tag, artifact).get_content().get('values', False):
+ features.append(artifact)
+ return features
+
+class FilePathsManager(Manager[Path]):
+
+ def __init__(self, files: list[Path]):
+ self._content = files
+
+ def only_dp_artifacts(self) -> ArtifactManager:
+ file_paths: list[Path] = list(filter(lambda file_path: file_path.relative_to(definitions.ROOT_DIR).parts[0] == 'datapacks', self._content))
+ result: list[Artifact] = []
+ for file_path in file_paths:
+ artifact = build_artifact(file_path)
+ if artifact:
+ result.append(artifact)
+ return ArtifactManager(result)
+
+
+ignore_datapacks = ["Bookshelf Examples", "Bookshelf World"]
+
+class FilesProvider:
+
+ def get_all_files_not_upstreamed(self) -> FilePathsManager:
+ headSHA = subprocess.check_output("git rev-parse HEAD", encoding='utf-8', shell=True)
+ baseSHA = subprocess.check_output("git rev-parse origin/master", encoding='utf-8', shell=True)
+
+ gitLogCommand = f"git diff --name-only {baseSHA}...{headSHA}"
+ result = subprocess.check_output(gitLogCommand, encoding='utf-8', shell=True)
+ return FilePathsManager(list(map(lambda path: Path(os.path.join(definitions.ROOT_DIR, path)), result.splitlines())))
+
+ def datapacks(self) -> DatapackManager:
+ return DatapackManager([ Datapack(datapack.name, Path(datapack.path)) for datapack in os.scandir(definitions.DATAPACKS_PATH) if datapack.is_dir() and datapack.name not in ignore_datapacks])
+
+ def separated_datapacks(self) -> list[DatapackManager]:
+ datapacks = self.datapacks().get()
+ result: list[DatapackManager] = []
+ for datapack in datapacks:
+ result.append(DatapackManager([datapack]))
+ return result
diff --git a/scripts/src/files_provider/utils.py b/scripts/src/files_provider/utils.py
new file mode 100644
index 0000000000..47cb6a3eee
--- /dev/null
+++ b/scripts/src/files_provider/utils.py
@@ -0,0 +1,42 @@
+
+
+import os
+from pathlib import Path
+import sys
+from typing import Optional
+import definitions
+from files_provider.files_provider import DataCategory
+
+
+def get_module_path(namespace: str, path: Path) -> Path:
+ """return the path of the module containing the file"""
+ return Path(path.as_posix().split(namespace)[0] + namespace)
+
+
+def parse_real_path(path: Path) -> tuple[str, 'DataCategory']:
+ """return Minecraft path and the data category (function, function tag, β¦)"""
+ # Get path relative to root of the repository
+ relative_path = path.relative_to(definitions.ROOT_DIR)
+ # Split path such as fourth element is the namespace and fifth is the remaining path
+ splitted_path = str(relative_path).split(os.path.sep, 4)
+ namespace = splitted_path[3]
+ relative_path = splitted_path[4]
+ for category in DataCategory:
+ if relative_path.startswith(category.value.path_fragment):
+ fragment_path = relative_path.removeprefix(category.value.path_fragment + os.path.sep).removesuffix(category.value.extension)
+ return namespace.removeprefix(category.value.mc_path_prefix) + ':' + fragment_path, category
+
+
+def resolve_function_path(path: str) -> Optional[Path]:
+ if path.startswith("#"):
+ path = path.removeprefix("#")
+ category = DataCategory.FUN_TAG
+ else:
+ category = DataCategory.FUNCTION
+ partial_path = path.replace(":", os.path.sep + category.value.path_fragment + os.path.sep)
+ for lib in definitions.BOOKSHELF_LIBS:
+ path = os.path.join(definitions.DATAPACKS_PATH, lib, "data", partial_path + category.value.extension)
+ if os.path.exists(path):
+ return Path(path)
+ print(f"β function '{os.path.abspath(path)}' cannot be resolved", file=sys.stderr)
+ raise
diff --git a/scripts/src/function_call_getter/__init__.py b/scripts/src/function_call_getter/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/scripts/src/function_call_getter/_types.py b/scripts/src/function_call_getter/_types.py
new file mode 100644
index 0000000000..d0af7bd2a5
--- /dev/null
+++ b/scripts/src/function_call_getter/_types.py
@@ -0,0 +1,132 @@
+from dataclasses import dataclass
+from pathlib import Path
+from typing import Callable, Type
+from files_provider._types import Function, Artifact, Tag, Feature, build_artifact
+from files_provider.utils import resolve_function_path
+
+@dataclass
+class Visitable:
+ def __accept__(self, visitor: 'Visitor') -> None:
+ pass
+
+@dataclass
+class VisitableFeatureSet(Visitable):
+ features: list['VisitableFeature']
+
+ def __accept__(self, visitor: 'Visitor') -> None:
+ for feature in self.features:
+ visitor.visit(feature)
+
+@dataclass
+class VisitableFeature(Visitable):
+ name: str
+ namespace: str
+ mc_path: str
+ called_functions: list['VisitableAbstractFunction']
+ real_path: Path
+ content: dict
+ __browsed_functions__: list[Function]
+ __unread_functions__: list[Function]
+
+ def __init__(self, feature: Feature):
+ self.name = feature.name
+ self.namespace = feature.namespace
+ self.mc_path = feature.mc_path
+ self.real_path = feature.real_path
+ self.called_functions = []
+ self.__browsed_functions__ = []
+ self.content = feature._content
+ self.__unread_functions__ = [build_artifact(resolve_function_path(fun)) for fun in feature._content.get('values', False)]
+
+ def __accept__(self, visitor: 'Visitor') -> None:
+ for called_function in self.called_functions:
+ visitor.visit(called_function)
+
+ def __hash__(self):
+ return hash(self.mc_path)
+
+ def __eq__(self, other: object):
+ if not isinstance(other, VisitableFeature):
+ return False
+ return self.mc_path == other.mc_path
+
+@dataclass
+class VisitableAbstractFunction(Visitable):
+ namespace: str
+ mc_path: str
+ real_path: str
+ feature: VisitableFeature
+ called_functions: list['VisitableAbstractFunction']
+
+ def __init__(self, artifact: Artifact, feature: VisitableFeature):
+ self.real_path = artifact.real_path
+ self.namespace = artifact.namespace
+ self.mc_path = artifact.mc_path
+ self.feature = feature
+ self.called_functions = []
+
+ def __accept__(self, visitor: 'Visitor') -> None:
+ for called_function in self.called_functions:
+ visitor.visit(called_function)
+
+
+@dataclass
+class VisitableFunction(VisitableAbstractFunction):
+
+ content: list[str]
+
+ def __init__(self, function: Function, feature: VisitableFeature):
+ super().__init__(function, feature)
+ self.content = function.get_content()
+
+ def __hash__(self):
+ return hash(self.real_path)
+
+ def __eq__(self, other: object):
+ if not isinstance(other, VisitableAbstractFunction):
+ return False
+ return self.real_path == other.real_path
+
+@dataclass
+class VisitableFunctionTag(VisitableAbstractFunction):
+
+ content: dict
+
+ def __init__(self, tag: Tag, feature: VisitableFeature):
+ super().__init__(tag, feature)
+ self.content = tag.get_content()
+
+ def __hash__(self):
+ return hash(self.real_path)
+
+ def __eq__(self, other: object):
+ if not isinstance(other, VisitableAbstractFunction):
+ return False
+ return self.real_path == other.real_path
+
+def build_abstract_function(artifact: Artifact, feature: VisitableFeature) -> VisitableAbstractFunction:
+ if isinstance(artifact, Tag):
+ return VisitableFunctionTag(artifact, feature)
+ else:
+ return VisitableFunction(artifact, feature)
+
+class Visitor:
+
+ match_types: list[Type[Visitable]] = []
+ callback: Callable[[Visitable], None]
+
+ def __init__(self, match_types: list[Type[Visitable]] , callback: Callable[[Visitable], bool]):
+ """
+ :param match_types: List of types on which the callback will be called
+ :param callback: Callback function, takes a Visitable and return a boolean. If the return is True, prune the visit
+ """
+ self.callback = callback
+ self.match_types = match_types
+
+ def visit(self, visitable: Visitable) -> None:
+ prune = False
+ for match_type in self.match_types:
+ if isinstance(visitable, match_type):
+ prune = self.callback(visitable)
+ if not prune:
+ visitable.__accept__(self)
diff --git a/scripts/src/function_call_getter/function_call_getter.py b/scripts/src/function_call_getter/function_call_getter.py
new file mode 100644
index 0000000000..426faaf003
--- /dev/null
+++ b/scripts/src/function_call_getter/function_call_getter.py
@@ -0,0 +1,70 @@
+import os
+import json
+import re
+from function_call_getter._types import *
+from files_provider.utils import resolve_function_path
+
+regex = r"^(?!#)(?:\s|\S)*?function(?:\s|\\)*(#?[a-z0-9-\/:_\.$\(\)]+)"
+
+class FunctionCallGetter:
+
+ error = False
+ __cache__: VisitableFeatureSet = None
+
+ def build_function_call_tree(self, features: list[Feature]) -> VisitableFeatureSet:
+ self.error = False
+
+ if not self.__cache__:
+
+ visitableFeatures: list[VisitableFeature] = []
+
+ for feature in features:
+ feature = VisitableFeature(feature)
+ for fun in feature.__unread_functions__:
+ function = build_abstract_function(fun, feature)
+ feature.called_functions.append(function)
+ self.browse_function_locator(function)
+ visitableFeatures.append(feature)
+
+ self.__cache__ = VisitableFeatureSet(visitableFeatures)
+
+ return self.__cache__
+
+
+ def browse_function_locator(self, function: VisitableAbstractFunction):
+ if function.mc_path not in function.feature.__browsed_functions__:
+ if isinstance(function, VisitableFunctionTag):
+ self.browse_function_tag(function)
+ else:
+ self.browse_function(function)
+
+ def browse_function_tag(self, function: VisitableFunctionTag):
+ with open(os.path.join(function.real_path), encoding="utf-8") as file:
+ content = json.load(file).get('values', False)
+ for fun in content:
+ artifact: Artifact = build_artifact(resolve_function_path(fun))
+ artifact.get_content()
+ self.browse_function_locator(build_abstract_function(artifact, function.feature))
+
+
+ def browse_function(self, function: VisitableFunction):
+ result: list[VisitableAbstractFunction] = []
+ # Inline multi-lines commands
+ content = "\n".join(function.content)
+ content = content.replace(r"\\\s*" + os.linesep, "")
+ function.content = content.splitlines()
+ for line in function.content:
+ funs: list[str] = re.findall(regex, line)
+ for fun in funs:
+ # Remove function call with macro variable inside
+ if "$" not in fun:
+ from files_provider._types import build_artifact
+ artifact: Artifact = build_artifact(resolve_function_path(fun))
+ artifact.get_content()
+ visitable_called_function: VisitableAbstractFunction = build_abstract_function(artifact, function.feature)
+ result.append(visitable_called_function)
+ function.called_functions = result
+ function.feature.__browsed_functions__.append(function.mc_path)
+
+ for fun in result:
+ self.browse_function_locator(fun)
diff --git a/scripts/src/generators/__init__.py b/scripts/src/generators/__init__.py
new file mode 100644
index 0000000000..30553edf27
--- /dev/null
+++ b/scripts/src/generators/__init__.py
@@ -0,0 +1,2 @@
+import generators.biome
+import generators.block
diff --git a/scripts/generators/biome.py b/scripts/src/generators/biome.py
similarity index 95%
rename from scripts/generators/biome.py
rename to scripts/src/generators/biome.py
index 88298cda8f..81a8b198fc 100644
--- a/scripts/generators/biome.py
+++ b/scripts/src/generators/biome.py
@@ -2,9 +2,9 @@
import sys
from pathlib import Path
-from contracts import DataProcessor
+from generators.contracts import DataProcessor
-from processors.biome import (
+from generators.processors.biome import (
CreateTagsFiles,
CreatePredicatesFiles,
CreateTypesFile,
diff --git a/scripts/generators/block.py b/scripts/src/generators/block.py
similarity index 97%
rename from scripts/generators/block.py
rename to scripts/src/generators/block.py
index a701a5a599..4239184bed 100644
--- a/scripts/generators/block.py
+++ b/scripts/src/generators/block.py
@@ -4,9 +4,9 @@
from pathlib import Path
from dataclasses import dataclass
-from contracts import DataProcessor
+from generators.contracts import DataProcessor
-from processors.block import (
+from generators.processors.block import (
CreateTagsFiles,
CreateBlockTableFile,
CreateBlockTypesFile,
diff --git a/scripts/generators/contracts/__init__.py b/scripts/src/generators/contracts/__init__.py
similarity index 100%
rename from scripts/generators/contracts/__init__.py
rename to scripts/src/generators/contracts/__init__.py
diff --git a/scripts/generators/contracts/processor.py b/scripts/src/generators/contracts/processor.py
similarity index 100%
rename from scripts/generators/contracts/processor.py
rename to scripts/src/generators/contracts/processor.py
diff --git a/scripts/src/generators/processors/__init__.py b/scripts/src/generators/processors/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/scripts/generators/processors/biome.py b/scripts/src/generators/processors/biome.py
similarity index 93%
rename from scripts/generators/processors/biome.py
rename to scripts/src/generators/processors/biome.py
index dc869dd8fd..9c5417577d 100644
--- a/scripts/generators/processors/biome.py
+++ b/scripts/src/generators/processors/biome.py
@@ -1,6 +1,7 @@
import math
from collections import defaultdict
-from contracts import DataProcessor
+from generators.contracts import DataProcessor
+import utils.function_header as function_header
class CreateTagsFiles(DataProcessor):
@@ -45,7 +46,11 @@ class CreateTypesFile(DataProcessor):
def process(self, data):
print("\033[90mβοΈ Generating types table function\033[0m")
+ header = function_header.get()
+
self.write_text(self.target, [
+ header,
+ "",
"# This file was automatically generated, do not edit it",
(f"data modify storage bs:const biome set value "
f"{self.render(self.format(data))}")
diff --git a/scripts/generators/processors/block.py b/scripts/src/generators/processors/block.py
similarity index 97%
rename from scripts/generators/processors/block.py
rename to scripts/src/generators/processors/block.py
index d34222bb97..e2edfe9fc3 100644
--- a/scripts/generators/processors/block.py
+++ b/scripts/src/generators/processors/block.py
@@ -1,5 +1,6 @@
import math
-from contracts import DataProcessor
+from generators.contracts import DataProcessor
+import utils.function_header as function_header
ITEMS_DICT = {
"minecraft:wall_torch": "minecraft:torch",
@@ -85,6 +86,8 @@
"minecraft:cave_vines_plant": "minecraft:glow_berries",
}
+header = function_header.get()
+
def get_item(type: str, data) -> dict:
value = ITEMS_DICT.get(type, type)
return {"item":value} if value in data.items else {}
@@ -109,6 +112,8 @@ def process(self, data):
print("\033[90mβοΈ Generating types table function\033[0m")
self.write_text(self.target, [
+ header,
+ ""
"# This file was automatically generated, do not edit it",
(f"data modify storage bs:const block.table set value "
f"{self.render(self.format(data))}"),
@@ -127,6 +132,8 @@ def process(self, data):
print("\033[90mβοΈ Generating types table function\033[0m")
self.write_text(self.target, [
+ header,
+ ""
"# This file was automatically generated, do not edit it",
(f"data modify storage bs:const block.types set value "
f"{self.render(self.format(data))}"),
@@ -147,6 +154,8 @@ def process(self, data):
print("\033[90mβοΈ Generating types table function\033[0m")
self.write_text(self.target, [
+ header,
+ ""
"# This file was automatically generated, do not edit it",
(f"data modify storage bs:const block.items set value "
f"{self.render(self.format(data))}"),
@@ -168,6 +177,8 @@ def process(self, data):
print("\033[90mβοΈ Generating states table function\033[0m")
self.write_text(self.target, [
+ header,
+ "",
"# This file was automatically generated, do not edit it",
*[
(f"data modify storage bs:const "
@@ -195,6 +206,8 @@ def process(self, data):
for group, states in enumerate(data.groups[1:]):
self.write_text(self.target / f"{group + 1}.mcfunction", [
+ header,
+ "",
"# This file was automatically generated, do not edit it",
*[
(f'execute if block ~ ~ ~ #bs.block:has_state[{name}={value}] run '
diff --git a/scripts/src/logger/__init__.py b/scripts/src/logger/__init__.py
new file mode 100644
index 0000000000..1a3d1b8a31
--- /dev/null
+++ b/scripts/src/logger/__init__.py
@@ -0,0 +1,10 @@
+import os
+from logger.github_logger import GithubLogger
+from logger.logger import Logger
+
+
+def newLogger():
+ if os.getenv('GITHUB_WORKSPACE'):
+ return GithubLogger()
+ else:
+ return Logger()
diff --git a/scripts/src/logger/github_logger.py b/scripts/src/logger/github_logger.py
new file mode 100644
index 0000000000..60ab3657e8
--- /dev/null
+++ b/scripts/src/logger/github_logger.py
@@ -0,0 +1,161 @@
+from logger.logger import Logger
+
+
+from colored import Style, Fore
+from logger.utils import get_caller
+
+
+class GithubLogger:
+
+ __level = 0
+ __context_error: list[int] = [0]
+
+ __errors = 0
+ __warnings = 0
+
+ def print_err(self, *messages: list[str], count: bool = True):
+ """
+ Print an error message, in red.
+ :param messages: the messages to print
+ :param count: if True, increment the error count
+ """
+ if count:
+ self.__errors += len(messages)
+ self.__context_error[-1] += len(messages)
+ caller, line = get_caller()
+ for m in messages:
+ self.__print(f"::error file={caller},line={line}::{m}")
+
+ def print_success(self, *messages: list[str]):
+ """
+ Print a success message, in green.
+ :param messages: the messages to print
+ """
+ self.print_custom(*messages, color=Fore.green)
+
+ def print_warn(self, *messages: list[str], count: bool = True):
+ """
+ Print a warning message, in yellow.
+ :param messages: the messages to print
+ """
+ if count:
+ self.__warnings += len(messages)
+ caller, line = get_caller()
+ for m in messages:
+ self.__print(f"::warning file={caller},line={line}::{m}")
+
+ def print_log(self, *messages: list[str]):
+ """
+ Print a log message, in dark gray.
+ :param messages: the messages to print
+ """
+ self.print_custom(*messages)
+
+
+ def print_step(self, message: str, emoji: str, manage_indent: bool = True):
+ """
+ Print a message with an emoji.
+ A step automatically increment the indentation for the next logs until the end_step() method is called or a new step is printed.
+ :param message: the message to print
+ :param emoji: the emoji to display
+ :param manage_indent: if False, do not update the indentation.
+ """
+ if manage_indent:
+ if self.__level > 0:
+ print("::endgroup::")
+ self.unindent()
+ print(f"::group::{emoji} {message}")
+ self.indent()
+ else:
+ self.print_custom(message, emoji=emoji)
+
+ def print_custom(self, *messages: list[str], emoji: str = "", color: str = ""):
+ """
+ Print a message with an emoji.
+ :param message: the message to print
+ :param emoji: the emoji to display
+ """
+ for m in messages:
+ self.__print(f"{color}{emoji} {m}{Style.reset}")
+
+ def end_step(self):
+ """
+ End the current step.
+ Descrease the indentation.
+ """
+ self.unindent()
+
+ def indent(self):
+ """
+ Increase the indentation.
+ """
+ self.__level += 1
+
+
+ def unindent(self):
+ """
+ Decrease the indentation.
+ """
+ if self.__level > 0:
+ self.__level -= 1
+
+ def new_error_context(self):
+ """
+ Create a new error context.
+ An error context has its own error count.
+ """
+ self.__context_error.append(0)
+
+ def reduce_error_context(self) -> bool:
+ """
+ Pop the last error context and add the errors number of this one to the previous error context.
+ :return: True if the popped error context has errors.
+ """
+ result = self.__context_error[-1] > 0
+ if len(self.__context_error) >= 2:
+ self.__context_error[-2] += self.__context_error[-1]
+ self.__context_error.pop()
+ return result
+
+ def reset(self):
+ """
+ Reset the different counters of the logger as well as the indentation level.
+ """
+ self.__level = 0
+ self.__errors = 0
+ self.__warnings = 0
+ self.__context_error = [0]
+
+ def has_level_errors(self) -> bool:
+ """
+ :return: True if the current error context has errors.
+ """
+ return self.__context_error[-1] > 0
+
+ def print_done(self):
+ """
+ Print the result of the process with the number of errors and warnings.
+ """
+ prefix = ""
+ message = "Done"
+ if self.__errors > 0:
+ prefix = "β "
+ message += f" with {self.__errors} errors"
+ if self.__warnings > 0:
+ message += f" and {self.__warnings} warnings"
+ elif self.__warnings > 0:
+ prefix = "β οΈ "
+ message += f" with {self.__warnings} warnings"
+ else:
+ prefix = "β
"
+ if self.__errors == 0 and self.__warnings == 0:
+ message += "!"
+ else:
+ message += "."
+ self.__level = 0
+ print("::endgroup::")
+ self.__print("::notice::" + prefix + message)
+ return self.__errors > 0
+
+ def __print(self, message: str):
+ print(message)
diff --git a/scripts/src/logger/logger.py b/scripts/src/logger/logger.py
new file mode 100644
index 0000000000..af7ef42c8e
--- /dev/null
+++ b/scripts/src/logger/logger.py
@@ -0,0 +1,152 @@
+from colored import Style, Fore
+
+
+multiplier = 3
+
+class Logger:
+
+ __level = 0
+ __context_error: list[int] = [0]
+
+ __errors = 0
+ __warnings = 0
+
+ def print_err(self, *messages: list[str], count: bool = True):
+ """
+ Print an error message, in red.
+ :param messages: the messages to print
+ :param count: if True, increment the error count
+ """
+ if count:
+ self.__errors += len(messages)
+ self.__context_error[-1] += len(messages)
+ self.print_custom(*messages, color=Fore.red)
+
+ def print_success(self, *messages: list[str]):
+ """
+ Print a success message, in green.
+ :param messages: the messages to print
+ """
+ self.print_custom(*messages, color=Fore.green)
+
+ def print_warn(self, *messages: list[str], count: bool = True):
+ """
+ Print a warning message, in yellow.
+ :param messages: the messages to print
+ """
+ if count:
+ self.__warnings += len(messages)
+ self.print_custom(*messages, color=Fore.yellow)
+
+ def print_log(self, *messages: list[str]):
+ """
+ Print a log message, in dark gray.
+ :param messages: the messages to print
+ """
+ self.print_custom(*messages, color=Fore.dark_gray)
+
+
+ def print_step(self, message: str, emoji: str, manage_indent: bool = True):
+ """
+ Print a message with an emoji.
+ A step automatically increment the indentation for the next logs until the end_step() method is called or a new step is printed.
+ :param message: the message to print
+ :param emoji: the emoji to display
+ :param manage_indent: if False, do not update the indentation.
+ """
+ if manage_indent:
+ self.unindent()
+ self.print_custom(message, emoji=emoji)
+ self.indent()
+ else:
+ self.print_custom(message, emoji=emoji)
+
+ def print_custom(self, *messages: list[str], emoji: str = "", color: str = ""):
+ """
+ Print a message with an emoji.
+ :param message: the message to print
+ :param emoji: the emoji to display
+ """
+ for m in messages:
+ self.__print(f"{color}{emoji} {m}{Style.reset}")
+
+ def end_step(self):
+ """
+ End the current step.
+ Descrease the indentation.
+ """
+ self.unindent()
+
+ def indent(self):
+ """
+ Increase the indentation.
+ """
+ self.__level += 1
+
+
+ def unindent(self):
+ """
+ Decrease the indentation.
+ """
+ if self.__level > 0:
+ self.__level -= 1
+
+ def new_error_context(self):
+ """
+ Create a new error context.
+ An error context has its own error count.
+ """
+ self.__context_error.append(0)
+
+ def reduce_error_context(self) -> bool:
+ """
+ Pop the last error context and add the errors number of this one to the previous error context.
+ :return: True if the popped error context has errors.
+ """
+ result = self.__context_error[-1] > 0
+ if len(self.__context_error) >= 2:
+ self.__context_error[-2] += self.__context_error[-1]
+ self.__context_error.pop()
+ return result
+
+ def reset(self):
+ """
+ Reset the different counters of the logger as well as the indentation level.
+ """
+ self.__level = 0
+ self.__errors = 0
+ self.__warnings = 0
+ self.__context_error = [0]
+
+ def has_level_errors(self) -> bool:
+ """
+ :return: True if the current error context has errors.
+ """
+ return self.__context_error[-1] > 0
+
+ def print_done(self):
+ """
+ Print the result of the process with the number of errors and warnings.
+ """
+ prefix = ""
+ message = "Done"
+ if self.__errors > 0:
+ prefix = "β "
+ message += f" with {self.__errors} errors"
+ if self.__warnings > 0:
+ message += f" and {self.__warnings} warnings"
+ elif self.__warnings > 0:
+ prefix = "β οΈ "
+ message += f" with {self.__warnings} warnings"
+ else:
+ prefix = "β
"
+ if self.__errors == 0 and self.__warnings == 0:
+ message += "!"
+ else:
+ message += "."
+ self.__level = 0
+ self.__print(prefix + message)
+ return self.__errors > 0
+
+ def __print(self, message: str):
+ print(" " * self.__level * multiplier + message)
diff --git a/scripts/src/logger/utils.py b/scripts/src/logger/utils.py
new file mode 100644
index 0000000000..5f1eebaf77
--- /dev/null
+++ b/scripts/src/logger/utils.py
@@ -0,0 +1,19 @@
+import inspect
+from pathlib import Path
+import definitions
+
+
+_offset = 3
+
+def get_caller() -> tuple[str, int] | None:
+ i = 0
+ path = None
+ lineno = -1
+ for frame in inspect.stack():
+ if frame.filename.startswith(str(definitions.ROOT_DIR)):
+ i += 1
+ path = Path(frame.filename).relative_to(definitions.ROOT_DIR).as_posix()
+ lineno = frame.lineno
+ if i == _offset:
+ break
+ return path, lineno
diff --git a/scripts/src/metadata/JSONEncoder.py b/scripts/src/metadata/JSONEncoder.py
new file mode 100644
index 0000000000..620724c769
--- /dev/null
+++ b/scripts/src/metadata/JSONEncoder.py
@@ -0,0 +1,42 @@
+from dataclasses import asdict, is_dataclass
+import json
+from pathlib import Path
+from typing import cast
+import definitions
+
+from metadata.build_metadata import DatapackMetadata, FeatureMetadata, ModuleMetadata
+
+
+def _cleandict(d, keep_path=False):
+ if isinstance(d, dict):
+ return {k: _cleandict(v, True) for k, v in d.items() if v is not None and ("path" not in k or (keep_path and k == "module_path"))}
+ elif isinstance(d, list):
+ return [_cleandict(v, True) for v in d]
+ else:
+ return d
+
+
+class DCJSONEncoder(json.JSONEncoder):
+ def default(self, o):
+ if is_dataclass(o):
+ return _cleandict(asdict(o))
+ if type(o) is set:
+ return list(o)
+ return super().default(o)
+
+
+class ModuleJSONEncoder(DCJSONEncoder):
+ def default(self, o):
+ if isinstance(o, ModuleMetadata):
+ dic = _cleandict(asdict(o))
+ dic["features"] = [f.mc_path for f in o.features]
+ return dic
+ return super().default(o)
+
+
+class ManifestJSONEncoder(DCJSONEncoder):
+ def default(self, o):
+ if isinstance(o, DatapackMetadata):
+ return _cleandict(asdict(o), True)
+ return super().default(o)
+
diff --git a/scripts/src/metadata/__init__.py b/scripts/src/metadata/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/scripts/src/metadata/build_metadata.py b/scripts/src/metadata/build_metadata.py
new file mode 100644
index 0000000000..5d55ace5b6
--- /dev/null
+++ b/scripts/src/metadata/build_metadata.py
@@ -0,0 +1,135 @@
+from dataclasses import dataclass
+import json
+from pathlib import Path
+from typing import Tuple
+from check_feature_tag.check_feature_tag import check, check_feature
+from files_provider._types import Datapack
+from files_provider.files_provider import DatapackManager, FilesProvider, ModuleManager
+from logger import newLogger
+from logger.logger import Logger
+from metadata.check_module_metadata_file import check_module
+from metadata.compute_dependencies import Dependencies, ModuleDependencies, compute_dependencies
+from files_provider._types import Feature
+
+@dataclass
+class Updated:
+ date: str
+ version: str
+
+@dataclass
+class FeatureMetadata:
+ name: str
+ documentation: str
+ authors: list[str]
+ contributors: list[str] | None
+ created: Updated
+ updated: Updated
+ dependencies: list[str] | None
+ weak_dependencies: list[str] | None
+ feature_path: Path
+ mc_path: str
+
+@dataclass
+class ModuleMetadata:
+ name: str
+ display_name: str
+ description: str
+ documentation: str
+ authors: list[str]
+ contributors: list[str] | None
+ icon: str | None
+ module_path: Path
+ dependencies: list[str] | None
+ weak_dependencies: list[str] | None
+ features: list[FeatureMetadata]
+
+@dataclass
+class DatapackMetadata:
+ name: str
+ description: str
+ pack_format: int
+ modules: list[ModuleMetadata]
+
+
+def build(logger: Logger = newLogger()) -> list[DatapackMetadata]:
+ managers = FilesProvider().separated_datapacks()
+ datapack_metadata = []
+
+ for manager in managers:
+ metadata = build_datapack_metadata(manager, logger)
+ if metadata:
+ datapack_metadata.append(metadata)
+
+ return datapack_metadata
+
+
+def build_datapack_metadata(manager: DatapackManager, logger: Logger) -> DatapackMetadata:
+ datapack = manager.get()[0]
+ logger.new_error_context()
+ result = get_mcmeta_infos(datapack, logger)
+ if not logger.reduce_error_context():
+ format, description = result
+ modules = [build_module_metadata(module_manager, logger) for module_manager in manager.get_separated_modules()]
+ modules = [module for module in modules if module]
+ return DatapackMetadata(datapack.name, description, format, modules)
+
+
+def get_mcmeta_infos(datapack: Datapack, logger: Logger) -> Tuple[int, str]:
+ with open(datapack.path / "pack.mcmeta") as file:
+ content: dict = json.load(file)
+ if content.get("pack", None) != None:
+ if content["pack"].get("pack_format", None) == None:
+ logger.print_err(f"'pack_format' is missing in the pack.mcmeta of '{datapack.name}'")
+ elif content["pack"].get("description", None) == None:
+ logger.print_err(f"'description' is missing in the pack.mcmeta of '{datapack.name}'")
+ return content["pack"]["pack_format"], content["pack"]["description"]
+ logger.print_err(f"'pack' is missing in the pack.mcmeta of '{datapack.name}'")
+
+
+def build_module_metadata(manager: ModuleManager, logger: Logger) -> ModuleMetadata:
+ module = manager.get()[0]
+ logger.new_error_context()
+ result = check_module(module, logger)
+
+ if not logger.reduce_error_context():
+ documentation = result.get("documentation", None)
+ description = result.get("description", None)
+ display_name = result.get("display_name", None)
+ authors = result.get("authors", None)
+ contributors = result.get("contributors", None)
+ icon = result.get("icon", None)
+ if icon:
+ icon = module.path / '.metadata' / icon
+
+ module_dep: ModuleDependencies = compute_dependencies(manager, result.get("weak_dependencies", []), logger)
+ authors = set(authors) if authors else set()
+ contributors = set(contributors) if contributors else set()
+
+ feature_metadata: list[FeatureMetadata] = []
+ for feature in manager.get_all_features():
+ met = build_features_metadata(feature, module_dep.features_dependencies.get(feature.mc_path, Dependencies(None, None)), logger)
+ if met:
+ feature_metadata.append(met)
+ authors.update(met.authors)
+ if met.contributors:
+ contributors.update(met.contributors)
+
+ if len(contributors) == 0:
+ contributors = None
+ else:
+ contributors = list(contributors)
+
+ authors = list(authors)
+ return ModuleMetadata(name=module.namespace, display_name=display_name, description=description, documentation=documentation, icon=icon, contributors=contributors, authors=authors, dependencies=module_dep.dependencies.dependencies, weak_dependencies=module_dep.dependencies.weak_dependencies, features=feature_metadata, module_path=module.path)
+
+
+def build_features_metadata(feature: Feature, dependencies: Dependencies, logger: Logger) -> FeatureMetadata:
+ logger.new_error_context()
+ result = check_feature(feature, logger)
+ if not logger.reduce_error_context():
+ documentation = result.get("documentation", None)
+ authors = result.get("authors", None)
+ contributors = result.get("contributors", None)
+ created = Updated(result.get("created", {}).get("date", None), result.get("created", {}).get("minecraft_version", None))
+ updated = Updated(result.get("updated", {}).get("date", None), result.get("updated", {}).get("minecraft_version", None))
+ return FeatureMetadata(name=feature.name, documentation=documentation, authors=authors, contributors=contributors, created=created, updated=updated, dependencies=dependencies.dependencies, weak_dependencies=dependencies.weak_dependencies, feature_path=feature.real_path, mc_path=feature.mc_path)
diff --git a/scripts/src/metadata/check_generated_metadata.py b/scripts/src/metadata/check_generated_metadata.py
new file mode 100644
index 0000000000..5f618681d9
--- /dev/null
+++ b/scripts/src/metadata/check_generated_metadata.py
@@ -0,0 +1,48 @@
+from functools import partial
+from pathlib import Path
+import definitions
+from logger import newLogger
+from metadata.build_metadata import DatapackMetadata, build
+from metadata.generate_metadata import adapt_for_manifest, generate_feature_metadata, generate_manifest, generate_module_metadata, sort_metadata
+from files_provider.files_provider import Feature, ModuleManager
+from function_call_getter.function_call_getter import FunctionCallGetter
+from function_call_getter._types import VisitableFeatureSet
+from logger.logger import Logger
+
+
+def check(module_manager: ModuleManager) -> bool:
+ logger = newLogger()
+ logger.print_step(f'The following modules will be analyzed:', 'π§©')
+ logger.print_log(*[str(module.path.relative_to(definitions.ROOT_DIR)) for module in module_manager.get()])
+
+
+ features: list[Feature] = module_manager.get_all_features()
+ getter = FunctionCallGetter()
+
+ feature_set: VisitableFeatureSet = getter.build_function_call_tree(features)
+ logger.print_step(f"Found {len(feature_set.features)} features:", "π¦")
+ logger.print_log(*[tag.mc_path for tag in feature_set.features])
+
+ logger.print_step("Computing their metadata fileβ¦", "β³")
+
+ metadata: list[DatapackMetadata] = build(logger)
+ sort_metadata(metadata)
+ generate_manifest(adapt_for_manifest(metadata), partial(__comparing, logger))
+ for datapack in metadata:
+ for module in datapack.modules:
+ generate_module_metadata(module, partial(__comparing, logger))
+ generate_feature_metadata(module.features, module.module_path, partial(__comparing, logger))
+
+ return logger.print_done()
+
+
+
+def __comparing(logger: Logger, content: str, path: Path):
+ if not path.exists():
+ logger.print_err(f"Metadata file '{path.relative_to(definitions.ROOT_DIR)}' was not generated. Please run the generator and retry after.")
+ else:
+ with open(path, "r") as file:
+ if file.read() != content:
+ logger.print_err(f"Metadata file '{path.relative_to(definitions.ROOT_DIR)}' is outdated. Please run the generator and retry after.")
+ else:
+ logger.print_success(f"Metadata file '{path.relative_to(definitions.ROOT_DIR)}' is up-to-date.")
diff --git a/scripts/src/metadata/check_module_metadata_file.py b/scripts/src/metadata/check_module_metadata_file.py
new file mode 100644
index 0000000000..b1d6c44bef
--- /dev/null
+++ b/scripts/src/metadata/check_module_metadata_file.py
@@ -0,0 +1,115 @@
+import json
+from pathlib import Path
+import re
+from typing import Callable
+from logger import newLogger
+from logger.logger import Logger
+from files_provider.files_provider import Module
+import definitions
+
+
+def check_icon(name: str, path: str, logger: Logger) -> bool:
+ icon_path = path / ".metadata" / name
+ if not icon_path.exists():
+ logger.print_err(f"Icon '{name}' is missing at path '{path.relative_to(definitions.ROOT_DIR)}'.")
+ return False
+ return True
+
+
+lines = {
+ "name": {
+ "syntax": r"^bs\.[a-z0-1-_]+$",
+ "optional": False
+ },
+ "display_name": {
+ "syntax": r"^.*$",
+ "optional": False
+ },
+ "description": {
+ "syntax": r"^.*$",
+ "optional": False
+ },
+ "icon": {
+ "syntax": r"^.*$",
+ "validator": check_icon,
+ "optional": True,
+ "warning_if_missing": True
+ },
+ "authors": {
+ "optional": True,
+ "can_be_empty": False,
+ "elements": {
+ "syntax": r"^.+$"
+ }
+ },
+ "contributors": {
+ "optional": True,
+ "can_be_empty": False,
+ "elements": {
+ "syntax": r"^.+$"
+ }
+ },
+ "documentation": {
+ "syntax": re.escape(definitions.DOC_URL) + r".*$",
+ "optional": False
+ },
+ "weak_dependencies": {
+ "elements": {
+ "syntax": r"^bs\.[a-z0-1-_]+$"
+ },
+ "optional": True
+ }
+}
+
+def check_metadata_json(yaml: dict, path: Path, logger: Logger):
+ relative_path = path.relative_to(definitions.ROOT_DIR)
+ for key, value in lines.items():
+ key_value = yaml.get(key, None)
+ if not key_value and not value["optional"]:
+ logger.print_err(f"Metadata file for module '{relative_path}' is missing required key '{key}'.")
+ elif key_value:
+ if not value.get("can_be_empty", False) and len(key_value) == 0:
+ logger.print_err(f"Metadata file for module '{relative_path}' has an empty value for key '{key}'.")
+ elif value.get("elements", None):
+ for element in key_value:
+ __check_metadata_value(key, element, value["elements"]["syntax"], path, value.get("validator", None), logger)
+ else:
+ __check_metadata_value(key, key_value, value["syntax"], path, value.get("validator", None), logger)
+ else:
+ if value.get("warning_if_missing", False):
+ logger.print_warn(f"Metadata file for module '{relative_path}' is missing optional key '{key}'. You should consider adding it.")
+
+
+def __check_metadata_value(key: str, value: str, syntax: str, path: str, validator: Callable[[str, str, Logger], bool] | None, logger: Logger):
+ if not re.match(syntax, value):
+ relative_path = path.relative_to(definitions.ROOT_DIR)
+ logger.print_err(f"Metadata file for module '{relative_path}' has an invalid value for '{key}'. Found '{value}', should match regex '{syntax}'.")
+ if validator:
+ validator(value, path, logger)
+
+
+
+def check_module(module: Module, logger: Logger) -> dict:
+ metadata_path = module.path / ".metadata" / "module.json"
+ path = module.path.relative_to(definitions.ROOT_DIR)
+ if not metadata_path.exists():
+ logger.print_err(f"Metadata file not found for module '{path}'.")
+ else:
+ with open(metadata_path, "r") as f:
+ content = json.load(f)
+ check_metadata_json(content, module.path, logger)
+ if not logger.has_level_errors():
+ return content
+
+
+def check(modules: list[Module]) -> bool:
+ logger = newLogger()
+ logger.print_step('The following modules will be analyzed:', 'π§©')
+ logger.print_log(*[str(module.path.relative_to(definitions.ROOT_DIR)) for module in modules])
+
+ logger.print_step("Checking their metadata fileβ¦", "β³")
+ for module in modules:
+ logger.print_log(f"Checking module '{module.path.relative_to(definitions.ROOT_DIR)}'.")
+ check_module(module, logger)
+
+ return logger.print_done()
diff --git a/scripts/src/metadata/compute_dependencies.py b/scripts/src/metadata/compute_dependencies.py
new file mode 100644
index 0000000000..7f265b0147
--- /dev/null
+++ b/scripts/src/metadata/compute_dependencies.py
@@ -0,0 +1,106 @@
+from dataclasses import dataclass
+from functools import partial
+from pathlib import Path
+from typing import Tuple
+from files_provider.files_provider import Feature, ModuleManager
+from function_call_getter._types import VisitableFeatureSet, VisitableFunctionTag, Visitor, VisitableFeature
+from function_call_getter.function_call_getter import FunctionCallGetter
+from files_provider._types import DataCategory
+import definitions
+from logger.logger import Logger
+
+
+@dataclass
+class Dependencies:
+ dependencies: list[str]
+ weak_dependencies: list[str]
+
+@dataclass
+class ModuleDependencies:
+ dependencies: Dependencies
+ features_dependencies: dict[str, Dependencies]
+
+
+def compute_dependencies(module_manager: ModuleManager, weak_dependencies: set[str], logger: Logger) -> ModuleDependencies:
+ """
+ :param module_manager: The module manager to compute the dependencies from. The module manager should contains only one module.
+ :return: A tuple containing the module dependencies and the weak dependencies.
+ """
+ if len(module_manager.get()) == 1:
+ features: list[Feature] = module_manager.get_all_features()
+ getter = FunctionCallGetter()
+ feature_set: VisitableFeatureSet = getter.build_function_call_tree(features)
+
+ module_dependencies: set[str] = set()
+ feature_dependencies: dict[str, FeatureReferences] = {}
+ visitor = Visitor([VisitableFunctionTag], partial(__compute_references, feature_dependencies, module_dependencies))
+ visitor.visit(feature_set)
+
+ # Structure features dependencies
+ features_dependencies: dict[str, Dependencies] = {}
+ for feature, feature_references in feature_dependencies.items():
+ dependencies, weak_dep = __compute_dependencies([dep.namespace for dep in feature_references.dependencies], weak_dependencies, feature, "feature", True, logger)
+ features_dependencies[feature] = Dependencies(list(dependencies) if dependencies else None, list(weak_dep) if weak_dependencies else None)
+
+ # Structure module dependencies
+ dependencies, weak_dependencies = __compute_dependencies(module_dependencies, weak_dependencies, module_manager.get()[0].namespace, "module", False, logger)
+ return ModuleDependencies(Dependencies(list(dependencies) if dependencies else None, list(weak_dependencies) if weak_dependencies else None), features_dependencies)
+
+@dataclass
+class FeatureReferences:
+ mc_path: str
+ dependencies: set[VisitableFunctionTag]
+
+ def __hash__(self):
+ return hash(self.mc_path)
+
+ def __eq__(self, other):
+ if not isinstance(other, FeatureReferences):
+ return False
+ return self.mc_path == other.mc_path
+
+@dataclass
+class ModuleReferences:
+ path: Path
+ dependencies: set[VisitableFunctionTag]
+ features: set[FeatureReferences]
+
+def __compute_dependencies(dependencies: set[str], weak_dependencies: set[str], name: str, type: str, check_non_use: bool, logger: Logger) -> Tuple[set[str], set[str]]:
+ if not dependencies:
+ return None, None
+ if not weak_dependencies:
+ return dependencies, None
+
+ weak_dependencies = set(weak_dependencies)
+ used_weak_dependencies = set()
+ deps = set(dependencies)
+ for tag in dependencies:
+ if tag in weak_dependencies:
+ used_weak_dependencies.add(tag)
+ deps.remove(tag)
+ diff = weak_dependencies - used_weak_dependencies
+ if check_non_use and len(diff) > 0:
+ logger.print_warn(f"{type.capitalize()} {name} has weak dependencies that are not used: {",".join(diff)}.")
+ weak_dependencies = weak_dependencies
+ return deps or None, weak_dependencies or None
+
+
+
+def __get_feature_references(feature_dependencies: dict[str, ModuleReferences], feature: VisitableFeature, module_path: Path) -> FeatureReferences:
+ feature_references = feature_dependencies.get(feature, None)
+ if feature_references is None:
+ feature_references = FeatureReferences(feature.mc_path, set())
+ feature_dependencies[feature.mc_path] = feature_references
+ return feature_references
+
+def __compute_references(feature_dependencies: dict[str, FeatureReferences], module_dependencies: set[str], tag: VisitableFunctionTag) -> bool:
+ module_path = Path(str(tag.real_path).split(DataCategory.FUN_TAG.value.path_fragment)[0])
+
+ bookshelf_tag = tag.content.get(definitions.FEATURE_TAG_NAMESPACE, None)
+ if bookshelf_tag != None and bookshelf_tag.get('feature', False) and tag.feature.namespace != tag.namespace.split(":")[0]:
+ # Add to feature dependencies
+ feature_references = __get_feature_references(feature_dependencies, tag.feature, module_path)
+ feature_references.dependencies.add(tag)
+ # Add to module dependencies
+ module_dependencies.add(tag.namespace)
+ return False
diff --git a/scripts/src/metadata/generate_metadata.py b/scripts/src/metadata/generate_metadata.py
new file mode 100644
index 0000000000..e9149eec78
--- /dev/null
+++ b/scripts/src/metadata/generate_metadata.py
@@ -0,0 +1,74 @@
+
+import copy
+import json
+import os
+from pathlib import Path
+from typing import Callable
+from metadata.JSONEncoder import DCJSONEncoder, ManifestJSONEncoder, ModuleJSONEncoder
+from metadata.build_metadata import DatapackMetadata, FeatureMetadata, ModuleMetadata, build
+import definitions
+
+def generate():
+ metadata: list[DatapackMetadata] = build()
+ sort_metadata(metadata)
+ generate_manifest(adapt_for_manifest(metadata), __write_json)
+ for datapack in metadata:
+ for module in datapack.modules:
+ generate_module_metadata(module, __write_json)
+ generate_feature_metadata(module.features, module.module_path, __write_json)
+
+
+def generate_manifest(metadata: list[DatapackMetadata], consumer: Callable[[str, Path], None]):
+ path = definitions.GENERATED_PATH / "manifest.json"
+ consumer(__generate(metadata, ManifestJSONEncoder), path)
+
+
+def generate_module_metadata(metadata: ModuleMetadata, consumer: Callable[[str, Path], None]):
+ path = metadata.module_path / ".metadata" / "generated" / "module.json"
+ consumer(__generate(metadata, ModuleJSONEncoder), path)
+
+
+def generate_feature_metadata(metadata: list[FeatureMetadata], module_path: Path, consumer: Callable[[str, Path], None]):
+ path = module_path / ".metadata" / "generated" / "features.json"
+ consumer(__generate(metadata, DCJSONEncoder), path)
+
+
+def __generate(obj, encoder: type[json.JSONEncoder] = DCJSONEncoder):
+ return json.dumps(obj, indent=2, cls=encoder, ensure_ascii=False)
+
+def __write_json(json: str, path: Path):
+ os.makedirs(path.parent, exist_ok=True)
+ with open(path, 'w') as file:
+ file.write(json)
+
+def sort_metadata(metadata: list[DatapackMetadata]):
+ metadata.sort(key=lambda x: x.name)
+ for datapack in metadata:
+ datapack.modules.sort(key=lambda x: x.name)
+ if datapack.modules:
+ for module in datapack.modules:
+ module.features.sort(key=lambda x: x.name)
+ if module.dependencies:
+ module.dependencies.sort()
+ if module.weak_dependencies:
+ module.weak_dependencies.sort()
+ module.authors.sort()
+ if module.contributors:
+ module.contributors.sort()
+ if module.features:
+ for feature in module.features:
+ if feature.dependencies:
+ feature.dependencies.sort()
+ if feature.weak_dependencies:
+ feature.weak_dependencies.sort()
+ feature.authors.sort()
+ if feature.contributors:
+ feature.contributors.sort()
+
+
+def adapt_for_manifest(metadata: list[DatapackMetadata]):
+ copy_metadata = copy.deepcopy(metadata)
+ for datapack in copy_metadata:
+ for module in datapack.modules:
+ module.module_path = module.module_path.relative_to(definitions.ROOT_DIR).as_posix()
+ return copy_metadata
diff --git a/scripts/src/packtest/__init__.py b/scripts/src/packtest/__init__.py
new file mode 100644
index 0000000000..b6705ab679
--- /dev/null
+++ b/scripts/src/packtest/__init__.py
@@ -0,0 +1,21 @@
+import hashlib
+import tempfile
+import re
+
+from pathlib import Path
+from packtest.assets import Assets
+from packtest.runner import Runner
+
+def run(mc_version: str, datapacks_path: str):
+ assets = Assets(mc_version)
+ runner = Runner(assets)
+ tempdir = "bs-" + hashlib.sha1(assets.packtest_url.encode('utf-8')).hexdigest()
+
+ with runner.run(Path(datapacks_path), Path(tempfile.gettempdir()) / tempdir) as process:
+ for line in iter(process.stdout.readline, ""):
+ if match := re.search(r"::error title=(.*?)::(.*)", line):
+ print("\033[1m\033[91m β {}\033[0m: {}".format(*match.groups()))
+ if err_count := process.wait():
+ print(f"π₯ {err_count} required tests failed :(")
+ else:
+ print("β
All required tests passed :)")
diff --git a/scripts/src/packtest/assets.py b/scripts/src/packtest/assets.py
new file mode 100644
index 0000000000..559bcdfd68
--- /dev/null
+++ b/scripts/src/packtest/assets.py
@@ -0,0 +1,42 @@
+import requests
+from pathlib import Path
+
+class Assets:
+ """
+ Utility for managing assets required to run Minecraft Unit Tests.
+ """
+
+ def __init__(self, mc_version: str) -> None:
+ self.mc_version = mc_version
+ self.fabric_server_url = get_fabric_url(mc_version)
+ self.fabric_api_url = get_modrinth_url("fabric-api", mc_version)
+ self.packtest_url = get_modrinth_url("packtest", mc_version)
+
+ def download(self, target: Path):
+ for url, filepath in [
+ (self.fabric_server_url, target / "server.jar"),
+ (self.fabric_api_url, target / "mods/fabric-api.jar"),
+ (self.packtest_url, target / "mods/packtest.jar"),
+ ]:
+ if not filepath.exists():
+ print(f"\033[93mπ Downloading\033[0m [{url}]")
+ response = requests.get(url)
+ response.raise_for_status()
+ filepath.parent.mkdir(parents=True, exist_ok=True)
+ filepath.write_bytes(response.content)
+
+
+def get_fabric_url(mc_version: str) -> str:
+ response = requests.get(f"https://meta.fabricmc.net/v2/versions/loader/{mc_version}")
+ response.raise_for_status()
+ versions = response.json()
+ return f'https://meta.fabricmc.net/v2/versions/loader/{mc_version}/{versions[0]["loader"]["version"]}/1.0.1/server/jar'
+
+
+def get_modrinth_url(project_id: str, mc_version: str) -> str:
+ response = requests.get(f"https://api.modrinth.com/v2/project/{project_id}/version")
+ response.raise_for_status()
+ versions = response.json()
+ if versions := [version for version in versions if mc_version in version["game_versions"]]:
+ return versions[0]["files"][0]["url"]
+ raise RuntimeError(f"Could not find a version for {project_id} that matches the MC version: {mc_version}")
diff --git a/scripts/src/packtest/runner.py b/scripts/src/packtest/runner.py
new file mode 100644
index 0000000000..1e370c3f84
--- /dev/null
+++ b/scripts/src/packtest/runner.py
@@ -0,0 +1,38 @@
+import os
+import platform
+import subprocess
+
+from dataclasses import dataclass
+from packtest.assets import Assets
+from pathlib import Path
+
+@dataclass
+class Runner:
+ """
+ Utility for setting up and running Minecraft Unit Tests.
+ """
+ assets: Assets
+
+ def run(self, datapacks: Path, target: Path) -> subprocess.Popen:
+ self.assets.download(target)
+ (target / "world/data/command_storage_bs.dat").unlink(True)
+ (target / "world/data/scoreboard.dat").unlink(True)
+ create_universal_symlink(datapacks, target / "world/datapacks")
+ (target / "allowed_symlinks.txt").write_text(str(datapacks))
+
+ print("π§ͺ Running test server")
+ return subprocess.Popen(
+ "java -Xmx2G -Dpacktest.auto -Dpacktest.auto.annotations -jar server.jar nogui",
+ stdout=subprocess.PIPE,
+ universal_newlines=True,
+ shell=True,
+ cwd=target,
+ )
+
+
+def create_universal_symlink(src: Path, dst: Path):
+ if not dst.exists():
+ dst.parent.mkdir(parents=True, exist_ok=True)
+ if platform.system() != 'Windows':
+ return os.symlink(src, dst, target_is_directory=True)
+ subprocess.check_call(['mklink', '/J', str(dst), str(src)], shell=True)
diff --git a/scripts/src/utils/function_header.py b/scripts/src/utils/function_header.py
new file mode 100644
index 0000000000..408aeaa3cf
--- /dev/null
+++ b/scripts/src/utils/function_header.py
@@ -0,0 +1,10 @@
+from datetime import datetime
+import os
+from pathlib import Path
+from jinja2 import Environment, FileSystemLoader
+
+
+def get(documentation: str = None, is_feature: bool = False) -> str:
+ env = Environment(loader=FileSystemLoader(os.path.join(Path(__file__).parent / "templates")))
+ template = env.get_template("header.jinja")
+ return template.render(year=datetime.now().year, doc=documentation, is_feature=is_feature).replace("\r\n", "\n").strip()
diff --git a/scripts/src/utils/templates/header.jinja b/scripts/src/utils/templates/header.jinja
new file mode 100644
index 0000000000..6540dc99a9
--- /dev/null
+++ b/scripts/src/utils/templates/header.jinja
@@ -0,0 +1,18 @@
+# ------------------------------------------------------------------------------------------------------------
+# Copyright (c) {{ year }} Gunivers
+#
+# This file is part of the Bookshelf project (https://github.com/Gunivers/Bookshelf).
+#
+# This source code is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Conditions:
+# - You may use this file in compliance with the MPL v2.0
+# - Any modifications must be documented and disclosed under the same license
+#
+# For more details, refer to the MPL v2.0.
+{%- if is_feature %}
+#
+# Documentation of the feature: {{ doc }}
+{%- endif %}
+# ------------------------------------------------------------------------------------------------------------