diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e1551db1aa..fc4632d671 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,6 +9,9 @@ on: env: VERSION: '1.20' COMMIT_MSG: ${{ github.event.head_commit.message }} + TEST_FABRIC_SERVER: https://meta.fabricmc.net/v2/versions/loader/1.20.4/0.15.3/0.11.2/server/jar + TEST_FABRIC_API: https://cdn.modrinth.com/data/P7dR8mSH/versions/JMCwDuki/fabric-api-0.92.0%2B1.20.4.jar + TEST_PACKTEST: https://cdn.modrinth.com/data/XsKUhp45/versions/18smpIeE/packtest-1.6-mc1.20.4.jar jobs: build: @@ -29,8 +32,8 @@ jobs: if: github.event_name == 'pull_request' run: git fetch origin ${{ github.base_ref }} - - name: Set up Python 3.10 - uses: actions/setup-python@v2 + - name: Set up Python + uses: actions/setup-python@v5 with: python-version: '3.10' @@ -41,7 +44,7 @@ jobs: - name: Setup cache id: cached-poetry-dependencies - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: .venv key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }} @@ -66,7 +69,7 @@ jobs: - name: Upload artifact if: github.event_name == 'pull_request' - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: 'Modules for pull request #${{ github.event.number }}' path: ${{ github.workspace }}/release/${{ env.VERSION }}/ @@ -87,3 +90,56 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} directory: release branch: release + + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Python 3.10 + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Install Poetry + uses: snok/install-poetry@v1.2.1 + with: + virtualenvs-in-project: true + + - name: Setup cache + id: cached-poetry-dependencies + uses: actions/cache@v4 + with: + path: .venv + key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }} + + - name: Install dependencies + if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' + run: poetry install + + - name: Build all modules for tests + run: poetry run beet -p beet-test.yaml -l ${{ env.LOG_LEVEL }} build + env: + LOG_LEVEL: ${{ runner.debug == 1 && 'DEBUG' || 'INFO'}} + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Download server files + run: | + curl -o server.jar $TEST_FABRIC_SERVER + mkdir mods + curl -o mods/fabric-api.jar $TEST_FABRIC_API + curl -o mods/packtest.jar $TEST_PACKTEST + + - name: Copy packs to world + run: | + mkdir -p world/datapacks + cp out/gm4_*.zip world/datapacks + + - name: Run test server + run: | + java -Xmx2G -Dpacktest.auto -Dpacktest.auto.annotations -jar server.jar nogui diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 429de4ca32..bd5bc568d0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -176,6 +176,9 @@ kill @s ### Guidebook Pages Each Gamemode 4 module must include guidebook pages to aid in the explaination and progression of the module. Details on how to add a section to the guidebook can be found in [`gm4_guidebook/CONTRIBUTING.md`](https://github.com/Gamemode4Dev/GM4_Datapacks/blob/master/gm4_guidebook/CONTRIBUTING.md). +### Tests +Automated tests for modules should be added in the `data/gm4_module_id/tests` folder. The tests will automatically run in GitHub Actions when you submit a PR. For local development and for the full documentation, see the [PackTest](https://github.com/misode/packtest) project. + ### Submitting your module Make sure to credit all relevant people in `beet.yaml`. Most modules credit the creator (`Creator`), updaters (`Updated by`) and the icon designer (`Icon Design`), however, you may add credits for any work relevant to the module. Each credits section consists of an array of strings, which hold the names of the contributors. To add a link to your social media site of choice add an entry to `contributors.json`. diff --git a/base/data/gm4/structures/test_box.nbt b/base/data/gm4/structures/test_box.nbt new file mode 100644 index 0000000000..176c397908 Binary files /dev/null and b/base/data/gm4/structures/test_box.nbt differ diff --git a/base/data/gm4/structures/test_platform.nbt b/base/data/gm4/structures/test_platform.nbt new file mode 100644 index 0000000000..383437667b Binary files /dev/null and b/base/data/gm4/structures/test_platform.nbt differ diff --git a/base/data/gm4/structures/test_tube.nbt b/base/data/gm4/structures/test_tube.nbt new file mode 100644 index 0000000000..d47c16d194 Binary files /dev/null and b/base/data/gm4/structures/test_tube.nbt differ diff --git a/base/data/gm4/tags/blocks/waterloggable.json b/base/data/gm4/tags/blocks/waterloggable.json index 87d19dd632..ee3178431e 100644 --- a/base/data/gm4/tags/blocks/waterloggable.json +++ b/base/data/gm4/tags/blocks/waterloggable.json @@ -1,5 +1,6 @@ { "values": [ + "#minecraft:rails", "#minecraft:campfires", "#minecraft:candles", "#minecraft:fences", @@ -50,6 +51,7 @@ "minecraft:light_gray_stained_glass_pane", "minecraft:lime_stained_glass_pane", "minecraft:magenta_stained_glass_pane", + "minecraft:mangrove_propagule", "minecraft:mangrove_roots", "minecraft:medium_amethyst_bud", "minecraft:orange_stained_glass_pane", diff --git a/beet-dev.yaml b/beet-dev.yaml index 834478f7c4..6fd443bfd0 100644 --- a/beet-dev.yaml +++ b/beet-dev.yaml @@ -1,3 +1,6 @@ +ignore: + - gm4/skin_cache.json + pipeline: - gm4.plugins.list_modules - gm4.plugins.manifest.create diff --git a/beet-release.yaml b/beet-release.yaml index 997ee73c7d..f3c72703be 100644 --- a/beet-release.yaml +++ b/beet-release.yaml @@ -12,6 +12,7 @@ pipeline: - gm4_guidebook.generate_guidebooks.load_page_data - gm4_guidebook.generate_guidebooks.load_custom_recipes pipeline: + - gm4.plugins.test.strip_tests - gm4.plugins.manifest.write_updates - gm4.plugins.manifest.write_credits - require: [beet.contrib.copy_files] diff --git a/beet-test.yaml b/beet-test.yaml new file mode 100644 index 0000000000..725f2f1cc9 --- /dev/null +++ b/beet-test.yaml @@ -0,0 +1,26 @@ +pipeline: + - gm4.plugins.list_modules + - gm4.plugins.manifest.create + - gm4.plugins.manifest.update_patch + - gm4.plugins.output.clear_release + - gm4.plugins.manifest.write_meta + - broadcast: 'gm4_*' + extend: 'beet.yaml' + require: + - gm4.plugins.output.test + - gm4.plugins.player_heads + - gm4_guidebook.generate_guidebooks.load_page_data + - gm4_guidebook.generate_guidebooks.load_custom_recipes + - gm4.plugins.test.load_tests + pipeline: + - gm4.plugins.manifest.write_updates + - gm4.plugins.write_mcmeta + meta: + mecha: + formatting: + layout: preserve + nbt_compact: True + +meta: + autosave: + link: false diff --git a/gm4/commands.py b/gm4/commands.py index cef3d84250..53e72573e1 100644 --- a/gm4/commands.py +++ b/gm4/commands.py @@ -17,7 +17,7 @@ @click.option("-l", "--link", metavar="WORLD", help="Link the project before watching.") @click.option("-c", "--clean", is_flag=True, help="Clean the output folder.") @click.option("--log", default="INFO", type=str, help="Set the logger level") -def dev(ctx: click.Context, project: Project, modules: tuple[str], watch: bool, reload: bool, link: str | None, clean: bool, log: int | str): +def dev(ctx: click.Context, project: Project, modules: tuple[str, ...], watch: bool, reload: bool, link: str | None, clean: bool, log: int | str): """Build or watch modules for development.""" modules = tuple(m if m.startswith("gm4_") else f"gm4_{m}" for m in modules) @@ -45,11 +45,13 @@ def dev(ctx: click.Context, project: Project, modules: tuple[str], watch: bool, "gm4.plugins.player_heads", "gm4_guidebook.generate_guidebooks.load_page_data", "gm4_guidebook.generate_guidebooks.load_custom_recipes", + "gm4.plugins.test.load_tests" ] if reload else [ "gm4.plugins.output", "gm4.plugins.player_heads", "gm4_guidebook.generate_guidebooks.load_page_data", "gm4_guidebook.generate_guidebooks.load_custom_recipes", + "gm4.plugins.test.load_tests" ], "pipeline": [ "gm4.plugins.write_mcmeta" @@ -84,7 +86,7 @@ def clean(): @click.argument("modules", nargs=-1) @click.option("-w", "--watch", is_flag=True, help="Watch the project directory and build on file changes.") @click.option("-c", "--clean", is_flag=True, help="Clean the output folder.") -def readme_gen(ctx: click.Context, project: Project, modules: tuple[str], watch: bool, clean: bool): +def readme_gen(ctx: click.Context, project: Project, modules: tuple[str, ...], watch: bool, clean: bool): """Generates all README files for manual uplaoad""" modules = tuple(m if m.startswith("gm4_") else f"gm4_{m}" for m in modules) diff --git a/gm4/plugins/manifest.py b/gm4/plugins/manifest.py index 29155d48e9..a50a24b145 100644 --- a/gm4/plugins/manifest.py +++ b/gm4/plugins/manifest.py @@ -5,7 +5,7 @@ from functools import cache from pathlib import Path from typing import Any, Optional -from pydantic import Extra, BaseModel +from pydantic.v1 import Extra, BaseModel import yaml from beet import Context, JsonFile, PluginOptions, TextFile, load_config, InvalidProjectConfig @@ -194,7 +194,7 @@ def update_patch(ctx: Context): logger.info(f"Feature update for {id}, setting version to {version}") else: version.patch = last_ver.patch + 1 # type: ignore - logger.info(f"Updating {id} patch to {version.patch}") + logger.info(f"Updating {id} patch to {version.patch}") # type: ignore pack.version = str(version) diff --git a/gm4/plugins/output.py b/gm4/plugins/output.py index 14f4afdcd4..7e1a534d30 100644 --- a/gm4/plugins/output.py +++ b/gm4/plugins/output.py @@ -43,6 +43,20 @@ def beet_default(ctx: Context): ) +def test(ctx: Context): + """Saves the zipped datapack to the ./out folder in it's exit phase. + Should be first in pipeline to properly wrap all other plugins cleanup phases""" + out_dir = Path("out") + + yield # wait for exit phase, after other plugins cleanup + + ctx.data.save( + path=out_dir / ctx.project_id, + overwrite=True, + zipped=True, + ) + + def release(ctx: Context): """ Saves the zipped datapack and metadata to the ./release/{version} folder. diff --git a/gm4/plugins/player_heads.py b/gm4/plugins/player_heads.py index 0c48f51a05..efe0ed8f95 100644 --- a/gm4/plugins/player_heads.py +++ b/gm4/plugins/player_heads.py @@ -10,7 +10,7 @@ from typing import Any, Callable, ClassVar, Generator import requests -from beet import Context, FileDeserialize, JsonFile, PngFile +from beet import Context, FileDeserialize, JsonFile, PngFile, TextFile from mecha import CompilationUnit, Diagnostic, Mecha, MutatingReducer, rule from mecha.ast import ( AstChildren, @@ -221,7 +221,7 @@ def process_json_files(ctx: Context): tf = ctx.inject(SkinNbtTransformer) mc = ctx.inject(Mecha) - def transform_snbt(snbt: str, db_entry_key: str) -> str: + def transform_snbt(snbt: str, db_entry_key: TextFile) -> str: escaped_snbt = snbt.replace("\n", "\\\\n") # NOTE snbt in loot-tables reacts weird to \n characters. Both \n and \\\\n produce the same ingame output (\\n). # gm4 only has one case of \n in loot tables, so this replacement forces \n->\\\\n for the mecha parser to read it right. @@ -239,11 +239,13 @@ def transform_snbt(snbt: str, db_entry_key: str) -> str: for func_list in nested_get(contents, "functions"): f: Callable[[Any], bool] = lambda e: e["function"].removeprefix('minecraft:')=="set_nbt" for i, entry in enumerate(filter(f, func_list)): - entry["tag"] = transform_snbt(entry["tag"], db_entry_key=f"{name}_{i}") + key = TextFile(_content=f"{name}_{i}", source_path=jsonfile.source_path) + entry["tag"] = transform_snbt(entry["tag"], db_entry_key=key) for name, jsonfile in ctx.data.advancements.items(): for i, entry in enumerate(nested_get(jsonfile.data, "icon")): - entry["nbt"] = transform_snbt(entry["nbt"], db_entry_key=f"{name}_{i}") + key = TextFile(_content=f"{name}_{i}", source_path=jsonfile.source_path) + entry["nbt"] = transform_snbt(entry["nbt"], db_entry_key=key) # send any raised diagnostic errors to Mecha for reporting mc.diagnostics.extend(tf.diagnostics) diff --git a/gm4/plugins/prefabs.py b/gm4/plugins/prefabs.py index a608034f5e..1914c0f180 100644 --- a/gm4/plugins/prefabs.py +++ b/gm4/plugins/prefabs.py @@ -1,8 +1,8 @@ from beet import Context, PluginOptions, configurable from beet.contrib.find_replace import find_replace from beet.contrib.rename_files import rename_files -from pydantic import Extra -import nbtlib +from pydantic.v1 import Extra +import nbtlib # type: ignore import re @@ -39,6 +39,6 @@ def structure_deep_rename(ctx: Context, find_namespace: str, repl_namespace: str # rename structure-file references for s in ctx.data.structures: - blocks = ctx.data.structures[s].data["blocks"].snbt() - updated_blocks_data = re.sub(f"{find_namespace}:([a-z0-9_/]+)", f"{repl_namespace}:\\1", blocks) - ctx.data.structures[s].data["blocks"] = nbtlib.parse_nbt(updated_blocks_data) + blocks = ctx.data.structures[s].data["blocks"].snbt() # type: ignore + updated_blocks_data = re.sub(f"{find_namespace}:([a-z0-9_/]+)", f"{repl_namespace}:\\1", blocks) # type: ignore + ctx.data.structures[s].data["blocks"] = nbtlib.parse_nbt(updated_blocks_data) # type: ignore diff --git a/gm4/plugins/test.py b/gm4/plugins/test.py new file mode 100644 index 0000000000..988a2716a8 --- /dev/null +++ b/gm4/plugins/test.py @@ -0,0 +1,18 @@ +from beet import Context, TextFile +from typing import ClassVar, Tuple + + +def load_tests(ctx: Context): + ctx.data.extend_namespace += [TestFile] + + +class TestFile(TextFile): + """Class representing an test function.""" + + scope: ClassVar[Tuple[str, ...]] = ("tests",) + extension: ClassVar[str] = ".mcfunction" + + +def strip_tests(ctx: Context): + for structure in ctx.data.structures.match("*:test_*"): + del ctx.data.structures[structure] diff --git a/gm4/plugins/upgrade_paths.py b/gm4/plugins/upgrade_paths.py index 8e7b9c2a03..b604c37626 100644 --- a/gm4/plugins/upgrade_paths.py +++ b/gm4/plugins/upgrade_paths.py @@ -1,5 +1,5 @@ from beet import Context, Function, configurable, PluginOptions -from pydantic import Extra +from pydantic.v1 import Extra from gm4.plugins.manifest import ManifestCacheModel from gm4.utils import Version, NoneAttribute diff --git a/gm4/plugins/versioning.py b/gm4/plugins/versioning.py index a38708eaae..b13b7308bc 100644 --- a/gm4/plugins/versioning.py +++ b/gm4/plugins/versioning.py @@ -1,7 +1,7 @@ from beet import Context, Function, FunctionTag, PluginOptions, configurable from beet.contrib.rename_files import rename_files from beet.contrib.find_replace import find_replace -from pydantic import Field, Extra +from pydantic.v1 import Field, Extra import warnings from gm4.utils import Version, NoneAttribute import gm4.plugins.manifest # for ManifestCacheModel; a runtime circular dependency diff --git a/gm4_animi_shamir/data/gm4_animi_shamir/tests/keep_items.mcfunction b/gm4_animi_shamir/data/gm4_animi_shamir/tests/keep_items.mcfunction new file mode 100644 index 0000000000..9ccbaf2d8b --- /dev/null +++ b/gm4_animi_shamir/data/gm4_animi_shamir/tests/keep_items.mcfunction @@ -0,0 +1,20 @@ +# @template gm4:test_tube +# @dummy ~1 ~1 ~1 + +give @s golden_leggings{gm4_metallurgy:{active_shamir:"animi"}} +give @s wooden_sword +kill @s + +await entity @e[type=item,distance=..3,nbt={Item:{id:"minecraft:wooden_sword",Count:1b}}] +assert not entity @e[type=item,distance=..3,nbt={Item:{id:"minecraft:golden_leggings",Count:1b}}] + +await delay 1s + +kill @e[type=zombie,distance=..3] +kill @e[type=item,distance=..3] + +await delay 1s + +dummy @s respawn + +await entity @p[nbt={Inventory:[{id:"minecraft:golden_leggings",Count:1b,tag:{gm4_metallurgy:{active_shamir:"animi"}}}]}] diff --git a/gm4_animi_shamir/data/gm4_animi_shamir/tests/smoosh.mcfunction b/gm4_animi_shamir/data/gm4_animi_shamir/tests/smoosh.mcfunction new file mode 100644 index 0000000000..b1b7b25b4c --- /dev/null +++ b/gm4_animi_shamir/data/gm4_animi_shamir/tests/smoosh.mcfunction @@ -0,0 +1,11 @@ +# @template gm4_metallurgy:test_smooshing + +loot spawn ~1.5 ~2.5 ~1.8 loot gm4_animi_shamir:band +summon item ~1.5 ~2.5 ~1.8 {Item:{id:"minecraft:diamond_leggings",Count:1b}} + +await delay 1s + +setblock ~1 ~4 ~1 redstone_block + +await entity @e[type=item,distance=..4,nbt={Item:{id:"minecraft:diamond_leggings",Count:1b,tag:{gm4_metallurgy:{active_shamir:"animi"}}}}] +assert entity @e[type=item,distance=..4,nbt={Item:{id:"minecraft:obsidian",Count:1b}}] diff --git a/gm4_apple_trees/data/gm4_apple_trees/functions/upgrade_path/aec_to_marker.mcfunction b/gm4_apple_trees/data/gm4_apple_trees/functions/upgrade_path/aec_to_marker.mcfunction deleted file mode 100644 index 5b4fdc53d3..0000000000 --- a/gm4_apple_trees/data/gm4_apple_trees/functions/upgrade_path/aec_to_marker.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -# converts sapling aec to marker -# @s = old aec sapling AEC -# located at @s -# run from gm4_apple_trees:verify/upgrade_aec_to_marker - -summon marker ~ ~0.5 ~ {CustomName:'"gm4_apple_tree_sapling"',Tags:["gm4_tree_sapling","gm4_apple_tree_sapling","smithed.entity","smithed.strict","smithed.block"]} -scoreboard players set @e[type=marker,tag=gm4_apple_tree_sapling,distance=..0.1] gm4_sap_growth 2 -scoreboard players set @e[type=marker,tag=gm4_apple_tree_sapling,distance=..0.1] gm4_entity_version 1 -kill @s diff --git a/gm4_apple_trees/data/gm4_apple_trees/functions/verify/upgrade_aec_to_marker.mcfunction b/gm4_apple_trees/data/gm4_apple_trees/functions/verify/upgrade_aec_to_marker.mcfunction deleted file mode 100644 index 6c3c29ff65..0000000000 --- a/gm4_apple_trees/data/gm4_apple_trees/functions/verify/upgrade_aec_to_marker.mcfunction +++ /dev/null @@ -1,6 +0,0 @@ -# verifies that the module is enabled and that the sapling type is from this module -# @s = gm4_tree_sapling marker -# located at @s -# run from gm4_trees-1.0:tick via #gm4_trees:upgrade_aec_to_marker - -execute if score gm4_apple_trees load.status matches 1.. if entity @s[tag=gm4_apple_tree_sapling] run function gm4_apple_trees:upgrade_path/aec_to_marker diff --git a/gm4_apple_trees/data/gm4_trees/tags/functions/upgrade_aec_to_marker.json b/gm4_apple_trees/data/gm4_trees/tags/functions/upgrade_aec_to_marker.json deleted file mode 100644 index 52537042fe..0000000000 --- a/gm4_apple_trees/data/gm4_trees/tags/functions/upgrade_aec_to_marker.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "gm4_apple_trees:verify/upgrade_aec_to_marker" - ] -} diff --git a/gm4_bat_grenades/data/gm4_bat_grenades/tests/boom.mcfunction b/gm4_bat_grenades/data/gm4_bat_grenades/tests/boom.mcfunction new file mode 100644 index 0000000000..d655898683 --- /dev/null +++ b/gm4_bat_grenades/data/gm4_bat_grenades/tests/boom.mcfunction @@ -0,0 +1,7 @@ +# @template gm4:test_box +# @dummy ~3 ~1 ~3 +# @timeout 200 + +summon bat ~3 ~2 ~3 {Tags:[gm4_test_bat]} + +await not entity @e[tag=gm4_test_bat,distance=..10] diff --git a/gm4_beehive_inspector/data/gm4_beehive_inspector/tests/destroy_nest.mcfunction b/gm4_beehive_inspector/data/gm4_beehive_inspector/tests/destroy_nest.mcfunction new file mode 100644 index 0000000000..ceab29d48d --- /dev/null +++ b/gm4_beehive_inspector/data/gm4_beehive_inspector/tests/destroy_nest.mcfunction @@ -0,0 +1,12 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ + +setblock ~1 ~1 ~1 bee_nest[honey_level=3]{Bees:[{MinOccupationTicks:100,EntityData:{id:"minecraft:bee"}}]} +give @s diamond_axe +enchant @s silk_touch + +dummy @s mine ~1 ~1 ~1 + +tp @e[type=item,distance=..4] @s + +await entity @s[nbt={Inventory:[{id:"minecraft:bee_nest",Count:1b,tag:{display:{Lore:['{"translate":"text.gm4.beehive_inspector.bees","fallback":"Bees","extra":[": ",{"text":"1","color":"gray"}],"italic":false,"color":"gray"}','{"translate":"text.gm4.beehive_inspector.honey","fallback":"Honey","extra":[": ",{"text":"3","color":"gray"}],"italic":false,"color":"gray"}']}}}]}] diff --git a/gm4_better_fire/data/gm4_better_fire/tests/explode_creeper.mcfunction b/gm4_better_fire/data/gm4_better_fire/tests/explode_creeper.mcfunction new file mode 100644 index 0000000000..e38e27c893 --- /dev/null +++ b/gm4_better_fire/data/gm4_better_fire/tests/explode_creeper.mcfunction @@ -0,0 +1,6 @@ +# @template gm4:test_platform + +summon creeper ~1.5 ~1 ~1.5 {Health:2} +summon arrow ~1.5 ~4 ~1.5 {Fire:100s,Motion:[0.0,-0.1,0.0]} + +await not entity @e[type=creeper,distance=..4] diff --git a/gm4_better_fire/data/gm4_better_fire/tests/set_fire.mcfunction b/gm4_better_fire/data/gm4_better_fire/tests/set_fire.mcfunction new file mode 100644 index 0000000000..7a157dd968 --- /dev/null +++ b/gm4_better_fire/data/gm4_better_fire/tests/set_fire.mcfunction @@ -0,0 +1,5 @@ +# @template gm4:test_platform + +summon arrow ~1.5 ~4 ~1.5 {Fire:100s,Motion:[0.0,-0.1,0.0]} + +await block ~1 ~1 ~1 fire diff --git a/gm4_block_compressors/data/gm4_block_compressors/functions/main.mcfunction b/gm4_block_compressors/data/gm4_block_compressors/functions/main.mcfunction index b95356ed4b..0351e6a173 100644 --- a/gm4_block_compressors/data/gm4_block_compressors/functions/main.mcfunction +++ b/gm4_block_compressors/data/gm4_block_compressors/functions/main.mcfunction @@ -1,5 +1,3 @@ -# NOTE remove during 1.20 update: updates old machines to include a marker entity -execute as @e[type=armor_stand,tag=gm4_block_compressor] at @s run function gm4_block_compressors:upgrade_machine_stand # process machine execute as @e[type=marker,tag=gm4_block_compressor] at @s run function gm4_block_compressors:process diff --git a/gm4_block_compressors/data/gm4_block_compressors/functions/upgrade_machine_stand.mcfunction b/gm4_block_compressors/data/gm4_block_compressors/functions/upgrade_machine_stand.mcfunction deleted file mode 100644 index a6667f42ca..0000000000 --- a/gm4_block_compressors/data/gm4_block_compressors/functions/upgrade_machine_stand.mcfunction +++ /dev/null @@ -1,22 +0,0 @@ -# updates old machine armor stands -# @s = block_compressor armor stand -# located at @s -# run from gm4_block_compressors:main - -# update entities -execute align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_block_compressor","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_block_compressor"',Rotation:[0.0f,0.0f]} -summon armor_stand ~ ~ ~ {Small:1,NoGravity:1,Marker:1,Invulnerable:1,Invisible:1,Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_block_compressor_display","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_block_compressor_display"',HandItems:[{id:"minecraft:stone_button",Count:1b,tag:{CustomModelData:3420001}},{}],Pose:{RightArm:[0.0f,0.0f,0.0f]},Rotation:[0.0f,0.0f]} -data merge entity @s {Small:0,Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_block_compressor_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_block_compressor_stand"',ArmorItems:[{},{},{},{id:"minecraft:purpur_block",Count:1b,tag:{CustomModelData:3420002}}],HandItems:[{},{}],Pose:{Head:[180f,0f,0f]},Rotation:[0.0f,0.0f]} -tp @s ~ ~-0.565 ~ - -# update dropper -data modify storage gm4_block_compressors:temp block set from block ~ ~ ~ {} -setblock ~ ~ ~ dropper[facing=down] -data modify block ~ ~ ~ {} merge from storage gm4_block_compressors:temp block -data merge block ~ ~ ~ {CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Compression Amount","font":"minecraft:default","color":"#373737"},[{"text":"Compression\\u00a0Amount","font":"gm4:half_scale"},{"text":"Compression\\u00a0Amount","font":"gm4:inverted"},{"text":"Compression\\u00a0Amount","font":"gm4:inverted_spacing"},{"text":"Compression\\u00a0Amount","font":"gm4:offscreen"},{"translate":"gui.gm4.block_compressor","font":"gm4:container_gui","color":"white"},{"text":"Compression\\u00a0Amount","font":"gm4:half_scale"},{"text":"Compression\\u00a0Amount","font":"gm4:inverted"},{"text":"Compression\\u00a0Amount","font":"gm4:inverted_spacing"},{"text":"Compression Amount","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.block_compressor","font":"minecraft:default","color":"#373737"},[{"translate":"container.gm4.block_compressor","font":"gm4:half_scale"},{"translate":"container.gm4.block_compressor","font":"gm4:inverted"},{"translate":"container.gm4.block_compressor","font":"gm4:inverted_spacing"},{"translate":"container.gm4.block_compressor","font":"gm4:offscreen"},{"translate":"gui.gm4.block_compressor","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.block_compressor","font":"gm4:half_scale"},{"translate":"container.gm4.block_compressor","font":"gm4:inverted"},{"translate":"container.gm4.block_compressor","font":"gm4:inverted_spacing"},{"translate":"container.gm4.block_compressor","font":"minecraft:default","color":"#373737"}]]}]}'} -data remove storage gm4_block_compressors:temp block - -# store entity version -scoreboard players set @s gm4_entity_version 1 -execute align xyz positioned ~0.5 ~0.5 ~0.5 run scoreboard players set @e[type=armor_stand,tag=gm4_block_compressor_display,distance=..0.5,limit=1] gm4_entity_version 1 -execute align xyz positioned ~0.5 ~0.5 ~0.5 run scoreboard players set @e[type=marker,tag=gm4_machine_marker,distance=..0.1,limit=1] gm4_entity_version 1 diff --git a/gm4_block_compressors/data/gm4_block_compressors/tests/compress_64.mcfunction b/gm4_block_compressors/data/gm4_block_compressors/tests/compress_64.mcfunction new file mode 100644 index 0000000000..0a8419bfe6 --- /dev/null +++ b/gm4_block_compressors/data/gm4_block_compressors/tests/compress_64.mcfunction @@ -0,0 +1,7 @@ +# @template gm4:test_platform + +execute positioned ~1.5 ~1.5 ~1.5 run function gm4_block_compressors:machine/create +data merge block ~1 ~1 ~1 {Items:[{Slot:0b,id:"minecraft:cobblestone",Count:64b}]} +summon item ~1.5 ~3 ~1.5 {Item:{id:"minecraft:diamond",Count:64b}} + +await entity @e[type=item,nbt={Item:{id:"minecraft:diamond",Count:1b,tag:{gm4_block_compressors:{compression_level:64}}}}] diff --git a/gm4_block_compressors/data/gm4_block_compressors/tests/compress_7.mcfunction b/gm4_block_compressors/data/gm4_block_compressors/tests/compress_7.mcfunction new file mode 100644 index 0000000000..6a2c36e6fc --- /dev/null +++ b/gm4_block_compressors/data/gm4_block_compressors/tests/compress_7.mcfunction @@ -0,0 +1,7 @@ +# @template gm4:test_platform + +execute positioned ~1.5 ~1.5 ~1.5 run function gm4_block_compressors:machine/create +data merge block ~1 ~1 ~1 {Items:[{Slot:0b,id:"minecraft:cobblestone",Count:7b}]} +summon item ~1.5 ~3 ~1.5 {Item:{id:"minecraft:diamond",Count:7b}} + +await entity @e[type=item,nbt={Item:{id:"minecraft:diamond",Count:1b,tag:{gm4_block_compressors:{compression_level:7}}}}] diff --git a/gm4_block_compressors/data/gm4_block_compressors/tests/craft.mcfunction b/gm4_block_compressors/data/gm4_block_compressors/tests/craft.mcfunction new file mode 100644 index 0000000000..35820fe1c7 --- /dev/null +++ b/gm4_block_compressors/data/gm4_block_compressors/tests/craft.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_custom_crafters:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:0b,id:"minecraft:iron_ingot",Count:1b},{Slot:1b,id:"minecraft:purpur_block",Count:1b},{Slot:2b,id:"minecraft:iron_ingot",Count:1b},{Slot:3b,id:"minecraft:piston",Count:1b},{Slot:4b,id:"minecraft:obsidian",Count:1b},{Slot:5b,id:"minecraft:piston",Count:1b},{Slot:6b,id:"minecraft:cobblestone",Count:1b},{Slot:7b,id:"minecraft:cobblestone",Count:1b},{Slot:8b,id:"minecraft:cobblestone",Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:player_head",tag:{gm4_machines:{id:"block_compressor"}},Count:1b}]} diff --git a/gm4_block_compressors/data/gm4_block_compressors/tests/decompress_64.mcfunction b/gm4_block_compressors/data/gm4_block_compressors/tests/decompress_64.mcfunction new file mode 100644 index 0000000000..3d43b56d97 --- /dev/null +++ b/gm4_block_compressors/data/gm4_block_compressors/tests/decompress_64.mcfunction @@ -0,0 +1,7 @@ +# @template gm4:test_platform + +execute positioned ~1.5 ~1.5 ~1.5 run function gm4_block_compressors:machine/create +data merge block ~1 ~1 ~1 {Items:[{Slot:0b,id:"minecraft:cobblestone",Count:1b}]} +summon item ~1.5 ~3 ~1.5 {Item:{id:"minecraft:diamond",Count:1b,tag:{gm4_block_compressors:{compression_level:64}}}} + +await entity @e[type=item,nbt={Item:{id:"minecraft:diamond",Count:64b}},nbt=!{Item:{tag:{gm4_block_compressors:{}}}}] diff --git a/gm4_block_compressors/data/gm4_block_compressors/tests/destroy.mcfunction b/gm4_block_compressors/data/gm4_block_compressors/tests/destroy.mcfunction new file mode 100644 index 0000000000..efb32e6f5a --- /dev/null +++ b/gm4_block_compressors/data/gm4_block_compressors/tests/destroy.mcfunction @@ -0,0 +1,10 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ + +execute positioned ~1.5 ~1.5 ~1.5 run function gm4_block_compressors:machine/create +give @s diamond_pickaxe +dummy @s mine ~1 ~1 ~1 + +assert entity @e[type=item,distance=..3,nbt={Item:{id:"minecraft:dropper",Count:1b}}] + +await entity @e[type=item,distance=..3,nbt={Item:{id:"minecraft:player_head",tag:{gm4_machines:{id:"block_compressor"}},Count:1b}}] diff --git a/gm4_block_compressors/data/gm4_block_compressors/tests/place.mcfunction b/gm4_block_compressors/data/gm4_block_compressors/tests/place.mcfunction new file mode 100644 index 0000000000..02ff396b15 --- /dev/null +++ b/gm4_block_compressors/data/gm4_block_compressors/tests/place.mcfunction @@ -0,0 +1,9 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ + +loot give @s loot gm4_block_compressors:items/block_compressor +execute at @s run tp @s ~ ~ ~ facing ~1 ~-0.5 ~1 +dummy @s use block ~1 ~1 ~1 + +assert block ~1 ~1 ~1 dropper +assert entity @e[tag=gm4_block_compressor,distance=..3] diff --git a/gm4_book_binders/data/gm4_book_binders/tests/binding.mcfunction b/gm4_book_binders/data/gm4_book_binders/tests/binding.mcfunction new file mode 100644 index 0000000000..6b20eb3e2b --- /dev/null +++ b/gm4_book_binders/data/gm4_book_binders/tests/binding.mcfunction @@ -0,0 +1,21 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ +# @timeout 400 + +give @s lectern +execute at @s run tp @s ~ ~ ~ facing ~ ~-1.5 ~1.5 +dummy @s use block ~ ~ ~1 +assert entity @s[advancements={gm4:book_binders=true}] + +give @s paper{gm4_book_binders:{item:"enchanted_page"},Enchantments:[{id:"minecraft:efficiency",lvl:3}]} +dummy @s use entity @e[tag=gm4_book_binder,distance=..3,limit=1] + +await entity @e[tag=gm4_book_binder,distance=..3,nbt=!{HandItems:[{id:"minecraft:paper"}]}] + +clear @s +give @s leather +dummy @s use entity @e[tag=gm4_book_binder,distance=..3,limit=1] + +await entity @e[tag=gm4_book_binder,distance=..3,nbt=!{HandItems:[{id:"minecraft:leather"}]}] + +await entity @s[nbt={Inventory:[{id:"minecraft:enchanted_book",Count:1b,tag:{StoredEnchantments:[{id:"minecraft:efficiency",lvl:3}]}}]}] diff --git a/gm4_book_binders/data/gm4_book_binders/tests/debinding.mcfunction b/gm4_book_binders/data/gm4_book_binders/tests/debinding.mcfunction new file mode 100644 index 0000000000..1515bdd87b --- /dev/null +++ b/gm4_book_binders/data/gm4_book_binders/tests/debinding.mcfunction @@ -0,0 +1,15 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ +# @timeout 200 + +give @s lectern +execute at @s run tp @s ~ ~ ~ facing ~ ~-1.5 ~1.5 +dummy @s use block ~ ~ ~1 +assert entity @s[advancements={gm4:book_binders=true}] + +give @s enchanted_book{StoredEnchantments:[{id:"minecraft:silk_touch",lvl:1},{id:"minecraft:efficiency",lvl:3}]} +dummy @s use entity @e[tag=gm4_book_binder,distance=..3,limit=1] + +await entity @s[advancements={gm4:book_binders_debind=true}] + +await entity @s[nbt={Inventory:[{id:"minecraft:paper",Count:1b,tag:{gm4_book_binders:{item:"enchanted_page"},Enchantments:[{id:"minecraft:silk_touch",lvl:1}]}},{id:"minecraft:paper",Count:1b,tag:{gm4_book_binders:{item:"enchanted_page"},Enchantments:[{id:"minecraft:efficiency",lvl:3}]}}]}] diff --git a/gm4_bookshelf_inspector/beet.yaml b/gm4_bookshelf_inspector/beet.yaml index 9c5fa97e94..557e926f3d 100644 --- a/gm4_bookshelf_inspector/beet.yaml +++ b/gm4_bookshelf_inspector/beet.yaml @@ -1,6 +1,6 @@ id: gm4_bookshelf_inspector name: Bookshelf Inspector -version: 1.0.X +version: 1.1.X data_pack: load: . diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/calc_distance.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/calc_distance.mcfunction deleted file mode 100644 index f67916cb1d..0000000000 --- a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/calc_distance.mcfunction +++ /dev/null @@ -1,17 +0,0 @@ -# use item_display transformation to calculate distance to point in 3D space -# @s = item_display -# at unspecified -# run from evaluate/position - -# this method was made by 'Triton365' on the Minecraft Commands discord - -# it works by setting the x,y,z co-ordinates of a point into the transformation of a display_entity -# This will force the scale[0] of that entity to = (x^2 + y^2 + z^2)^1/2 -# This equals the distance in blocks between that point and 0,0,0 -$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] - -# this distance can then be stored in a scoreboard to check later -execute store result score $distance gm4_bookshelf_inspector_data run data get entity @s transformation.scale[0] 100 - -# cleanup -kill @s diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/get_pos.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/get_pos.mcfunction deleted file mode 100644 index fc0df05ecd..0000000000 --- a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/get_pos.mcfunction +++ /dev/null @@ -1,11 +0,0 @@ -# spawn marker to get player position and rotation -# @s = marker -# at @s -# run from evaluate/position - -tp @s @p[tag=gm4_bookshelf_inspector_target] -data modify storage gm4_bookshelf_inspector:temp entity_data set from entity @s -data modify storage gm4_bookshelf_inspector:temp Pos set from storage gm4_bookshelf_inspector:temp entity_data.Pos -data modify storage gm4_bookshelf_inspector:temp Rotation set from storage gm4_bookshelf_inspector:temp entity_data.Rotation -data remove storage gm4_bookshelf_inspector:temp entity_data -kill @s diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/position.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/position.mcfunction deleted file mode 100644 index d54dd6ef64..0000000000 --- a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/position.mcfunction +++ /dev/null @@ -1,39 +0,0 @@ -# check player motion -# @s = player not in spectator mode -# at unspecified -# run from evaluate/run - -# store player position and rotation using a marker to avoid reading player NBT -tag @s add gm4_bookshelf_inspector_target -execute at @s summon marker run function gm4_bookshelf_inspector:evaluate/get_pos -tag @s remove gm4_bookshelf_inspector_target - -# calculate how far player has moved since last check -# first, get the players current position from storage -execute store result score $pos_x gm4_bookshelf_inspector_data run data get storage gm4_bookshelf_inspector:temp Pos[0] 1000 -execute store result score $pos_y gm4_bookshelf_inspector_data run data get storage gm4_bookshelf_inspector:temp Pos[1] 1000 -execute store result score $pos_z gm4_bookshelf_inspector_data run data get storage gm4_bookshelf_inspector:temp Pos[2] 1000 -# store the distance between that and the position last tick in a float value -scoreboard players operation $distance_x gm4_bookshelf_inspector_data = $pos_x gm4_bookshelf_inspector_data -scoreboard players operation $distance_y gm4_bookshelf_inspector_data = $pos_y gm4_bookshelf_inspector_data -scoreboard players operation $distance_z gm4_bookshelf_inspector_data = $pos_z gm4_bookshelf_inspector_data -execute store result storage gm4_bookshelf_inspector:temp distance_calc.x float 0.001 run scoreboard players operation $distance_x gm4_bookshelf_inspector_data -= @s gm4_bookshelf_inspector_last_pos_x -execute store result storage gm4_bookshelf_inspector:temp distance_calc.y float 0.001 run scoreboard players operation $distance_y gm4_bookshelf_inspector_data -= @s gm4_bookshelf_inspector_last_pos_y -execute store result storage gm4_bookshelf_inspector:temp distance_calc.z float 0.001 run scoreboard players operation $distance_z gm4_bookshelf_inspector_data -= @s gm4_bookshelf_inspector_last_pos_z -# use item_display transformation to calculate the distance -execute summon item_display run function gm4_bookshelf_inspector:evaluate/calc_distance with storage gm4_bookshelf_inspector:temp distance_calc -# store the current position for the next tick -scoreboard players operation @s gm4_bookshelf_inspector_last_pos_x = $pos_x gm4_bookshelf_inspector_data -scoreboard players operation @s gm4_bookshelf_inspector_last_pos_y = $pos_y gm4_bookshelf_inspector_data -scoreboard players operation @s gm4_bookshelf_inspector_last_pos_z = $pos_z gm4_bookshelf_inspector_data - -# if motion was detected set a full cooldown on displaying nametags -# if the player was looking at a bookshelf and the motion was subtle ignore it (to avoid small nudges removing the display) -execute unless score @s gm4_bookshelf_inspector_standing_still matches 8.. if score $distance gm4_bookshelf_inspector_data matches 1.. run scoreboard players set $evaluate gm4_bookshelf_inspector_data -1 -execute if score @s gm4_bookshelf_inspector_standing_still matches 8.. if score $distance gm4_bookshelf_inspector_data matches 16.. run scoreboard players set $evaluate gm4_bookshelf_inspector_data -1 - -# cleanup -data remove storage gm4_bookshelf_inspector:temp Pos - -# if player had no motion check rotation -execute if score $evaluate gm4_bookshelf_inspector_data matches 1 run function gm4_bookshelf_inspector:evaluate/rotation diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/raycast.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/raycast.mcfunction new file mode 100644 index 0000000000..fa9327f497 --- /dev/null +++ b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/raycast.mcfunction @@ -0,0 +1,15 @@ +# raycast for a chiseled bookshelf +# @s = player not in spectator mode +# at @s anchored eyes, positioned ^ ^ ^1 + 0.25x (x = 0..11) +# run from evaluate/run +# run from here + +scoreboard players remove $simple_raycast gm4_bookshelf_inspector_data 1 + +# check for chiseled bookshelves +execute if block ~ ~ ~ chiseled_bookshelf run function gm4_bookshelf_inspector:find_book/prep + +# stop raycast when block is hit (including chiseled bookshelf) +execute unless block ~ ~ ~ #gm4:no_collision run scoreboard players set $simple_raycast gm4_bookshelf_inspector_data 0 + +execute if score $simple_raycast gm4_bookshelf_inspector_data matches 1.. positioned ^ ^ ^0.25 run function gm4_bookshelf_inspector:evaluate/raycast diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/rotation.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/rotation.mcfunction deleted file mode 100644 index e25be3519c..0000000000 --- a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/rotation.mcfunction +++ /dev/null @@ -1,25 +0,0 @@ -# check player rotation -# @s = player not in spectator mode -# at unspecified -# run from evaluate/position - -# read player rotation into scores from storage -execute store result score $yaw gm4_bookshelf_inspector_data run data get storage gm4_bookshelf_inspector:temp Rotation[0] -execute store result score $pitch gm4_bookshelf_inspector_data run data get storage gm4_bookshelf_inspector:temp Rotation[1] -data remove storage gm4_bookshelf_inspector:temp Rotation - -# check if pitch and yaw have stayed the same since last check -execute store success score $evaluate gm4_bookshelf_inspector_data if score $pitch gm4_bookshelf_inspector_data = @s gm4_bookshelf_inspector_pitch -execute if score $evaluate gm4_bookshelf_inspector_data matches 1 store success score $evaluate gm4_bookshelf_inspector_data if score $yaw gm4_bookshelf_inspector_data = @s gm4_bookshelf_inspector_yaw - -# store player rotation in scores for future checks -scoreboard players operation @s gm4_bookshelf_inspector_pitch = $pitch gm4_bookshelf_inspector_data -scoreboard players operation @s gm4_bookshelf_inspector_yaw = $yaw gm4_bookshelf_inspector_data - -# if player had no rotation add to their standing_still score -execute if score $evaluate gm4_bookshelf_inspector_data matches 1 run scoreboard players add @s gm4_bookshelf_inspector_standing_still 1 - -# if player has not moved for 0.5s and not rotated for 0.1s check for chiseled bookshelves -# evaluation is not checked here, this means that if you don't move rotation will not reset the 0.1s as long as you keep looking -# at a chiseled bookshelf, making scanning shelves nicer -execute if score @s gm4_bookshelf_inspector_standing_still matches 10.. run function gm4_bookshelf_inspector:find_book/prep diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/run.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/run.mcfunction index d3ee754877..55252caffe 100644 --- a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/run.mcfunction +++ b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/evaluate/run.mcfunction @@ -1,24 +1,8 @@ -# run evaluation to see if player is not moving -# @s = player not in spectator mode +# check if the player is looking at a chiseled bookshelf +# @s = player not in spectator mode and not moving # at unspecified # run from main -scoreboard players set $evaluate gm4_bookshelf_inspector_data 1 - -# check often used transportation methods for movement to skip costly nbt checks -# if player was standing still don't let walking (being nudged) fail the evaluation -execute if score @s gm4_bookshelf_inspector_walk matches 1.. unless score @s gm4_bookshelf_inspector_standing_still matches 8.. run scoreboard players set $evaluate gm4_bookshelf_inspector_data -1 -execute if score @s gm4_bookshelf_inspector_sprint matches 1.. run scoreboard players set $evaluate gm4_bookshelf_inspector_data -1 -execute if score @s gm4_bookshelf_inspector_fall matches 1.. run scoreboard players set $evaluate gm4_bookshelf_inspector_data -1 - -# check if player has motion -execute if score $evaluate gm4_bookshelf_inspector_data matches 1 run function gm4_bookshelf_inspector:evaluate/position - -# if evaluation failed set player standing_still score to 8 if no movement happened, or to 0 if movement happened -execute if score $evaluate gm4_bookshelf_inspector_data matches 0 run scoreboard players set @s[scores={gm4_bookshelf_inspector_standing_still=9..}] gm4_bookshelf_inspector_standing_still 8 -execute if score $evaluate gm4_bookshelf_inspector_data matches -1 run scoreboard players reset @s gm4_bookshelf_inspector_standing_still - -# cleanup scores -scoreboard players reset @s gm4_bookshelf_inspector_walk -scoreboard players reset @s gm4_bookshelf_inspector_sprint -scoreboard players reset @s gm4_bookshelf_inspector_fall +# look for chiseled bookshelf +scoreboard players set $simple_raycast gm4_bookshelf_inspector_data 11 +execute at @s anchored eyes positioned ^ ^ ^1 run function gm4_bookshelf_inspector:evaluate/raycast diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/find_book.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/find_book.mcfunction index 8a643ee661..dff590bb23 100644 --- a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/find_book.mcfunction +++ b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/find_book.mcfunction @@ -6,17 +6,16 @@ # stop the raycast scoreboard players set $raycast gm4_bookshelf_inspector_data 0 -# set evaluate to 1 in case rotation changed but this still ran -scoreboard players set $evaluate gm4_bookshelf_inspector_data 1 - # get the slot being looked at +scoreboard players set $evaluate gm4_bookshelf_inspector_data 1 +tag @s add gm4_bookshelf_inspector_target execute summon marker run function gm4_bookshelf_inspector:find_book/get_book_slot +tag @s remove gm4_bookshelf_inspector_target # if evaluation failed stop the function execute if score $evaluate gm4_bookshelf_inspector_data matches 0 run return 0 # store book data in storage -# NOTE: should this use macro's? It doesn't seem worth it here but not sure how efficient they are execute if score $rotation gm4_bookshelf_inspector_data matches 1 run data modify storage gm4_bookshelf_inspector:temp book_data set from block ~ ~ ~-1 Items execute if score $rotation gm4_bookshelf_inspector_data matches 2 run data modify storage gm4_bookshelf_inspector:temp book_data set from block ~ ~ ~1 Items execute if score $rotation gm4_bookshelf_inspector_data matches 3 run data modify storage gm4_bookshelf_inspector:temp book_data set from block ~-1 ~ ~ Items diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/get_book_slot.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/get_book_slot.mcfunction index f58e6f386a..55a4a89609 100644 --- a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/get_book_slot.mcfunction +++ b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/get_book_slot.mcfunction @@ -7,13 +7,9 @@ execute store result score $y gm4_bookshelf_inspector_data run data get entity @s Pos[1] 100 scoreboard players operation $y gm4_bookshelf_inspector_data %= #100 gm4_bookshelf_inspector_data -# check rotation from stored player yaw and transform it into a score +# get rotation from player yaw and transform it into a score # 1=north / 2=south / 3=west / 4=east -scoreboard players operation $rotation gm4_bookshelf_inspector_data = $yaw gm4_bookshelf_inspector_data -execute if score $rotation gm4_bookshelf_inspector_data matches -45..44 run scoreboard players set $rotation gm4_bookshelf_inspector_data 2 -execute if score $rotation gm4_bookshelf_inspector_data matches -135..-45 run scoreboard players set $rotation gm4_bookshelf_inspector_data 4 -execute if score $rotation gm4_bookshelf_inspector_data matches 45..135 run scoreboard players set $rotation gm4_bookshelf_inspector_data 3 -execute unless score $rotation gm4_bookshelf_inspector_data matches 2..4 run scoreboard players set $rotation gm4_bookshelf_inspector_data 1 +execute summon marker run function gm4_bookshelf_inspector:find_book/get_rotation # check if bookshelf is rotated correctly execute if score $rotation gm4_bookshelf_inspector_data matches 1 unless block ~ ~ ~-1 chiseled_bookshelf[facing=south] run scoreboard players set $evaluate gm4_bookshelf_inspector_data 0 diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/get_rotation.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/get_rotation.mcfunction new file mode 100644 index 0000000000..3afc6d736f --- /dev/null +++ b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/get_rotation.mcfunction @@ -0,0 +1,12 @@ +# spawn marker to get player yaw +# @s = marker +# at @s +# run from find_book/get_book_slot + +tp @s @p[tag=gm4_bookshelf_inspector_target] +execute store result score $rotation gm4_bookshelf_inspector_data run data get entity @s Rotation[0] +execute if score $rotation gm4_bookshelf_inspector_data matches -45..44 run scoreboard players set $rotation gm4_bookshelf_inspector_data 2 +execute if score $rotation gm4_bookshelf_inspector_data matches -135..-45 run scoreboard players set $rotation gm4_bookshelf_inspector_data 4 +execute if score $rotation gm4_bookshelf_inspector_data matches 45..135 run scoreboard players set $rotation gm4_bookshelf_inspector_data 3 +execute unless score $rotation gm4_bookshelf_inspector_data matches 2..4 run scoreboard players set $rotation gm4_bookshelf_inspector_data 1 +kill @s diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/prep.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/prep.mcfunction index 9dfb902fb8..0b39191327 100644 --- a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/prep.mcfunction +++ b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/find_book/prep.mcfunction @@ -1,7 +1,8 @@ # prep looking for a looked at book # @s = player not in spectator mode # at unspecified -# run from evaluate/rotation +# run from evaluate/raycast +# start a more precise raycast scoreboard players set $raycast gm4_bookshelf_inspector_data 50 execute at @s anchored eyes positioned ^ ^ ^1 run function gm4_bookshelf_inspector:find_book/raycast diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/init.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/init.mcfunction index 5cd397fe35..b68ef63c37 100644 --- a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/init.mcfunction +++ b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/init.mcfunction @@ -3,19 +3,12 @@ execute unless score bookshelf_inspector gm4_earliest_version < bookshelf_inspec scoreboard players set bookshelf_inspector gm4_modules 1 scoreboard objectives add gm4_bookshelf_inspector_data dummy -scoreboard objectives add gm4_bookshelf_inspector_pitch dummy -scoreboard objectives add gm4_bookshelf_inspector_yaw dummy -scoreboard objectives add gm4_bookshelf_inspector_standing_still dummy scoreboard objectives add gm4_bookshelf_inspector_keep dummy scoreboard objectives add gm4_bookshelf_inspector_display_state dummy scoreboard objectives add gm4_bookshelf_inspector_walk custom:walk_one_cm scoreboard objectives add gm4_bookshelf_inspector_sprint custom:sprint_one_cm scoreboard objectives add gm4_bookshelf_inspector_fall custom:fall_one_cm -scoreboard objectives add gm4_bookshelf_inspector_last_pos_x dummy -scoreboard objectives add gm4_bookshelf_inspector_last_pos_y dummy -scoreboard objectives add gm4_bookshelf_inspector_last_pos_z dummy -scoreboard players set #-1 gm4_bookshelf_inspector_data -1 scoreboard players set #100 gm4_bookshelf_inspector_data 100 schedule function gm4_bookshelf_inspector:main 1t diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/main.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/main.mcfunction index 43bf0af9bb..8269b305af 100644 --- a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/main.mcfunction +++ b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/main.mcfunction @@ -1,10 +1,16 @@ -schedule function gm4_bookshelf_inspector:main 1t +schedule function gm4_bookshelf_inspector:main 8t # reset keep scores for present text_displays scoreboard players set @e[type=text_display,tag=gm4_bookshelf_inspector_display.active] gm4_bookshelf_inspector_keep 0 # process players -execute as @a[gamemode=!spectator] run function gm4_bookshelf_inspector:evaluate/run +# do not check for chiseled bookshelves if the player moved anyway, allow some leniency for walking to avoid nudging removing the display +execute as @a[gamemode=!spectator] unless score @s gm4_bookshelf_inspector_walk matches 100.. unless score @s gm4_bookshelf_inspector_sprint matches 1.. unless score @s gm4_bookshelf_inspector_fall matches 1.. run function gm4_bookshelf_inspector:evaluate/run + +# reset player scores +scoreboard players reset @a gm4_bookshelf_inspector_walk +scoreboard players reset @a gm4_bookshelf_inspector_sprint +scoreboard players reset @a gm4_bookshelf_inspector_fall # remove text_displays that are not looked at execute as @e[type=text_display,tag=gm4_bookshelf_inspector_display.active,scores={gm4_bookshelf_inspector_keep=0}] run function gm4_bookshelf_inspector:process_display/remove/start diff --git a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/process_display/remove/process.mcfunction b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/process_display/remove/process.mcfunction index 855b5bd019..fb38b740e5 100644 --- a/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/process_display/remove/process.mcfunction +++ b/gm4_bookshelf_inspector/data/gm4_bookshelf_inspector/functions/process_display/remove/process.mcfunction @@ -5,6 +5,6 @@ scoreboard players add @s gm4_bookshelf_inspector_display_state 1 -execute if score @s gm4_bookshelf_inspector_display_state matches 6 run data merge entity @s {start_interpolation:-1,interpolation_duration:3,transformation:{left_rotation:[0f,0f,0f,1f],right_rotation:[0f,0f,0f,1f],translation:[0f,0f,0f],scale:[0f,0f,0f]}} -execute unless score @s gm4_bookshelf_inspector_display_state matches 8 run scoreboard players set $keep_loop_active gm4_bookshelf_inspector_data 1 -execute if score @s gm4_bookshelf_inspector_display_state matches 8 run kill @s +execute if score @s gm4_bookshelf_inspector_display_state matches 6 run data merge entity @s {start_interpolation:-1,interpolation_duration:5,transformation:{left_rotation:[0f,0f,0f,1f],right_rotation:[0f,0f,0f,1f],translation:[0f,0f,0f],scale:[0f,0f,0f]}} +execute unless score @s gm4_bookshelf_inspector_display_state matches 9 run scoreboard players set $keep_loop_active gm4_bookshelf_inspector_data 1 +execute if score @s gm4_bookshelf_inspector_display_state matches 9 run kill @s diff --git a/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/armor_stand_grass.mcfunction b/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/armor_stand_grass.mcfunction new file mode 100644 index 0000000000..c569d48c91 --- /dev/null +++ b/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/armor_stand_grass.mcfunction @@ -0,0 +1,7 @@ +# @template gm4:test_platform + +setblock ~1 ~ ~1 dirt +summon armor_stand ~1.5 ~1 ~1.5 {HandItems:[{id:"minecraft:grass_block",Count:1b},{}]} +loot replace entity @e[type=armor_stand,sort=nearest,limit=1] armor.feet loot gm4_boots_of_ostara:items/boots_of_ostara + +await block ~1 ~ ~1 grass_block diff --git a/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/armor_stand_moss.mcfunction b/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/armor_stand_moss.mcfunction new file mode 100644 index 0000000000..e65238c903 --- /dev/null +++ b/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/armor_stand_moss.mcfunction @@ -0,0 +1,7 @@ +# @template gm4:test_platform + +setblock ~1 ~ ~1 stone +summon armor_stand ~1.5 ~1 ~1.5 {HandItems:[{id:"minecraft:moss_block",Count:1b},{}]} +loot replace entity @e[type=armor_stand,sort=nearest,limit=1] armor.feet loot gm4_boots_of_ostara:items/boots_of_ostara + +await block ~1 ~ ~1 moss_block diff --git a/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/craft.mcfunction b/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/craft.mcfunction new file mode 100644 index 0000000000..a4b41430b4 --- /dev/null +++ b/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/craft.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_custom_crafters:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:1b,id:"minecraft:wheat_seeds",Count:1b},{Slot:3b,id:"minecraft:moss_block",Count:1b},{Slot:4b,id:"minecraft:leather_boots",Count:1b},{Slot:5b,id:"minecraft:grass_block",Count:1b},{Slot:7b,id:"minecraft:water_bucket",Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:leather_boots",Count:1b,tag:{gm4_boots_of_ostara:1b}},{id:"minecraft:bucket",Count:1b}]} diff --git a/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/player_grass.mcfunction b/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/player_grass.mcfunction new file mode 100644 index 0000000000..f956164601 --- /dev/null +++ b/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/player_grass.mcfunction @@ -0,0 +1,11 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~1 + +setblock ~1 ~ ~1 dirt +give @s grass_block +dummy @s swap +loot give @s loot gm4_boots_of_ostara:items/boots_of_ostara + +dummy @s use item + +await block ~1 ~ ~1 grass_block diff --git a/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/player_moss.mcfunction b/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/player_moss.mcfunction new file mode 100644 index 0000000000..1e2e6d9470 --- /dev/null +++ b/gm4_boots_of_ostara/data/gm4_boots_of_ostara/tests/player_moss.mcfunction @@ -0,0 +1,11 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~1 + +setblock ~1 ~ ~1 granite +give @s moss_block +dummy @s swap +loot give @s loot gm4_boots_of_ostara:items/boots_of_ostara + +dummy @s use item + +await block ~1 ~ ~1 moss_block diff --git a/gm4_calling_bell/data/gm4_calling_bell/tests/call.mcfunction b/gm4_calling_bell/data/gm4_calling_bell/tests/call.mcfunction new file mode 100644 index 0000000000..8b2126c709 --- /dev/null +++ b/gm4_calling_bell/data/gm4_calling_bell/tests/call.mcfunction @@ -0,0 +1,11 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~ + +setblock ~1 ~1 ~1 bell +execute at @s run tp @s ~ ~ ~ facing ~ ~-1 ~1 +give @s emerald +dummy @s use block ~1.4 ~1.25 ~1.5 north + +await entity @e[type=wandering_trader,distance=..4] + +assert entity @s[nbt=!{SelectedItem:{id:"minecraft:emerald"}}] diff --git a/gm4_chairs/data/gm4_chairs/tests/create.mcfunction b/gm4_chairs/data/gm4_chairs/tests/create.mcfunction new file mode 100644 index 0000000000..364ca9d9d1 --- /dev/null +++ b/gm4_chairs/data/gm4_chairs/tests/create.mcfunction @@ -0,0 +1,4 @@ +setblock ~ ~ ~ mangrove_stairs[facing=south] +summon item ~0.5 ~1 ~0.25 {Item:{id:"minecraft:saddle",Count:1b}} + +await entity @e[type=pig,dx=0,nbt={Saddle:1b}] diff --git a/gm4_cozy_campfires/data/gm4_cozy_campfires/functions/cozy_campfire.mcfunction b/gm4_cozy_campfires/data/gm4_cozy_campfires/functions/cozy_campfire.mcfunction index 439f033932..7999e003ad 100644 --- a/gm4_cozy_campfires/data/gm4_cozy_campfires/functions/cozy_campfire.mcfunction +++ b/gm4_cozy_campfires/data/gm4_cozy_campfires/functions/cozy_campfire.mcfunction @@ -1,4 +1,4 @@ -# @s = gm4_cozy_campfire area_effect_cloud +# @s = gm4_cozy_campfire marker # run from gm4_cozy_campfires:main # kill markers without campfire, and branch to players near lit cozy campfires diff --git a/gm4_cozy_campfires/data/gm4_cozy_campfires/functions/main.mcfunction b/gm4_cozy_campfires/data/gm4_cozy_campfires/functions/main.mcfunction index a6bba8e0bd..5aa74750f9 100644 --- a/gm4_cozy_campfires/data/gm4_cozy_campfires/functions/main.mcfunction +++ b/gm4_cozy_campfires/data/gm4_cozy_campfires/functions/main.mcfunction @@ -1,6 +1,3 @@ -# upgrade area effect clouds to markers -execute as @e[type=area_effect_cloud,tag=gm4_cozy_campfire] at @s run function gm4_cozy_campfires:upgrade_marker - # run checks on campfires and apply effect to players execute as @e[type=marker,tag=gm4_campfire] at @s run function gm4_cozy_campfires:cozy_campfire diff --git a/gm4_cozy_campfires/data/gm4_cozy_campfires/functions/upgrade_marker.mcfunction b/gm4_cozy_campfires/data/gm4_cozy_campfires/functions/upgrade_marker.mcfunction deleted file mode 100644 index ee0b9bbed8..0000000000 --- a/gm4_cozy_campfires/data/gm4_cozy_campfires/functions/upgrade_marker.mcfunction +++ /dev/null @@ -1,2 +0,0 @@ -summon marker ~ ~ ~ {CustomName:'"gm4_campfire"',Tags:["gm4_campfire"]} -kill @s diff --git a/gm4_cozy_campfires/data/gm4_cozy_campfires/tests/regeneration.mcfunction b/gm4_cozy_campfires/data/gm4_cozy_campfires/tests/regeneration.mcfunction new file mode 100644 index 0000000000..cb4581d4c4 --- /dev/null +++ b/gm4_cozy_campfires/data/gm4_cozy_campfires/tests/regeneration.mcfunction @@ -0,0 +1,8 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~ + +give @s campfire +execute at @s run tp @s ~ ~ ~ facing ~ ~-1.5 ~1.5 +dummy @s use block ~1 ~ ~1 + +await entity @s[nbt={active_effects:[{id:"minecraft:absorption",amplifier:1b}]}] diff --git a/gm4_desire_lines/data/gm4_celaro_shamir/functions/update_skull_owner.mcfunction b/gm4_desire_lines/data/gm4_celaro_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index 544293cdd3..0000000000 --- a/gm4_desire_lines/data/gm4_celaro_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"celaro"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_celaro_shamir:band/v0" diff --git a/gm4_desire_lines/data/gm4_metallurgy/tags/functions/update_skull_owner.json b/gm4_desire_lines/data/gm4_metallurgy/tags/functions/update_skull_owner.json deleted file mode 100644 index f2bdd5bb29..0000000000 --- a/gm4_desire_lines/data/gm4_metallurgy/tags/functions/update_skull_owner.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "gm4_celaro_shamir:update_skull_owner" - ] -} diff --git a/gm4_disassemblers/data/gm4_disassemblers/functions/main.mcfunction b/gm4_disassemblers/data/gm4_disassemblers/functions/main.mcfunction index 74ae88de3f..08745f81c4 100644 --- a/gm4_disassemblers/data/gm4_disassemblers/functions/main.mcfunction +++ b/gm4_disassemblers/data/gm4_disassemblers/functions/main.mcfunction @@ -1,5 +1,3 @@ -# NOTE remove during 1.20 update: updates old machines to include a marker entity -execute as @e[type=armor_stand,tag=gm4_disassembler] at @s run function gm4_disassemblers:upgrade_machine_stand # process machine execute as @e[type=marker,tag=gm4_disassembler] at @s if block ~ ~ ~ dropper[triggered=false] run function gm4_disassemblers:process diff --git a/gm4_disassemblers/data/gm4_disassemblers/functions/upgrade_machine_stand.mcfunction b/gm4_disassemblers/data/gm4_disassemblers/functions/upgrade_machine_stand.mcfunction deleted file mode 100644 index 1e0567e324..0000000000 --- a/gm4_disassemblers/data/gm4_disassemblers/functions/upgrade_machine_stand.mcfunction +++ /dev/null @@ -1,24 +0,0 @@ -# updates old machine armor stands -# @s = disassembler armor stand -# located at @s -# run from gm4_disassemblers:main - -execute if block ~ ~ ~ dropper[facing=up] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_disassembler","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_disassembler"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=up] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_disassembler_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_disassembler_stand"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=down] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_disassembler","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_disassembler"',Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=down] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_disassembler_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_disassembler_stand"',Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=north] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_disassembler","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_disassembler"',Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=north] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_disassembler_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_disassembler_stand"',Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=east] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_disassembler","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_disassembler"',Rotation:[-90.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=east] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_disassembler_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_disassembler_stand"',Rotation:[-90.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=south] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_disassembler","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_disassembler"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=south] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_disassembler_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_disassembler_stand"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=west] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_disassembler","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_disassembler"',Rotation:[90.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=west] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_disassembler_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_disassembler_stand"',Rotation:[90.0f,0.0f]} - -execute unless block ~ ~ ~ dropper[facing=up] run data modify entity @s ArmorItems[3].tag.CustomModelData set value 3420005 -execute if block ~ ~ ~ dropper[facing=down] run data modify entity @s ArmorItems[3].tag.CustomModelData set value 3420006 - -data merge block ~ ~ ~ {CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Disassembler","font":"minecraft:default","color":"#373737"},[{"text":"Disassembler","font":"gm4:half_scale"},{"text":"Disassembler","font":"gm4:inverted"},{"text":"Disassembler","font":"gm4:inverted_spacing"},{"text":"Disassembler","font":"gm4:offscreen"},{"translate":"gui.gm4.disassembler","font":"gm4:container_gui","color":"white"},{"text":"Disassembler","font":"gm4:half_scale"},{"text":"Disassembler","font":"gm4:inverted"},{"text":"Disassembler","font":"gm4:inverted_spacing"},{"text":"Disassembler","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.disassembler","font":"minecraft:default","color":"#373737"},[{"translate":"container.gm4.disassembler","font":"gm4:half_scale"},{"translate":"container.gm4.disassembler","font":"gm4:inverted"},{"translate":"container.gm4.disassembler","font":"gm4:inverted_spacing"},{"translate":"container.gm4.disassembler","font":"gm4:offscreen"},{"translate":"gui.gm4.disassembler","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.disassembler","font":"gm4:half_scale"},{"translate":"container.gm4.disassembler","font":"gm4:inverted"},{"translate":"container.gm4.disassembler","font":"gm4:inverted_spacing"},{"translate":"container.gm4.disassembler","font":"minecraft:default","color":"#373737"}]]}]}'} -scoreboard players set @s gm4_entity_version 1 -execute align xyz positioned ~0.5 ~0.5 ~0.5 run scoreboard players set @e[type=marker,tag=gm4_machine_marker,distance=..0.1,limit=1] gm4_entity_version 1 diff --git a/gm4_disassemblers/data/gm4_disassemblers/tests/craft.mcfunction b/gm4_disassemblers/data/gm4_disassemblers/tests/craft.mcfunction new file mode 100644 index 0000000000..1e65df1205 --- /dev/null +++ b/gm4_disassemblers/data/gm4_disassemblers/tests/craft.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_custom_crafters:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:0b,id:"minecraft:iron_ingot",Count:1b},{Slot:1b,id:"minecraft:tnt",Count:1b},{Slot:2b,id:"minecraft:iron_ingot",Count:1b},{Slot:3b,id:"minecraft:obsidian",Count:1b},{Slot:4b,id:"minecraft:stonecutter",Count:1b},{Slot:5b,id:"minecraft:obsidian",Count:1b},{Slot:6b,id:"minecraft:cobblestone",Count:1b},{Slot:7b,id:"minecraft:cobblestone",Count:1b},{Slot:8b,id:"minecraft:cobblestone",Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:player_head",tag:{gm4_machines:{id:"disassembler"}},Count:1b}]} diff --git a/gm4_disassemblers/data/gm4_disassemblers/tests/disassemble.mcfunction b/gm4_disassemblers/data/gm4_disassemblers/tests/disassemble.mcfunction new file mode 100644 index 0000000000..3d43428943 --- /dev/null +++ b/gm4_disassemblers/data/gm4_disassemblers/tests/disassemble.mcfunction @@ -0,0 +1,13 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ + +loot give @s loot gm4_disassemblers:items/disassembler +execute at @s run tp @s ~ ~ ~ facing ~1 ~-1.5 ~1 +dummy @s use block ~1 ~ ~1 + +assert block ~1 ~1 ~1 dropper +assert entity @e[tag=gm4_disassembler,distance=..3] + +data merge block ~1 ~1 ~1 {Items:[{id:"minecraft:iron_chestplate",Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{Slot:0b,id:"minecraft:iron_ingot",Count:1b},{Slot:2b,id:"minecraft:iron_ingot",Count:1b},{Slot:3b,id:"minecraft:iron_ingot",Count:1b},{Slot:4b,id:"minecraft:iron_ingot",Count:1b},{Slot:5b,id:"minecraft:iron_ingot",Count:1b},{Slot:6b,id:"minecraft:iron_ingot",Count:1b},{Slot:7b,id:"minecraft:iron_ingot",Count:1b},{Slot:8b,id:"minecraft:iron_ingot",Count:1b}]} diff --git a/gm4_disassemblers/data/gm4_disassemblers/tests/place.mcfunction b/gm4_disassemblers/data/gm4_disassemblers/tests/place.mcfunction new file mode 100644 index 0000000000..7a49d06f58 --- /dev/null +++ b/gm4_disassemblers/data/gm4_disassemblers/tests/place.mcfunction @@ -0,0 +1,9 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ + +loot give @s loot gm4_disassemblers:items/disassembler +execute at @s run tp @s ~ ~ ~ facing ~1 ~-1.5 ~1 +dummy @s use block ~1 ~ ~1 + +assert block ~1 ~1 ~1 dropper +assert entity @e[tag=gm4_disassembler,distance=..3] diff --git a/gm4_display_frames/data/gm4_display_frames/tests/splash.mcfunction b/gm4_display_frames/data/gm4_display_frames/tests/splash.mcfunction new file mode 100644 index 0000000000..9b7a68a3b6 --- /dev/null +++ b/gm4_display_frames/data/gm4_display_frames/tests/splash.mcfunction @@ -0,0 +1,17 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ + +fill ~2 ~1 ~ ~2 ~1 ~2 gray_concrete +give @s item_frame +execute at @s run tp @s ~ ~ ~ facing ~2 ~-1.5 ~1 +dummy @s use block ~2 ~1 ~1 west + +give @s splash_potion{Potion:"minecraft:invisibility"} +dummy @s use item + +await delay 5t +give @s diamond_pickaxe +dummy @s use entity @e[type=item_frame,distance=..3,limit=1] + +await entity @s[advancements={gm4:display_frames=true}] +await entity @e[type=item_frame,distance=..3,nbt={Invisible:1b}] diff --git a/gm4_double_doors/data/gm4_double_doors/structures/test_door.nbt b/gm4_double_doors/data/gm4_double_doors/structures/test_door.nbt new file mode 100644 index 0000000000..6fd83be617 Binary files /dev/null and b/gm4_double_doors/data/gm4_double_doors/structures/test_door.nbt differ diff --git a/gm4_double_doors/data/gm4_double_doors/tests/use.mcfunction b/gm4_double_doors/data/gm4_double_doors/tests/use.mcfunction new file mode 100644 index 0000000000..b7a8a8e200 --- /dev/null +++ b/gm4_double_doors/data/gm4_double_doors/tests/use.mcfunction @@ -0,0 +1,14 @@ +# @template gm4_double_doors:test_door +# @dummy ~1 ~1 ~ + +dummy @s use block ~1.5 ~2.5 ~2 + +assert block ~2 ~1 ~2 mangrove_door[open=true] +assert block ~2 ~2 ~2 mangrove_door[open=true] + +await delay 1s + +dummy @s use block ~1.5 ~2.5 ~2 + +assert block ~2 ~1 ~2 mangrove_door[open=false] +assert block ~2 ~2 ~2 mangrove_door[open=false] diff --git a/gm4_dripleaf_filters/data/gm4_dripleaf_filters/structures/test_setup.nbt b/gm4_dripleaf_filters/data/gm4_dripleaf_filters/structures/test_setup.nbt new file mode 100644 index 0000000000..b162be348e Binary files /dev/null and b/gm4_dripleaf_filters/data/gm4_dripleaf_filters/structures/test_setup.nbt differ diff --git a/gm4_dripleaf_filters/data/gm4_dripleaf_filters/tests/fallthrough.mcfunction b/gm4_dripleaf_filters/data/gm4_dripleaf_filters/tests/fallthrough.mcfunction new file mode 100644 index 0000000000..b7d11652db --- /dev/null +++ b/gm4_dripleaf_filters/data/gm4_dripleaf_filters/tests/fallthrough.mcfunction @@ -0,0 +1,7 @@ +# @template gm4_dripleaf_filters:test_setup + +data merge block ~ ~1 ~1 {Items:[{id:"minecraft:iron_ingot",Count:1b}]} + +summon item ~1.5 ~4 ~1.4 {Item:{id:"minecraft:gold_ingot",Count:10b}} + +await block ~1 ~ ~1 hopper{Items:[{id:"minecraft:gold_ingot",Count:10b}]} diff --git a/gm4_dripleaf_filters/data/gm4_dripleaf_filters/tests/slide.mcfunction b/gm4_dripleaf_filters/data/gm4_dripleaf_filters/tests/slide.mcfunction new file mode 100644 index 0000000000..a31f03b140 --- /dev/null +++ b/gm4_dripleaf_filters/data/gm4_dripleaf_filters/tests/slide.mcfunction @@ -0,0 +1,8 @@ +# @template gm4_dripleaf_filters:test_setup + +data merge block ~ ~1 ~1 {Items:[{id:"minecraft:iron_ingot",Count:1b}]} + +summon item ~1.5 ~4 ~1.4 {Item:{id:"minecraft:iron_ingot",Count:10b}} + +await block ~ ~1 ~1 hopper{Items:[{id:"minecraft:iron_ingot",Count:11b}]} +assert not block ~1 ~ ~1 hopper{Items:[{}]} diff --git a/gm4_dripleaf_launchers/data/gm4_dripleaf_launchers/tests/launch.mcfunction b/gm4_dripleaf_launchers/data/gm4_dripleaf_launchers/tests/launch.mcfunction new file mode 100644 index 0000000000..5e63e49736 --- /dev/null +++ b/gm4_dripleaf_launchers/data/gm4_dripleaf_launchers/tests/launch.mcfunction @@ -0,0 +1,13 @@ +# @template gm4:test_platform +# @dummy ~1 ~2 ~1 + +setblock ~1 ~ ~1 minecraft:dirt +setblock ~1 ~1 ~1 minecraft:big_dripleaf + +await block ~1 ~1 ~1 minecraft:big_dripleaf[tilt=partial] + +await delay 4t + +setblock ~ ~1 ~1 minecraft:redstone_block + +await entity @s[distance=7..] diff --git a/gm4_enchantment_extractors/data/gm4_enchantment_extractors/functions/main.mcfunction b/gm4_enchantment_extractors/data/gm4_enchantment_extractors/functions/main.mcfunction index f43ba582ac..70ef9249e3 100644 --- a/gm4_enchantment_extractors/data/gm4_enchantment_extractors/functions/main.mcfunction +++ b/gm4_enchantment_extractors/data/gm4_enchantment_extractors/functions/main.mcfunction @@ -1,5 +1,3 @@ -# NOTE remove during 1.20 update: updates old machines to include a marker entity -execute as @e[type=armor_stand,tag=gm4_enchantment_extractor] at @s run function gm4_enchantment_extractors:upgrade_machine_stand # process machine execute as @e[type=marker,tag=gm4_enchantment_extractor] at @s run function gm4_enchantment_extractors:process diff --git a/gm4_enchantment_extractors/data/gm4_enchantment_extractors/functions/upgrade_machine_stand.mcfunction b/gm4_enchantment_extractors/data/gm4_enchantment_extractors/functions/upgrade_machine_stand.mcfunction deleted file mode 100644 index 81c1f72a6e..0000000000 --- a/gm4_enchantment_extractors/data/gm4_enchantment_extractors/functions/upgrade_machine_stand.mcfunction +++ /dev/null @@ -1,24 +0,0 @@ -# updates old machine armor stands -# @s = enchantment_extractor armor stand -# located at @s -# run from gm4_enchantment_extractors:main - -execute if block ~ ~1 ~ dropper[facing=up] align xyz run summon marker ~0.5 ~1.5 ~0.5 {Tags:["gm4_enchantment_extractor","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_enchantment_extractor"',Rotation:[0.0f,0.0f]} -execute if block ~ ~1 ~ dropper[facing=up] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_enchantment_extractor_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_enchantment_extractor_stand"',Rotation:[0.0f,0.0f]} -execute if block ~ ~1 ~ dropper[facing=down] align xyz run summon marker ~0.5 ~1.5 ~0.5 {Tags:["gm4_enchantment_extractor","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_enchantment_extractor"',Rotation:[180.0f,0.0f]} -execute if block ~ ~1 ~ dropper[facing=down] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_enchantment_extractor_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_enchantment_extractor_stand"',Rotation:[180.0f,0.0f]} -execute if block ~ ~1 ~ dropper[facing=north] align xyz run summon marker ~0.5 ~1.5 ~0.5 {Tags:["gm4_enchantment_extractor","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_enchantment_extractor"',Rotation:[180.0f,0.0f]} -execute if block ~ ~1 ~ dropper[facing=north] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_enchantment_extractor_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_enchantment_extractor_stand"',Rotation:[180.0f,0.0f]} -execute if block ~ ~1 ~ dropper[facing=east] align xyz run summon marker ~0.5 ~1.5 ~0.5 {Tags:["gm4_enchantment_extractor","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_enchantment_extractor"',Rotation:[-90.0f,0.0f]} -execute if block ~ ~1 ~ dropper[facing=east] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_enchantment_extractor_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_enchantment_extractor_stand"',Rotation:[-90.0f,0.0f]} -execute if block ~ ~1 ~ dropper[facing=south] align xyz run summon marker ~0.5 ~1.5 ~0.5 {Tags:["gm4_enchantment_extractor","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_enchantment_extractor"',Rotation:[0.0f,0.0f]} -execute if block ~ ~1 ~ dropper[facing=south] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_enchantment_extractor_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_enchantment_extractor_stand"',Rotation:[0.0f,0.0f]} -execute if block ~ ~1 ~ dropper[facing=west] align xyz run summon marker ~0.5 ~1.5 ~0.5 {Tags:["gm4_enchantment_extractor","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_enchantment_extractor"',Rotation:[90.0f,0.0f]} -execute if block ~ ~1 ~ dropper[facing=west] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_enchantment_extractor_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_enchantment_extractor_stand"',Rotation:[90.0f,0.0f]} - -execute unless block ~ ~1 ~ dropper[facing=up] run data modify entity @s ArmorItems[3].tag.CustomModelData set value 3420004 -execute if block ~ ~1 ~ dropper[facing=down] run data modify entity @s ArmorItems[3].tag.CustomModelData set value 3420005 - -data merge block ~ ~1 ~ {CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Enchantment Extractor","font":"minecraft:default","color":"#373737"},[{"text":"Enchantment\\u00a0Extractor","font":"gm4:half_scale"},{"text":"Enchantment\\u00a0Extractor","font":"gm4:inverted"},{"text":"Enchantment\\u00a0Extractor","font":"gm4:inverted_spacing"},{"text":"Enchantment\\u00a0Extractor","font":"gm4:offscreen"},{"translate":"gui.gm4.enchantment_extractor","font":"gm4:container_gui","color":"white"},{"text":"Enchantment\\u00a0Extractor","font":"gm4:half_scale"},{"text":"Enchantment\\u00a0Extractor","font":"gm4:inverted"},{"text":"Enchantment\\u00a0Extractor","font":"gm4:inverted_spacing"},{"text":"Enchantment Extractor","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.enchantment_extractor","font":"minecraft:default","color":"#373737"},[{"translate":"container.gm4.enchantment_extractor","font":"gm4:half_scale"},{"translate":"container.gm4.enchantment_extractor","font":"gm4:inverted"},{"translate":"container.gm4.enchantment_extractor","font":"gm4:inverted_spacing"},{"translate":"container.gm4.enchantment_extractor","font":"gm4:offscreen"},{"translate":"gui.gm4.enchantment_extractor","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.enchantment_extractor","font":"gm4:half_scale"},{"translate":"container.gm4.enchantment_extractor","font":"gm4:inverted"},{"translate":"container.gm4.enchantment_extractor","font":"gm4:inverted_spacing"},{"translate":"container.gm4.enchantment_extractor","font":"minecraft:default","color":"#373737"}]]}]}'} -scoreboard players set @s gm4_entity_version 1 -execute align xyz positioned ~0.5 ~1.5 ~0.5 run scoreboard players set @e[type=marker,tag=gm4_machine_marker,distance=..0.1,limit=1] gm4_entity_version 1 diff --git a/gm4_enchantment_extractors/data/gm4_enchantment_extractors/tests/craft.mcfunction b/gm4_enchantment_extractors/data/gm4_enchantment_extractors/tests/craft.mcfunction new file mode 100644 index 0000000000..1706ef7f5d --- /dev/null +++ b/gm4_enchantment_extractors/data/gm4_enchantment_extractors/tests/craft.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_custom_crafters:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:1b,id:"minecraft:enchanting_table",Count:1b},{Slot:3b,id:"minecraft:gold_ingot",Count:1b},{Slot:4b,id:"minecraft:grindstone",Count:1b},{Slot:5b,id:"minecraft:gold_ingot",Count:1b},{Slot:6b,id:"minecraft:cobblestone",Count:1b},{Slot:7b,id:"minecraft:cobblestone",Count:1b},{Slot:8b,id:"minecraft:cobblestone",Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:player_head",tag:{gm4_machines:{id:"enchantment_extractor"}},Count:1b}]} diff --git a/gm4_enchantment_extractors/data/gm4_enchantment_extractors/tests/place.mcfunction b/gm4_enchantment_extractors/data/gm4_enchantment_extractors/tests/place.mcfunction new file mode 100644 index 0000000000..3001b5953b --- /dev/null +++ b/gm4_enchantment_extractors/data/gm4_enchantment_extractors/tests/place.mcfunction @@ -0,0 +1,9 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ + +loot give @s loot gm4_enchantment_extractors:items/enchantment_extractor +execute at @s run tp @s ~ ~ ~ facing ~1 ~-1.5 ~1 +dummy @s use block ~1 ~ ~1 + +assert block ~1 ~1 ~1 dropper +assert entity @e[tag=gm4_enchantment_extractor,distance=..3] diff --git a/gm4_ender_hoppers/data/gm4_ender_hoppers/functions/main.mcfunction b/gm4_ender_hoppers/data/gm4_ender_hoppers/functions/main.mcfunction index 799fd25745..dbba8e6ec8 100644 --- a/gm4_ender_hoppers/data/gm4_ender_hoppers/functions/main.mcfunction +++ b/gm4_ender_hoppers/data/gm4_ender_hoppers/functions/main.mcfunction @@ -1,9 +1,5 @@ -# NOTE remove during 1.20 update: updates old machines to include a marker entity -execute as @e[type=armor_stand,tag=gm4_ender_hopper] at @s run function gm4_ender_hoppers:upgrade_machine_stand -execute as @e[type=armor_stand,tag=gm4_ender_hoppers_display] at @s run function gm4_ender_hoppers:upgrade_machine_cart_stand # process machine execute as @e[type=marker,tag=gm4_ender_hopper] at @s run function gm4_ender_hoppers:process execute as @e[type=hopper_minecart,tag=gm4_ender_hopper_minecart] at @s run function gm4_ender_hoppers:process_cart - schedule function gm4_ender_hoppers:main 16t diff --git a/gm4_ender_hoppers/data/gm4_ender_hoppers/functions/upgrade_machine_cart_stand.mcfunction b/gm4_ender_hoppers/data/gm4_ender_hoppers/functions/upgrade_machine_cart_stand.mcfunction deleted file mode 100644 index 6365f0d2b2..0000000000 --- a/gm4_ender_hoppers/data/gm4_ender_hoppers/functions/upgrade_machine_cart_stand.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -# updates old machine cart armor stands -# @s = ender_hoppers_display armor stand -# located at @s -# run from gm4_ender_hoppers:main - -data merge entity @s {Tags:["gm4_no_edit","gm4_ender_hopper_stand","gm4_machine_cart","smithed.entity","smithed.strict"],CustomName:'"gm4_ender_hopper_stand"',Pose:{Head:[180f,0f,0f],RightArm:[0f,0f,0f]},ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1,tag:{CustomModelData:3420002,SkullOwner:{Properties:{textures:[{Value:"$ender_hopper_display"}]}}}}],HandItems:[{id:"minecraft:stone_button",Count:1b,tag:{CustomModelData:3420009}},{}]} -scoreboard players set @e[type=hopper_minecart,tag=gm4_ender_hopper,distance=..0.2] gm4_entity_version 1 -execute as @e[type=hopper_minecart,tag=gm4_ender_hopper,distance=..0.2] run data merge entity @s {CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Minecart with Ender Hopper","font":"minecraft:default","color":"#373737"},[{"translate":"gui.gm4.ender_hopper_minecart","font":"gm4:container_gui","color":"white"},{"text":"Minecart with Ender Hopper","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.ender_hopper_minecart","font":"minecraft:default","color":"#373737"},[{"translate":"gui.gm4.ender_hopper_minecart","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.ender_hopper_minecart","font":"minecraft:default","color":"#373737"}]]}]}',Tags:["gm4_ender_hopper_minecart","gm4_machine_cart"]} -scoreboard players set @s gm4_entity_version 1 diff --git a/gm4_ender_hoppers/data/gm4_ender_hoppers/functions/upgrade_machine_stand.mcfunction b/gm4_ender_hoppers/data/gm4_ender_hoppers/functions/upgrade_machine_stand.mcfunction deleted file mode 100644 index f0698cb48b..0000000000 --- a/gm4_ender_hoppers/data/gm4_ender_hoppers/functions/upgrade_machine_stand.mcfunction +++ /dev/null @@ -1,21 +0,0 @@ -# updates old machine armor stands -# @s = ender_hopper armor stand -# located at @s -# run from gm4_ender_hoppers:main - -execute if block ~ ~ ~ hopper[facing=down] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_ender_hopper","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_ender_hopper"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=down] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_ender_hopper_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_ender_hopper_stand"',ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1b,tag:{CustomModelData:3420002,SkullOwner:{Properties:{textures:[{Value:"$ender_hopper_display_2"}]}}}}],Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=north] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_ender_hopper","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_ender_hopper"',Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=north] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_ender_hopper_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_ender_hopper_stand"',ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1b,tag:{CustomModelData:3420002,SkullOwner:{Properties:{textures:[{Value:"$ender_hopper_display_2"}]}}}}],Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=east] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_ender_hopper","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_ender_hopper"',Rotation:[-90.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=east] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_ender_hopper_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_ender_hopper_stand"',ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1b,tag:{CustomModelData:3420002,SkullOwner:{Properties:{textures:[{Value:"$ender_hopper_display_2"}]}}}}],Rotation:[-90.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=south] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_ender_hopper","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_ender_hopper"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=south] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_ender_hopper_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_ender_hopper_stand"',ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1b,tag:{CustomModelData:3420002,SkullOwner:{Properties:{textures:[{Value:"$ender_hopper_display_2"}]}}}}],Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=west] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_ender_hopper","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_ender_hopper"',Rotation:[90.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=west] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_ender_hopper_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_ender_hopper_stand"',ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1b,tag:{CustomModelData:3420002,SkullOwner:{Properties:{textures:[{Value:"$ender_hopper_display_2"}]}}}}],Rotation:[90.0f,0.0f]} - -execute unless block ~ ~ ~ hopper[facing=down] run data modify entity @s HandItems[0].tag.CustomModelData set value 3420008 - -data merge block ~ ~ ~ {CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Ender Hopper","font":"minecraft:default","color":"#373737"},[{"translate":"gui.gm4.ender_hopper","font":"gm4:container_gui","color":"white"},{"text":"Ender Hopper","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.ender_hopper","font":"minecraft:default","color":"#373737"},[{"translate":"gui.gm4.ender_hopper","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.ender_hopper","font":"minecraft:default","color":"#373737"}]]}]}'} -scoreboard players set @s gm4_entity_version 1 -execute align xyz positioned ~0.5 ~0.5 ~0.5 run scoreboard players set @e[type=marker,tag=gm4_machine_marker,distance=..0.1,limit=1] gm4_entity_version 1 diff --git a/gm4_ender_hoppers/data/gm4_ender_hoppers/structures/test_pickup.nbt b/gm4_ender_hoppers/data/gm4_ender_hoppers/structures/test_pickup.nbt new file mode 100644 index 0000000000..9847774bf9 Binary files /dev/null and b/gm4_ender_hoppers/data/gm4_ender_hoppers/structures/test_pickup.nbt differ diff --git a/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/craft.mcfunction b/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/craft.mcfunction new file mode 100644 index 0000000000..2e44b8dead --- /dev/null +++ b/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/craft.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_custom_crafters:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:1b,id:"minecraft:ender_eye",Count:1b},{Slot:4b,id:"minecraft:respawn_anchor",Count:1b},{Slot:7b,id:"minecraft:hopper",Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:player_head",tag:{gm4_machines:{id:"ender_hopper"}},Count:1b}]} diff --git a/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/craft_minecart.mcfunction b/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/craft_minecart.mcfunction new file mode 100644 index 0000000000..85650cb087 --- /dev/null +++ b/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/craft_minecart.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_custom_crafters:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:1b,id:"minecraft:minecart",Count:1b},{Slot:4b,id:"minecraft:player_head",tag:{gm4_machines:{id:"ender_hopper"}},Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:hopper_minecart",tag:{gm4_machines:{id:"ender_hopper_minecart"}},Count:1b}]} diff --git a/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/pickup.mcfunction b/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/pickup.mcfunction new file mode 100644 index 0000000000..f96607490f --- /dev/null +++ b/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/pickup.mcfunction @@ -0,0 +1,12 @@ +# @template gm4_ender_hoppers:test_pickup + +summon item ~2.5 ~1.5 ~1.5 {Item:{id:"minecraft:iron_ingot",Count:1b}} +summon item ~5.5 ~1.5 ~1.5 {Item:{id:"minecraft:gold_ingot",Count:1b}} +summon item ~6.5 ~1.5 ~1.5 {Item:{id:"minecraft:diamond",Count:1b}} + +await block ~1 ~ ~1 hopper{Items:[{id:"minecraft:iron_ingot",Count:1b},{id:"minecraft:gold_ingot"}]} + +await delay 1s + +assert not block ~1 ~ ~1 hopper{Items:[{id:"minecraft:diamond",Count:1b}]} +execute positioned ~7 ~ ~ run assert entity @e[type=item,distance=..2,nbt={Item:{id:"minecraft:diamond",Count:1b}}] diff --git a/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/place.mcfunction b/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/place.mcfunction new file mode 100644 index 0000000000..f5dc23b714 --- /dev/null +++ b/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/place.mcfunction @@ -0,0 +1,9 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ + +loot give @s loot gm4_ender_hoppers:items/ender_hopper +execute at @s run tp @s ~ ~ ~ facing ~1 ~-1.5 ~1 +dummy @s use block ~1 ~ ~1 + +assert block ~1 ~1 ~1 hopper +assert entity @e[tag=gm4_ender_hopper,distance=..3] diff --git a/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/place_minecart.mcfunction b/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/place_minecart.mcfunction new file mode 100644 index 0000000000..da5f46fedd --- /dev/null +++ b/gm4_ender_hoppers/data/gm4_ender_hoppers/tests/place_minecart.mcfunction @@ -0,0 +1,10 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ +# @optional + +setblock ~1 ~1 ~1 rail +loot give @s loot gm4_ender_hoppers:items/ender_hopper_minecart +execute at @s run tp @s ~ ~ ~ facing ~1 ~-1.5 ~1 +dummy @s use block ~1 ~1 ~1 + +await entity @e[tag=gm4_ender_hopper_minecart,distance=..3] diff --git a/gm4_enderman_support_class/data/gm4_enderman_support_class/tests/creeper.mcfunction b/gm4_enderman_support_class/data/gm4_enderman_support_class/tests/creeper.mcfunction new file mode 100644 index 0000000000..b08a9e5653 --- /dev/null +++ b/gm4_enderman_support_class/data/gm4_enderman_support_class/tests/creeper.mcfunction @@ -0,0 +1,10 @@ +# @template gm4:test_platform +# @batch gm4_midnight +# @beforebatch time set midnight +# @afterbatch time set noon + +summon enderman ~0.5 ~1 ~0.5 + +summon creeper ~2.5 ~1 ~2.5 + +await entity @e[type=creeper,distance=..5,nbt={active_effects:[{id:"minecraft:regeneration",amplifier:0b}]}] diff --git a/gm4_everstone/data/gm4_everstone/tests/age_locking.mcfunction b/gm4_everstone/data/gm4_everstone/tests/age_locking.mcfunction new file mode 100644 index 0000000000..dc05bef646 --- /dev/null +++ b/gm4_everstone/data/gm4_everstone/tests/age_locking.mcfunction @@ -0,0 +1,15 @@ +# @template gm4:test_tube + +summon pig ~1.5 ~1 ~1.5 {Age:-40} +loot spawn ~1.5 ~2 ~1.5 loot gm4_everstone:everstone + +await not entity @e[type=item,distance=..4] + +scoreboard objectives add gm4_test dummy +execute store result score $age gm4_test run data get entity @e[type=pig,distance=..3,limit=1] Age +assert score $age gm4_test matches ..-1 + +await delay 3s + +execute store result score $age gm4_test run data get entity @e[type=pig,distance=..3,limit=1] Age +assert score $age gm4_test matches ..-1 diff --git a/gm4_forming_press/data/gm4_forming_press/functions/main.mcfunction b/gm4_forming_press/data/gm4_forming_press/functions/main.mcfunction index 546df30504..4e3c9bd99f 100644 --- a/gm4_forming_press/data/gm4_forming_press/functions/main.mcfunction +++ b/gm4_forming_press/data/gm4_forming_press/functions/main.mcfunction @@ -1,5 +1,3 @@ -# NOTE remove during 1.20 update: updates old machines to include a marker entity -execute as @e[type=armor_stand,tag=gm4_master_crafting] at @s run function gm4_forming_press:upgrade_machine_stand # process machine execute as @e[type=marker,tag=gm4_forming_press] at @s if block ~ ~ ~ dropper[triggered=false]{Items:[{}]} run function gm4_forming_press:recipe_validity_check diff --git a/gm4_forming_press/data/gm4_forming_press/functions/upgrade_machine_stand.mcfunction b/gm4_forming_press/data/gm4_forming_press/functions/upgrade_machine_stand.mcfunction deleted file mode 100644 index 696516f7a5..0000000000 --- a/gm4_forming_press/data/gm4_forming_press/functions/upgrade_machine_stand.mcfunction +++ /dev/null @@ -1,24 +0,0 @@ -# updates old machine armor stands -# @s = forming_press armor stand -# located at @s -# run from gm4_forming_press:main - -execute if block ~ ~ ~ dropper[facing=up] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_forming_press","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_forming_press"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=up] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_forming_press_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_forming_press_stand"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=down] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_forming_press","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_forming_press"',Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=down] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_forming_press_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_forming_press_stand"',Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=north] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_forming_press","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_forming_press"',Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=north] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_forming_press_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_forming_press_stand"',Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=east] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_forming_press","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_forming_press"',Rotation:[-9.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=east] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_forming_press_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_forming_press_stand"',Rotation:[-90.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=south] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_forming_press","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_forming_press"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=south] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_forming_press_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_forming_press_stand"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=west] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_forming_press","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_forming_press"',Rotation:[90.0f,0.0f]} -execute if block ~ ~ ~ dropper[facing=west] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_forming_press_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_forming_press_stand"',Rotation:[90.0f,0.0f]} - -execute unless block ~ ~ ~ dropper[facing=up] run data modify entity @s ArmorItems[3].tag.CustomModelData set value 3420006 -execute if block ~ ~ ~ dropper[facing=down] run data modify entity @s ArmorItems[3].tag.CustomModelData set value 3420007 - -data merge block ~ ~ ~ {CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Forming Press","font":"minecraft:default","color":"#373737"},[{"text":"Forming\\u00a0Press","font":"gm4:half_scale"},{"text":"Forming\\u00a0Press","font":"gm4:inverted"},{"text":"Forming\\u00a0Press","font":"gm4:inverted_spacing"},{"text":"Forming\\u00a0Press","font":"gm4:offscreen"},{"translate":"gui.gm4.forming_press","font":"gm4:container_gui","color":"white"},{"text":"Forming\\u00a0Press","font":"gm4:half_scale"},{"text":"Forming\\u00a0Press","font":"gm4:inverted"},{"text":"Forming\\u00a0Press","font":"gm4:inverted_spacing"},{"text":"Forming Press","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.forming_press","font":"minecraft:default","color":"#373737"},[{"translate":"container.gm4.forming_press","font":"gm4:half_scale"},{"translate":"container.gm4.forming_press","font":"gm4:inverted"},{"translate":"container.gm4.forming_press","font":"gm4:inverted_spacing"},{"translate":"container.gm4.forming_press","font":"gm4:offscreen"},{"translate":"gui.gm4.forming_press","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.forming_press","font":"gm4:half_scale"},{"translate":"container.gm4.forming_press","font":"gm4:inverted"},{"translate":"container.gm4.forming_press","font":"gm4:inverted_spacing"},{"translate":"container.gm4.forming_press","font":"minecraft:default","color":"#373737"}]]}]}'} -scoreboard players set @s gm4_entity_version 1 -execute align xyz positioned ~0.5 ~0.5 ~0.5 run scoreboard players set @e[type=marker,tag=gm4_machine_marker,distance=..0.1,limit=1] gm4_entity_version 1 diff --git a/gm4_forming_press/data/gm4_forming_press/structures/test_platform.nbt b/gm4_forming_press/data/gm4_forming_press/structures/test_platform.nbt new file mode 100644 index 0000000000..50d45ec883 Binary files /dev/null and b/gm4_forming_press/data/gm4_forming_press/structures/test_platform.nbt differ diff --git a/gm4_forming_press/data/gm4_forming_press/tests/craft.mcfunction b/gm4_forming_press/data/gm4_forming_press/tests/craft.mcfunction new file mode 100644 index 0000000000..9488b126dc --- /dev/null +++ b/gm4_forming_press/data/gm4_forming_press/tests/craft.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_custom_crafters:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:1b,id:"minecraft:piston",Count:1b},{Slot:3b,id:"minecraft:cobblestone",Count:1b},{Slot:4b,id:"minecraft:comparator",Count:1b},{Slot:5b,id:"minecraft:cobblestone",Count:1b},{Slot:6b,id:"minecraft:cobblestone",Count:1b},{Slot:7b,id:"minecraft:furnace",Count:1b},{Slot:8b,id:"minecraft:cobblestone",Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:player_head",tag:{gm4_machines:{id:"forming_press"}},Count:1b}]} diff --git a/gm4_forming_press/data/gm4_forming_press/tests/place.mcfunction b/gm4_forming_press/data/gm4_forming_press/tests/place.mcfunction new file mode 100644 index 0000000000..aa87dff01f --- /dev/null +++ b/gm4_forming_press/data/gm4_forming_press/tests/place.mcfunction @@ -0,0 +1,9 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ + +loot give @s loot gm4_forming_press:items/forming_press +execute at @s run tp @s ~ ~ ~ facing ~1 ~-1.5 ~1 +dummy @s use block ~1 ~ ~1 + +assert block ~1 ~1 ~1 dropper +assert entity @e[tag=gm4_forming_press,distance=..3] diff --git a/gm4_forming_press/data/gm4_forming_press/tests/recipes.mcfunction b/gm4_forming_press/data/gm4_forming_press/tests/recipes.mcfunction new file mode 100644 index 0000000000..ec3155dc70 --- /dev/null +++ b/gm4_forming_press/data/gm4_forming_press/tests/recipes.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_forming_press:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:0b,id:"minecraft:chorus_fruit",Count:2b},{Slot:1b,id:"minecraft:chorus_fruit",Count:2b},{Slot:2b,id:"minecraft:chorus_fruit",Count:2b},{Slot:3b,id:"minecraft:chorus_fruit",Count:2b},{Slot:4b,id:"minecraft:clay_ball",Count:2b},{Slot:5b,id:"minecraft:chorus_fruit",Count:2b},{Slot:6b,id:"minecraft:chorus_fruit",Count:2b},{Slot:7b,id:"minecraft:chorus_fruit",Count:2b},{Slot:8b,id:"minecraft:chorus_fruit",Count:2b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:purpur_block",Count:32b}]} diff --git a/gm4_fulcio_shamir/data/gm4_fulcio_shamir/functions/update_skull_owner.mcfunction b/gm4_fulcio_shamir/data/gm4_fulcio_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index 1acda26abe..0000000000 --- a/gm4_fulcio_shamir/data/gm4_fulcio_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"fulcio"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_fulcio_shamir:band/v0" diff --git a/gm4_fulcio_shamir/data/gm4_fulcio_shamir/tests/smoosh.mcfunction b/gm4_fulcio_shamir/data/gm4_fulcio_shamir/tests/smoosh.mcfunction new file mode 100644 index 0000000000..21e024e03f --- /dev/null +++ b/gm4_fulcio_shamir/data/gm4_fulcio_shamir/tests/smoosh.mcfunction @@ -0,0 +1,11 @@ +# @template gm4_metallurgy:test_smooshing + +loot spawn ~1.5 ~2.5 ~1.8 loot gm4_fulcio_shamir:band +summon item ~1.5 ~2.5 ~1.8 {Item:{id:"minecraft:compass",Count:1b}} + +await delay 1s + +setblock ~1 ~4 ~1 redstone_block + +await entity @e[type=item,distance=..4,nbt={Item:{id:"minecraft:compass",Count:1b,tag:{gm4_metallurgy:{active_shamir:"fulcio"}}}}] +assert entity @e[type=item,distance=..4,nbt={Item:{id:"minecraft:obsidian",Count:1b}}] diff --git a/gm4_fulcio_shamir/data/gm4_metallurgy/tags/functions/update_skull_owner.json b/gm4_fulcio_shamir/data/gm4_metallurgy/tags/functions/update_skull_owner.json deleted file mode 100644 index 99ca7ebf61..0000000000 --- a/gm4_fulcio_shamir/data/gm4_metallurgy/tags/functions/update_skull_owner.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "gm4_fulcio_shamir:update_skull_owner" - ] -} diff --git a/gm4_guidebook/generate_guidebooks.py b/gm4_guidebook/generate_guidebooks.py index ff3cacb874..8e95e8baf3 100644 --- a/gm4_guidebook/generate_guidebooks.py +++ b/gm4_guidebook/generate_guidebooks.py @@ -22,7 +22,7 @@ from beet.contrib.vanilla import Vanilla from beet.core.utils import TextComponent from PIL import Image -from pydantic import BaseModel +from pydantic.v1 import BaseModel from gm4.plugins.player_heads import Skin diff --git a/gm4_heart_canisters/data/gm4_heart_canisters/tests/apply_tier_1.mcfunction b/gm4_heart_canisters/data/gm4_heart_canisters/tests/apply_tier_1.mcfunction new file mode 100644 index 0000000000..7aef475825 --- /dev/null +++ b/gm4_heart_canisters/data/gm4_heart_canisters/tests/apply_tier_1.mcfunction @@ -0,0 +1,24 @@ +# @dummy + +loot give @s loot gm4_heart_canisters:items/tier_1_heart_canister + +await delay 1s +scoreboard objectives add gm4_test dummy +execute store result score $max_health gm4_test run attribute @s minecraft:generic.max_health get +assert score $max_health gm4_test matches 24 + +loot give @s loot gm4_heart_canisters:items/tier_2_heart_canister +loot give @s loot gm4_heart_canisters:items/tier_1_heart_canister + +await delay 1s +execute store result score $max_health gm4_test run attribute @s minecraft:generic.max_health get +assert score $max_health gm4_test matches 28 + +loot give @s loot gm4_heart_canisters:items/tier_1_heart_canister +loot give @s loot gm4_heart_canisters:items/tier_1_heart_canister +loot give @s loot gm4_heart_canisters:items/tier_1_heart_canister +loot give @s loot gm4_heart_canisters:items/tier_1_heart_canister + +await delay 1s +execute store result score $max_health gm4_test run attribute @s minecraft:generic.max_health get +assert score $max_health gm4_test matches 20 diff --git a/gm4_heart_canisters/data/gm4_heart_canisters/tests/apply_tier_2.mcfunction b/gm4_heart_canisters/data/gm4_heart_canisters/tests/apply_tier_2.mcfunction new file mode 100644 index 0000000000..617d8f1f8c --- /dev/null +++ b/gm4_heart_canisters/data/gm4_heart_canisters/tests/apply_tier_2.mcfunction @@ -0,0 +1,22 @@ +# @dummy + +loot give @s loot gm4_heart_canisters:items/tier_1_heart_canister +loot give @s loot gm4_heart_canisters:items/tier_1_heart_canister +loot give @s loot gm4_heart_canisters:items/tier_1_heart_canister +loot give @s loot gm4_heart_canisters:items/tier_1_heart_canister +loot give @s loot gm4_heart_canisters:items/tier_1_heart_canister + +loot give @s loot gm4_heart_canisters:items/tier_2_heart_canister + +await delay 1s + +scoreboard objectives add gm4_test dummy +execute store result score $max_health gm4_test run attribute @s minecraft:generic.max_health get +assert score $max_health gm4_test matches 44 + +loot give @s loot gm4_heart_canisters:items/tier_2_heart_canister + +await delay 1s + +execute store result score $max_health gm4_test run attribute @s minecraft:generic.max_health get +assert score $max_health gm4_test matches 48 diff --git a/gm4_heart_canisters/data/gm4_heart_canisters/tests/craft_tier_1.mcfunction b/gm4_heart_canisters/data/gm4_heart_canisters/tests/craft_tier_1.mcfunction new file mode 100644 index 0000000000..b1a9a77cdb --- /dev/null +++ b/gm4_heart_canisters/data/gm4_heart_canisters/tests/craft_tier_1.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_custom_crafters:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:0b,id:"minecraft:obsidian",Count:1b},{Slot:1b,id:"minecraft:iron_block",Count:1b},{Slot:2b,id:"minecraft:obsidian",Count:1b},{Slot:3b,id:"minecraft:golden_apple",Count:1b},{Slot:4b,id:"minecraft:nether_star",Count:1b},{Slot:5b,id:"minecraft:golden_apple",Count:1b},{Slot:6b,id:"minecraft:obsidian",Count:1b},{Slot:7b,id:"minecraft:golden_apple",Count:1b},{Slot:8b,id:"minecraft:obsidian",Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:player_head",tag:{gm4_heart_canister:1b,gm4_heart_canister_tier:1b}}]} diff --git a/gm4_heart_canisters/data/gm4_heart_canisters/tests/craft_tier_2.mcfunction b/gm4_heart_canisters/data/gm4_heart_canisters/tests/craft_tier_2.mcfunction new file mode 100644 index 0000000000..3128c6a0c2 --- /dev/null +++ b/gm4_heart_canisters/data/gm4_heart_canisters/tests/craft_tier_2.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_custom_crafters:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:0b,id:"minecraft:end_stone",Count:1b},{Slot:1b,id:"minecraft:iron_block",Count:1b},{Slot:2b,id:"minecraft:end_stone",Count:1b},{Slot:3b,id:"minecraft:player_head",Count:1b,tag:{gm4_heart_canister:1b,gm4_heart_canister_tier:1b}},{Slot:4b,id:"minecraft:nether_star",Count:1b},{Slot:5b,id:"minecraft:player_head",Count:1b,tag:{gm4_heart_canister:1b,gm4_heart_canister_tier:1b}},{Slot:6b,id:"minecraft:end_stone",Count:1b},{Slot:7b,id:"minecraft:player_head",Count:1b,tag:{gm4_heart_canister:1b,gm4_heart_canister_tier:1b}},{Slot:8b,id:"minecraft:end_stone",Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:player_head",tag:{gm4_heart_canister:1b,gm4_heart_canister_tier:2b}}]} diff --git a/gm4_holographic_tags/data/gm4_holographic_tags/tests/create_and_remove.mcfunction b/gm4_holographic_tags/data/gm4_holographic_tags/tests/create_and_remove.mcfunction new file mode 100644 index 0000000000..631cf0676e --- /dev/null +++ b/gm4_holographic_tags/data/gm4_holographic_tags/tests/create_and_remove.mcfunction @@ -0,0 +1,23 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~ + +setblock ~1 ~1 ~2 gray_concrete + +execute at @s run tp @s ~ ~ ~ facing ~ ~-1.5 ~2 +give @s item_frame +dummy @s use block ~1 ~1 ~2 north + +give @s name_tag{display:{Name:'"HelloGamemode4"'}} +dummy @s use entity @e[type=item_frame,distance=..4,limit=1] + +await not entity @e[type=item_frame,distance=..4] +clear @s written_book +assert entity @e[type=area_effect_cloud,distance=..4,name=HelloGamemode4] + +execute at @s run tp @e[type=item,distance=..4] ~ ~ ~ +await entity @s[nbt={SelectedItem:{id:"minecraft:item_frame",Count:1b}}] + +dummy @s use block ~1 ~1 ~2 north + +await not entity @e[type=area_effect_cloud,distance=..4] +assert entity @e[type=item_frame,distance=..4,nbt={Item:{id:"minecraft:name_tag",Count:1b,tag:{display:{Name:'"HelloGamemode4"'}}}}] diff --git a/gm4_iacio_shamir/data/gm4_iacio_shamir/structures/test_long_platform.nbt b/gm4_iacio_shamir/data/gm4_iacio_shamir/structures/test_long_platform.nbt new file mode 100644 index 0000000000..60e8581772 Binary files /dev/null and b/gm4_iacio_shamir/data/gm4_iacio_shamir/structures/test_long_platform.nbt differ diff --git a/gm4_iacio_shamir/data/gm4_iacio_shamir/tests/throw_item.mcfunction b/gm4_iacio_shamir/data/gm4_iacio_shamir/tests/throw_item.mcfunction new file mode 100644 index 0000000000..b4fc217483 --- /dev/null +++ b/gm4_iacio_shamir/data/gm4_iacio_shamir/tests/throw_item.mcfunction @@ -0,0 +1,21 @@ +# @template gm4_iacio_shamir:test_long_platform +# @dummy ~ ~1 ~1 + +execute at @s run tp @s ~ ~ ~ 270 0 + +give @s iron_ingot +await delay 1t +dummy @s drop + +await entity @e[type=item,dx=12,dy=2,dz=2,distance=3..5,nbt={OnGround:1b,Item:{id:"minecraft:iron_ingot"}}] + +give @s iron_chestplate{gm4_metallurgy:{has_shamir:1b,active_shamir:"iacio"}} +dummy @s use item + +await delay 1t + +give @s gold_ingot +await delay 1t +dummy @s drop + +await entity @e[type=item,dx=12,dy=2,dz=2,distance=6..,nbt={OnGround:1b,Item:{id:"minecraft:gold_ingot"}}] diff --git a/gm4_ink_spitting_squid/data/gm4_ink_spitting_squid/structures/test_tank.nbt b/gm4_ink_spitting_squid/data/gm4_ink_spitting_squid/structures/test_tank.nbt new file mode 100644 index 0000000000..19acb6e3df Binary files /dev/null and b/gm4_ink_spitting_squid/data/gm4_ink_spitting_squid/structures/test_tank.nbt differ diff --git a/gm4_ink_spitting_squid/data/gm4_ink_spitting_squid/tests/squirt.mcfunction b/gm4_ink_spitting_squid/data/gm4_ink_spitting_squid/tests/squirt.mcfunction new file mode 100644 index 0000000000..53e5ec660f --- /dev/null +++ b/gm4_ink_spitting_squid/data/gm4_ink_spitting_squid/tests/squirt.mcfunction @@ -0,0 +1,6 @@ +# @template gm4_ink_spitting_squid:test_tank +# @dummy ~1 ~1 ~1 + +summon squid ~2 ~1 ~2 + +await entity @s[nbt={active_effects:[{id:"minecraft:blindness",amplifier:0b},{id:"minecraft:nausea",amplifier:0b}]}] diff --git a/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/brew_splash.mcfunction b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/brew_splash.mcfunction new file mode 100644 index 0000000000..ca9e2c1fc5 --- /dev/null +++ b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/brew_splash.mcfunction @@ -0,0 +1,16 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~ + +give @s brewing_stand +execute at @s run tp @s ~ ~ ~ facing ~ ~-1.5 ~1 +dummy @s use block ~1 ~1 ~1 + +await entity @e[type=marker,tag=gm4_brewing_stand,distance=..4] + +data merge block ~1 ~1 ~1 {Items:[{Slot:0b,id:"minecraft:potion",Count:1b,tag:{gm4_lightning_in_a_bottle:1b,Potion:"gm4:lightning"}},{Slot:3b,id:"minecraft:gunpowder",Count:1b},{Slot:4b,id:"minecraft:blaze_powder",Count:1b}]} + +await delay 1t + +data merge block ~1 ~1 ~1 {BrewTime:40s} + +await block ~1 ~1 ~1 brewing_stand{Items:[{Slot:0b,id:"minecraft:splash_potion",Count:1b,tag:{gm4_lightning_in_a_bottle:1b,Potion:"gm4:lightning"}}]} diff --git a/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/lightning_strike.mcfunction b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/lightning_strike.mcfunction new file mode 100644 index 0000000000..b2e1f05bdc --- /dev/null +++ b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/lightning_strike.mcfunction @@ -0,0 +1,20 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~ + +give @s brewing_stand +execute at @s run tp @s ~ ~ ~ facing ~ ~-1.5 ~1 +dummy @s use block ~1 ~1 ~1 + +await entity @e[type=marker,tag=gm4_brewing_stand,distance=..4] + +give @s lightning_rod +execute at @s run tp @s ~ ~ ~ facing ~ ~-0.5 ~1 +dummy @s use block ~1 ~2 ~1 + +data merge block ~1 ~1 ~1 {Items:[{Slot:0b,id:"minecraft:potion",Count:1b,tag:{Potion:"minecraft:thick"}},{Slot:4b,id:"minecraft:blaze_powder",Count:1b}]} + +await delay 1s + +summon lightning_bolt ~1.5 ~3 ~1.5 + +await block ~1 ~1 ~1 brewing_stand{Items:[{Slot:0b,id:"minecraft:potion",Count:1b,tag:{gm4_lightning_in_a_bottle:1b,Potion:"gm4:lightning"}}]} diff --git a/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw.mcfunction b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw.mcfunction new file mode 100644 index 0000000000..f1419e4c87 --- /dev/null +++ b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw.mcfunction @@ -0,0 +1,8 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~ + +loot give @s loot gm4_lightning_in_a_bottle:items/splash_bottle_of_lightning +execute at @s run tp @s ~ ~ ~ facing ~ ~-1.5 ~1 +dummy @s use item + +await entity @e[type=lightning_bolt,distance=..4] diff --git a/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_evoker.mcfunction b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_evoker.mcfunction new file mode 100644 index 0000000000..61e67f3bdb --- /dev/null +++ b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_evoker.mcfunction @@ -0,0 +1,9 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~ + +summon pillager ~1.5 ~1 ~1.5 +loot give @s loot gm4_lightning_in_a_bottle:items/splash_bottle_of_lightning +execute at @s run tp @s ~ ~ ~ facing ~ ~ ~1 +dummy @s use item + +await entity @e[type=evoker,distance=..4] diff --git a/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_guardian.mcfunction b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_guardian.mcfunction new file mode 100644 index 0000000000..ba588b7e19 --- /dev/null +++ b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_guardian.mcfunction @@ -0,0 +1,9 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~ + +setblock ~1 ~ ~1 prismarine_bricks +loot give @s loot gm4_lightning_in_a_bottle:items/splash_bottle_of_lightning +execute at @s run tp @s ~ ~ ~ facing ~ ~-1.5 ~1 +dummy @s use item + +await entity @e[type=guardian,distance=..4] diff --git a/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_illusioner.mcfunction b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_illusioner.mcfunction new file mode 100644 index 0000000000..61e67f3bdb --- /dev/null +++ b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_illusioner.mcfunction @@ -0,0 +1,9 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~ + +summon pillager ~1.5 ~1 ~1.5 +loot give @s loot gm4_lightning_in_a_bottle:items/splash_bottle_of_lightning +execute at @s run tp @s ~ ~ ~ facing ~ ~ ~1 +dummy @s use item + +await entity @e[type=evoker,distance=..4] diff --git a/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_shulker.mcfunction b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_shulker.mcfunction new file mode 100644 index 0000000000..404f77b616 --- /dev/null +++ b/gm4_lightning_in_a_bottle/data/gm4_lightning_in_a_bottle/tests/throw_shulker.mcfunction @@ -0,0 +1,9 @@ +# @template gm4:test_platform +# @dummy ~1 ~1 ~ + +setblock ~1 ~ ~1 purpur_block +loot give @s loot gm4_lightning_in_a_bottle:items/splash_bottle_of_lightning +execute at @s run tp @s ~ ~ ~ facing ~ ~-1.5 ~1 +dummy @s use item + +await entity @e[type=shulker,distance=..4] diff --git a/gm4_liquid_minecarts/data/gm4_liquid_minecarts/functions/main.mcfunction b/gm4_liquid_minecarts/data/gm4_liquid_minecarts/functions/main.mcfunction index afb6a61808..4ae8183d1c 100644 --- a/gm4_liquid_minecarts/data/gm4_liquid_minecarts/functions/main.mcfunction +++ b/gm4_liquid_minecarts/data/gm4_liquid_minecarts/functions/main.mcfunction @@ -1,6 +1,3 @@ -# NOTE remove during 1.20 update: updates old machines to include a marker entity -execute as @e[type=armor_stand,tag=gm4_liquid_minecart_display] at @s run function gm4_liquid_minecarts:upgrade_machine_cart_stand - #look for hoppers pointing into or below the liquid minecart execute as @e[type=command_block_minecart,tag=gm4_liquid_minecart] at @s run function gm4_liquid_minecarts:load_check diff --git a/gm4_liquid_minecarts/data/gm4_liquid_minecarts/functions/upgrade_machine_cart_stand.mcfunction b/gm4_liquid_minecarts/data/gm4_liquid_minecarts/functions/upgrade_machine_cart_stand.mcfunction deleted file mode 100644 index 46a5892d6c..0000000000 --- a/gm4_liquid_minecarts/data/gm4_liquid_minecarts/functions/upgrade_machine_cart_stand.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -# updates old machine cart armor stands -# @s = liquid_minecarts_display armor stand -# located at @s -# run from gm4_liquid_minecarts:main - -data merge entity @s {Tags:["gm4_no_edit","gm4_liquid_minecart_stand","gm4_machine_cart","smithed.entity","smithed.strict"],CustomName:'"gm4_liquid_minecart_stand"'} -scoreboard players set @e[type=command_block_minecart,tag=gm4_liquid_minecart,tag=!gm4_machine_cart,distance=..0.2] gm4_entity_version 1 -tag @e[type=command_block_minecart,tag=gm4_liquid_minecart,distance=..0.2] add gm4_machine_cart -scoreboard players set @s gm4_entity_version 1 diff --git a/gm4_liquid_minecarts/data/gm4_liquid_minecarts/structures/test_transport.nbt b/gm4_liquid_minecarts/data/gm4_liquid_minecarts/structures/test_transport.nbt new file mode 100644 index 0000000000..c9590da2e6 Binary files /dev/null and b/gm4_liquid_minecarts/data/gm4_liquid_minecarts/structures/test_transport.nbt differ diff --git a/gm4_liquid_minecarts/data/gm4_liquid_minecarts/tests/craft.mcfunction b/gm4_liquid_minecarts/data/gm4_liquid_minecarts/tests/craft.mcfunction new file mode 100644 index 0000000000..517b293767 --- /dev/null +++ b/gm4_liquid_minecarts/data/gm4_liquid_minecarts/tests/craft.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_custom_crafters:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:1b,id:"minecraft:minecart",Count:1b},{Slot:4b,id:"minecraft:player_head",tag:{gm4_machines:{id:"liquid_tank"}},Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:hopper_minecart",tag:{gm4_machines:{id:"liquid_minecart"}},Count:1b}]} diff --git a/gm4_liquid_minecarts/data/gm4_liquid_minecarts/tests/place.mcfunction b/gm4_liquid_minecarts/data/gm4_liquid_minecarts/tests/place.mcfunction new file mode 100644 index 0000000000..c1505010f1 --- /dev/null +++ b/gm4_liquid_minecarts/data/gm4_liquid_minecarts/tests/place.mcfunction @@ -0,0 +1,10 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ +# @optional + +setblock ~1 ~1 ~1 rail +loot give @s loot gm4_liquid_minecarts:items/liquid_minecart +execute at @s run tp @s ~ ~ ~ facing ~1 ~-1.5 ~1 +dummy @s use block ~1 ~1 ~1 + +await entity @e[tag=gm4_liquid_minecart,distance=..3] diff --git a/gm4_liquid_minecarts/data/gm4_liquid_minecarts/tests/transport.mcfunction b/gm4_liquid_minecarts/data/gm4_liquid_minecarts/tests/transport.mcfunction new file mode 100644 index 0000000000..644fd11585 --- /dev/null +++ b/gm4_liquid_minecarts/data/gm4_liquid_minecarts/tests/transport.mcfunction @@ -0,0 +1,26 @@ +# @template gm4_liquid_minecarts:test_transport +# @dummy ~1 ~1 ~ + +execute positioned ~2 ~1 ~2 run tag @e[tag=gm4_liquid_tank,distance=..1] add test_source +execute positioned ~4 ~1 ~1 run tag @e[tag=gm4_liquid_tank,distance=..1] add test_destination + +# create lava tank +data merge block ~2 ~1 ~2 {Items:[{Slot:0b,id:"minecraft:lava_bucket",Count:1b}]} + +await block ~2 ~1 ~2 hopper{Items:[{Slot:0b,id:"minecraft:bucket",Count:1b}]} +await entity @e[tag=gm4_liquid_tank,tag=test_source,tag=gm4_lt_lava,scores={gm4_lt_value=3}] + +# place liquid minecart +clear @s written_book +loot give @s loot gm4_liquid_minecarts:items/liquid_minecart +execute at @s run tp @s ~ ~ ~ facing ~1 ~-1.5 ~1 +dummy @s use block ~2 ~1 ~1 + +await entity @e[tag=gm4_liquid_minecart,scores={gm4_lt_value=3}] +assert entity @e[tag=gm4_liquid_tank,tag=test_source,tag=gm4_lt_empty,scores={gm4_lt_value=0}] + +# send the minecart +setblock ~2 ~ ~1 redstone_block + +await entity @e[tag=gm4_liquid_tank,tag=test_destination,tag=gm4_lt_lava,scores={gm4_lt_value=3}] +assert entity @e[tag=gm4_liquid_minecart,scores={gm4_lt_value=0}] diff --git a/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart.mcfunction b/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart.mcfunction new file mode 100644 index 0000000000..3b26736b9e --- /dev/null +++ b/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart.mcfunction @@ -0,0 +1,14 @@ +# destroys the liquid_minecart +# @s = liquid_minecart marker +# located at @s +# run from gm4_liquid_minecarts:machine/verify_destroy + +# drop item +scoreboard players set $dropped_item gm4_machine_data 0 +execute as @e[type=item,distance=..3,nbt={Age:0s,Item:{id:"minecraft:minecart",Count:1b,tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}},limit=1,sort=nearest] at @s run function gm4_liquid_minecarts:machine/destroy_cart/drop_item + +# scan hoppers if no item was broken +execute if score $dropped_item gm4_machine_data matches 0 run function gm4_liquid_minecarts:machine/destroy_cart/scan_hoppers + +# kill marker +kill @s diff --git a/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart/scan_hoppers.mcfunction b/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart/scan_hoppers.mcfunction new file mode 100644 index 0000000000..7337f84d34 --- /dev/null +++ b/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart/scan_hoppers.mcfunction @@ -0,0 +1,39 @@ +# searches for hoppers with invalid items +# @s = liquid_minecart marker +# located at @s +# run from gm4_liquid_minecarts:machine/destroy_cart + +# find hopper with the invalid item +scoreboard players set $found_item gm4_machine_data 0 +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~00 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~00 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~00 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~00 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~00 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~00 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~00 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~00 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~00 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper + +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-1 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-1 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-1 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-1 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-1 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-1 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-1 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-1 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-1 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper + +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-2 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-2 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-2 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-2 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-2 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-2 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-2 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-2 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-2 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]} run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper + +# if no hoppers found, find hopper minecarts with the invalid item +execute if score $found_item gm4_machine_data matches 0 as @e[type=hopper_minecart,distance=..3,nbt={Items:[{id:"minecraft:minecart",tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}]}] run function gm4_liquid_minecarts:machine/destroy_cart/update_hopper_minecart diff --git a/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart/update_hopper.mcfunction b/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart/update_hopper.mcfunction new file mode 100644 index 0000000000..f4b95be4ff --- /dev/null +++ b/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart/update_hopper.mcfunction @@ -0,0 +1,16 @@ +# updates hoppers with invalid items +# @s = liquid_minecart marker +# located at the hopper with an invalid item +# run from gm4_liquid_minecarts:machine/destroy_cart/scan_hoppers + +# replace correct slot with proper item +data modify storage gm4_machines:temp Items set from block ~ ~ ~ Items +execute if data storage gm4_machines:temp Items[{Slot:0b,tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}] run loot replace block ~ ~ ~ container.0 loot gm4_liquid_minecarts:entities/liquid_minecart +execute if data storage gm4_machines:temp Items[{Slot:1b,tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}] run loot replace block ~ ~ ~ container.1 loot gm4_liquid_minecarts:entities/liquid_minecart +execute if data storage gm4_machines:temp Items[{Slot:2b,tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}] run loot replace block ~ ~ ~ container.2 loot gm4_liquid_minecarts:entities/liquid_minecart +execute if data storage gm4_machines:temp Items[{Slot:3b,tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}] run loot replace block ~ ~ ~ container.3 loot gm4_liquid_minecarts:entities/liquid_minecart +execute if data storage gm4_machines:temp Items[{Slot:4b,tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}] run loot replace block ~ ~ ~ container.4 loot gm4_liquid_minecarts:entities/liquid_minecart + +# clean up +data remove storage gm4_machines:temp Items +scoreboard players set $found_item gm4_machine_data 1 diff --git a/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart/update_hopper_minecart.mcfunction b/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart/update_hopper_minecart.mcfunction new file mode 100644 index 0000000000..4bbc267023 --- /dev/null +++ b/gm4_liquid_minecarts/overlay_26/data/gm4_liquid_minecarts/functions/machine/destroy_cart/update_hopper_minecart.mcfunction @@ -0,0 +1,16 @@ +# updates hopper minecarts with invalid items +# @s = hopper minecart with invalid item +# located at @s +# run from gm4_liquid_minecarts:machine/destroy_cart/scan_hoppers + +# replace correct slot with proper item +data modify storage gm4_machines:temp Items set from entity @s Items +execute if data storage gm4_machines:temp Items[{Slot:0b,tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}] run loot replace entity @s container.0 loot gm4_liquid_minecarts:entities/liquid_minecart +execute if data storage gm4_machines:temp Items[{Slot:1b,tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}] run loot replace entity @s container.1 loot gm4_liquid_minecarts:entities/liquid_minecart +execute if data storage gm4_machines:temp Items[{Slot:2b,tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}] run loot replace entity @s container.2 loot gm4_liquid_minecarts:entities/liquid_minecart +execute if data storage gm4_machines:temp Items[{Slot:3b,tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}] run loot replace entity @s container.3 loot gm4_liquid_minecarts:entities/liquid_minecart +execute if data storage gm4_machines:temp Items[{Slot:4b,tag:{display:{Name:'{"text":"Liquid Minecart","italic":false}'}}}] run loot replace entity @s container.4 loot gm4_liquid_minecarts:entities/liquid_minecart + +# clean up +data remove storage gm4_machines:temp Items +scoreboard players set $found_item gm4_machine_data 1 diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/item_process.mcfunction b/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/item_process.mcfunction index 186ed09c88..96f13e8df3 100644 --- a/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/item_process.mcfunction +++ b/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/item_process.mcfunction @@ -9,8 +9,6 @@ execute if score @s[tag=gm4_lt_empty] gm4_lt_value matches 0 unless entity @s[ta #item drain execute unless entity @s[tag=gm4_lt_fill] run function #gm4_liquid_tanks:item_drain -# NOTE remove during 1.20 update: tank init for upgraded tanks -execute if entity @s[tag=gm4_upgraded_liquid_tank,tag=gm4_lt_drain] run function gm4_liquid_tanks:upgrade_gui #item fill execute unless entity @s[tag=gm4_lt_drain] run function #gm4_liquid_tanks:item_fill diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/main.mcfunction b/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/main.mcfunction index 2bb9c6b37b..f23c99107e 100644 --- a/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/main.mcfunction +++ b/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/main.mcfunction @@ -1,5 +1,3 @@ -# NOTE remove during 1.20 update: updates old machines to include a marker entity -execute as @e[type=armor_stand,tag=gm4_liquid_tank] at @s run function gm4_liquid_tanks:upgrade_machine_stand # process machine execute as @e[type=marker,tag=gm4_liquid_tank] at @s run function gm4_liquid_tanks:process diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/upgrade_gui.mcfunction b/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/upgrade_gui.mcfunction deleted file mode 100644 index 9844ea11b8..0000000000 --- a/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/upgrade_gui.mcfunction +++ /dev/null @@ -1,12 +0,0 @@ -# updates gui of old liquid tanks -# @s = liquid_tank marker -# located at @s -# run from gm4_liquid_tanks:item_process - -execute positioned ~ ~-0.75 ~ run tag @e[type=armor_stand,tag=gm4_liquid_tank_display,distance=..0.3,limit=1] add gm4_lt_keep -function #gm4_liquid_tanks:tank_init - -execute positioned ~ ~-0.75 ~ run kill @e[type=armor_stand,tag=gm4_liquid_tank_display,tag=!gm4_lt_keep,distance=..0.3,limit=1] -tag @e[type=armor_stand,tag=gm4_liquid_tank_display,distance=..3] remove gm4_lt_keep - -execute unless block ~ ~ ~ hopper{CustomName:'{"translate":"block.gm4.liquid_tank.empty","fallback":"Empty Tank"}'} run tag @s remove gm4_upgraded_liquid_tank diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/upgrade_machine_stand.mcfunction b/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/upgrade_machine_stand.mcfunction deleted file mode 100644 index 35af52fbfb..0000000000 --- a/gm4_liquid_tanks/data/gm4_liquid_tanks/functions/upgrade_machine_stand.mcfunction +++ /dev/null @@ -1,45 +0,0 @@ -# updates old machine armor stands -# @s = liquid_tank armor stand -# located at @s -# run from gm4_liquid_tanks:main - -execute if block ~ ~ ~ hopper[facing=down] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_new_machine_marker"],CustomName:'"gm4_liquid_tank"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=north] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_new_machine_marker"],CustomName:'"gm4_liquid_tank"',Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=east] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_new_machine_marker"],CustomName:'"gm4_liquid_tank"',Rotation:[-90.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=south] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_new_machine_marker"],CustomName:'"gm4_liquid_tank"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=west] align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_new_machine_marker"],CustomName:'"gm4_liquid_tank"',Rotation:[90.0f,0.0f]} - -# copy scores over -scoreboard players operation @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] gm4_lt_value = @s gm4_lt_value -scoreboard players operation @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] gm4_lt_max = @s gm4_lt_max -scoreboard players operation @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] gm4_lt_prior_val = @s gm4_lt_prior_val -scoreboard players operation @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] gm4_lt_disp_val = @s gm4_lt_disp_val -scoreboard players operation @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] gm4_zl_warp_cx = @s gm4_zl_warp_cx -scoreboard players operation @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] gm4_zl_warp_cy = @s gm4_zl_warp_cy -scoreboard players operation @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] gm4_zl_warp_cz = @s gm4_zl_warp_cz -scoreboard players operation @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] gm4_zl_warp_cd = @s gm4_zl_warp_cd - -# copy tags over -data modify entity @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] Tags set from entity @s Tags -tag @e[type=marker,tag=gm4_no_edit,distance=..1,limit=1] add gm4_new_machine_marker - -tag @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] add gm4_liquid_tank -tag @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] add gm4_machine_marker -tag @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] remove gm4_machine -tag @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] remove gm4_no_edit -tag @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] add smithed.block -tag @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] add smithed.entity -tag @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] add smithed.strict -tag @e[type=marker,tag=gm4_new_machine_marker,tag=!gm4_lt_empty,distance=..1,limit=1] add gm4_upgraded_liquid_tank -execute if entity @s[tag=gm4_lt_empty] run data modify block ~ ~ ~ CustomName set value '{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Empty Tank","font":"minecraft:default","color":"#373737"},[{"translate":"gui.gm4.liquid_tank","font":"gm4:container_gui","color":"white"},{"text":"Empty Tank","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.liquid_tank.empty","font":"minecraft:default","color":"#373737"},[{"translate":"gui.gm4.liquid_tank","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.liquid_tank.empty","font":"minecraft:default","color":"#373737"}]]}]}' - -# update armor stand nbt -data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_liquid_tank_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_liquid_tank_stand"',Rotation:[0.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=north] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_liquid_tank_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_liquid_tank_stand"',Rotation:[180.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=east] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_liquid_tank_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_liquid_tank_stand"',Rotation:[-90.0f,0.0f]} -execute if block ~ ~ ~ hopper[facing=west] run data merge entity @s {Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_liquid_tank_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_liquid_tank_stand"',Rotation:[90.0f,0.0f]} -execute unless block ~ ~ ~ hopper[facing=down] run data modify entity @s ArmorItems[3].tag.CustomModelData set value 3420003 - -scoreboard players set @s gm4_entity_version 1 -scoreboard players set @e[type=marker,tag=gm4_new_machine_marker,distance=..1,limit=1] gm4_entity_version 1 -tag @e[type=marker,distance=..1] remove gm4_new_machine_marker diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/structures/test_setup.nbt b/gm4_liquid_tanks/data/gm4_liquid_tanks/structures/test_setup.nbt new file mode 100644 index 0000000000..4348f46571 Binary files /dev/null and b/gm4_liquid_tanks/data/gm4_liquid_tanks/structures/test_setup.nbt differ diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/change_type.mcfunction b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/change_type.mcfunction new file mode 100644 index 0000000000..5a67d619b1 --- /dev/null +++ b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/change_type.mcfunction @@ -0,0 +1,33 @@ +# @template gm4_liquid_tanks:test_setup +# @timeout 200 + +# create lava tank +data merge block ~1 ~3 ~1 {Items:[{Slot:0b,id:"minecraft:lava_bucket",Count:1b}]} + +await entity @e[tag=gm4_liquid_tank,tag=gm4_lt_lava,scores={gm4_lt_value=3,gm4_lt_max=300}] inside + +# make sure it doesn't accept water +data merge block ~1 ~3 ~1 {Items:[{Slot:0b,id:"minecraft:water_bucket",Count:1b}]} + +await delay 1s + +assert block ~1 ~3 ~1 hopper{Items:[{Slot:0b,id:"minecraft:water_bucket",Count:1b}]} +assert entity @e[tag=gm4_liquid_tank,tag=gm4_lt_lava,scores={gm4_lt_value=3,gm4_lt_max=300}] inside + +# empty the lava +data merge block ~1 ~3 ~1 {Items:[]} +await delay 1s + +data merge block ~1 ~3 ~1 {Items:[{Slot:0b,id:"minecraft:bucket",Count:1b}]} + +await block ~1 ~3 ~1 hopper{Items:[{Slot:0b,id:"minecraft:lava_bucket",Count:1b}]} +assert entity @e[tag=gm4_liquid_tank,tag=gm4_lt_empty,scores={gm4_lt_value=0}] inside + +# change to water tank +data merge block ~1 ~3 ~1 {Items:[]} +await delay 1s + +data merge block ~1 ~3 ~1 {Items:[{Slot:0b,id:"minecraft:water_bucket",Count:1b}]} + +await block ~1 ~3 ~1 hopper{Items:[{Slot:0b,id:"minecraft:bucket",Count:1b}]} +assert entity @e[tag=gm4_liquid_tank,tag=gm4_lt_water,scores={gm4_lt_value=3,gm4_lt_max=300}] inside diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/craft.mcfunction b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/craft.mcfunction new file mode 100644 index 0000000000..7599ed189f --- /dev/null +++ b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/craft.mcfunction @@ -0,0 +1,5 @@ +# @template gm4_custom_crafters:test_platform + +data merge block ~1 ~1 ~1 {Items:[{Slot:0b,id:"minecraft:iron_ingot",Count:1b},{Slot:1b,id:"minecraft:glass",Count:1b},{Slot:2b,id:"minecraft:iron_ingot",Count:1b},{Slot:3b,id:"minecraft:iron_ingot",Count:1b},{Slot:4b,id:"minecraft:comparator",Count:1b},{Slot:5b,id:"minecraft:iron_ingot",Count:1b},{Slot:7b,id:"minecraft:hopper",Count:1b}]} + +await block ~1 ~1 ~1 dropper{Items:[{id:"minecraft:player_head",tag:{gm4_machines:{id:"liquid_tank"}},Count:1b}]} diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/deposit_xp.mcfunction b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/deposit_xp.mcfunction new file mode 100644 index 0000000000..42db283a69 --- /dev/null +++ b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/deposit_xp.mcfunction @@ -0,0 +1,10 @@ +# @template gm4_liquid_tanks:test_setup +# @dummy ~ ~1 ~ + +xp add @s 100 +execute at @s run tp @s ~1 ~4 ~1 + +await entity @s[level=0] + +# there is a slight loss of xp points +assert score @e[tag=gm4_liquid_tank,distance=..5,limit=1] gm4_lt_value matches 80..100 diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/drain_xp.mcfunction b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/drain_xp.mcfunction new file mode 100644 index 0000000000..95eecab096 --- /dev/null +++ b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/drain_xp.mcfunction @@ -0,0 +1,9 @@ +# @template gm4_liquid_tanks:test_setup +# @dummy ~ ~1 ~ + +data merge block ~1 ~3 ~1 {Items:[{Slot:0b,id:"minecraft:experience_bottle",Count:10b}]} +execute at @s run tp @s ~1 ~1 ~1 + +await entity @s[level=6] + +await score @e[tag=gm4_liquid_tank,distance=..5,limit=1] gm4_lt_value matches 0 diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/lava_tank.mcfunction b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/lava_tank.mcfunction new file mode 100644 index 0000000000..daa4817ec8 --- /dev/null +++ b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/lava_tank.mcfunction @@ -0,0 +1,23 @@ +# @template gm4_liquid_tanks:test_setup + +# create lava tank +data merge block ~1 ~3 ~1 {Items:[{Slot:0b,id:"minecraft:lava_bucket",Count:1b}]} + +await block ~1 ~3 ~1 hopper{Items:[{Slot:0b,id:"minecraft:bucket",Count:1b}]} +assert entity @e[tag=gm4_liquid_tank,tag=gm4_lt_lava,scores={gm4_lt_value=3,gm4_lt_max=300}] inside + +# empty the tank +data merge block ~1 ~3 ~1 {Items:[]} +await delay 1s + +data merge block ~1 ~3 ~1 {Items:[{Slot:0b,id:"minecraft:bucket",Count:1b}]} + +await block ~1 ~3 ~1 hopper{Items:[{Slot:0b,id:"minecraft:lava_bucket",Count:1b}]} +assert entity @e[tag=gm4_liquid_tank,tag=gm4_lt_empty,scores={gm4_lt_value=0}] inside + +# try bucket on empty tank +data merge block ~1 ~3 ~1 {Items:[{Slot:0b,id:"minecraft:bucket",Count:1b}]} + +await delay 1s + +assert block ~1 ~3 ~1 hopper{Items:[{Slot:0b,id:"minecraft:bucket",Count:1b}]} diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/milk_tank.mcfunction b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/milk_tank.mcfunction new file mode 100644 index 0000000000..680e5945e0 --- /dev/null +++ b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/milk_tank.mcfunction @@ -0,0 +1,19 @@ +# @template gm4_liquid_tanks:test_setup + +# create milk tank +await delay 1s + +summon cow ~1.5 ~4 ~1.5 + +await entity @e[tag=gm4_liquid_tank,tag=gm4_lt_milk,scores={gm4_lt_value=3,gm4_lt_max=300}] inside + +# check cow is on cooldown +await delay 2s + +assert entity @e[tag=gm4_liquid_tank,tag=gm4_lt_milk,scores={gm4_lt_value=3,gm4_lt_max=300}] inside + +# empty the tank +data merge block ~1 ~3 ~1 {Items:[{Slot:0b,id:"minecraft:bucket",Count:1b}]} + +await block ~1 ~3 ~1 hopper{Items:[{Slot:0b,id:"minecraft:milk_bucket",Count:1b}]} +assert entity @e[tag=gm4_liquid_tank,tag=gm4_lt_empty,scores={gm4_lt_value=0}] inside diff --git a/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/place.mcfunction b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/place.mcfunction new file mode 100644 index 0000000000..74d51a6025 --- /dev/null +++ b/gm4_liquid_tanks/data/gm4_liquid_tanks/tests/place.mcfunction @@ -0,0 +1,9 @@ +# @template gm4:test_platform +# @dummy ~ ~1 ~ + +loot give @s loot gm4_liquid_tanks:items/liquid_tank +execute at @s run tp @s ~ ~ ~ facing ~1 ~-1.5 ~1 +dummy @s use block ~1 ~ ~1 + +assert block ~1 ~1 ~1 hopper +assert entity @e[tag=gm4_liquid_tank,distance=..3] diff --git a/gm4_lumos_shamir/data/gm4_lumos_shamir/functions/update_skull_owner.mcfunction b/gm4_lumos_shamir/data/gm4_lumos_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index a60ba6ee05..0000000000 --- a/gm4_lumos_shamir/data/gm4_lumos_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"lumos"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_lumos_shamir:band/v0" diff --git a/gm4_lumos_shamir/data/gm4_lumos_shamir/structures/test_dark.nbt b/gm4_lumos_shamir/data/gm4_lumos_shamir/structures/test_dark.nbt new file mode 100644 index 0000000000..167c99c2d4 Binary files /dev/null and b/gm4_lumos_shamir/data/gm4_lumos_shamir/structures/test_dark.nbt differ diff --git a/gm4_lumos_shamir/data/gm4_lumos_shamir/tests/already_light.mcfunction b/gm4_lumos_shamir/data/gm4_lumos_shamir/tests/already_light.mcfunction new file mode 100644 index 0000000000..56448d32f7 --- /dev/null +++ b/gm4_lumos_shamir/data/gm4_lumos_shamir/tests/already_light.mcfunction @@ -0,0 +1,11 @@ +# @template gm4_lumos_shamir:test_dark +# @dummy ~1 ~1 ~1 + +setblock ~1 ~3 ~1 minecraft:glowstone + +give @s diamond_pickaxe{gm4_metallurgy:{has_shamir:1b,active_shamir:"lumos"}} +give @s torch 16 + +await delay 1s + +await block ~1 ~1 ~1 minecraft:air diff --git a/gm4_lumos_shamir/data/gm4_lumos_shamir/tests/invalid_spot.mcfunction b/gm4_lumos_shamir/data/gm4_lumos_shamir/tests/invalid_spot.mcfunction new file mode 100644 index 0000000000..ac56326341 --- /dev/null +++ b/gm4_lumos_shamir/data/gm4_lumos_shamir/tests/invalid_spot.mcfunction @@ -0,0 +1,11 @@ +# @template gm4_lumos_shamir:test_dark +# @dummy ~1 ~1 ~1 + +setblock ~1 ~1 ~1 minecraft:ladder + +give @s diamond_pickaxe{gm4_metallurgy:{has_shamir:1b,active_shamir:"lumos"}} +give @s torch 16 + +await delay 1s + +await block ~1 ~1 ~1 minecraft:ladder diff --git a/gm4_lumos_shamir/data/gm4_lumos_shamir/tests/place_torch.mcfunction b/gm4_lumos_shamir/data/gm4_lumos_shamir/tests/place_torch.mcfunction new file mode 100644 index 0000000000..09ddfa8889 --- /dev/null +++ b/gm4_lumos_shamir/data/gm4_lumos_shamir/tests/place_torch.mcfunction @@ -0,0 +1,12 @@ +# @template gm4_lumos_shamir:test_dark +# @dummy ~1 ~1 ~1 + +give @s diamond_pickaxe{gm4_metallurgy:{has_shamir:1b,active_shamir:"lumos"}} + +await delay 1s + +give @s torch 16 + +await block ~1 ~1 ~1 torch + +assert entity @s[nbt={Inventory:[{id:"minecraft:torch",Count:15b}]}] diff --git a/gm4_lumos_shamir/data/gm4_metallurgy/tags/functions/update_skull_owner.json b/gm4_lumos_shamir/data/gm4_metallurgy/tags/functions/update_skull_owner.json deleted file mode 100644 index 0ac9f9f32c..0000000000 --- a/gm4_lumos_shamir/data/gm4_metallurgy/tags/functions/update_skull_owner.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "gm4_lumos_shamir:update_skull_owner" - ] -} diff --git a/gm4_metallurgy/data/gm4_arborenda_shamir/functions/update_skull_owner.mcfunction b/gm4_metallurgy/data/gm4_arborenda_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index aead8d787d..0000000000 --- a/gm4_metallurgy/data/gm4_arborenda_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"arborenda"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_arborenda_shamir:band/v0" diff --git a/gm4_metallurgy/data/gm4_defuse_shamir/functions/update_skull_owner.mcfunction b/gm4_metallurgy/data/gm4_defuse_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index d93841af1a..0000000000 --- a/gm4_metallurgy/data/gm4_defuse_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"defuse"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_defuse_shamir:band/v0" diff --git a/gm4_metallurgy/data/gm4_ender_bolt_shamir/functions/update_skull_owner.mcfunction b/gm4_metallurgy/data/gm4_ender_bolt_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index 2c5a628e2c..0000000000 --- a/gm4_metallurgy/data/gm4_ender_bolt_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"ender_bolt"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_ender_bolt_shamir:band/v0" diff --git a/gm4_metallurgy/data/gm4_forterra_shamir/functions/update_skull_owner.mcfunction b/gm4_metallurgy/data/gm4_forterra_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index fb5bb0853d..0000000000 --- a/gm4_metallurgy/data/gm4_forterra_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"forterra"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_forterra_shamir:band/v0" diff --git a/gm4_metallurgy/data/gm4_gemini_shamir/functions/update_skull_owner.mcfunction b/gm4_metallurgy/data/gm4_gemini_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index 77bcc19649..0000000000 --- a/gm4_metallurgy/data/gm4_gemini_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"gemini"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_gemini_shamir:band/v0" diff --git a/gm4_metallurgy/data/gm4_hypexperia_shamir/functions/mark_item_validity.mcfunction b/gm4_metallurgy/data/gm4_hypexperia_shamir/functions/mark_item_validity.mcfunction index 1683782f35..38b61fd3b2 100644 --- a/gm4_metallurgy/data/gm4_hypexperia_shamir/functions/mark_item_validity.mcfunction +++ b/gm4_metallurgy/data/gm4_hypexperia_shamir/functions/mark_item_validity.mcfunction @@ -26,3 +26,4 @@ execute unless score valid_item gm4_ml_data matches 1 store success score valid_ execute unless score valid_item gm4_ml_data matches 1 store success score valid_item gm4_ml_data if entity @s[nbt={Item:{id:"minecraft:wooden_pickaxe"}}] execute unless score valid_item gm4_ml_data matches 1 store success score valid_item gm4_ml_data if entity @s[nbt={Item:{id:"minecraft:wooden_axe"}}] execute unless score valid_item gm4_ml_data matches 1 store success score valid_item gm4_ml_data if entity @s[nbt={Item:{id:"minecraft:fishing_rod"}}] +execute unless score valid_item gm4_ml_data matches 1 store success score valid_item gm4_ml_data if entity @s[nbt={Item:{id:"minecraft:trident"}}] diff --git a/gm4_metallurgy/data/gm4_hypexperia_shamir/functions/update_skull_owner.mcfunction b/gm4_metallurgy/data/gm4_hypexperia_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index ab151b7217..0000000000 --- a/gm4_metallurgy/data/gm4_hypexperia_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"hypexperia"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_hypexperia_shamir:band/v0" diff --git a/gm4_metallurgy/data/gm4_infinitas_shamir/advancements/water/place_mainhand.json b/gm4_metallurgy/data/gm4_infinitas_shamir/advancements/water/place_mainhand.json index aa0a8ea0dd..b200abba7e 100644 --- a/gm4_metallurgy/data/gm4_infinitas_shamir/advancements/water/place_mainhand.json +++ b/gm4_metallurgy/data/gm4_infinitas_shamir/advancements/water/place_mainhand.json @@ -314,6 +314,7 @@ "predicate": { "block": { "blocks": [ + "minecraft:flower_pot", "minecraft:water" ] } @@ -322,6 +323,50 @@ ] } }, + "place_waterloggable": { + "trigger": "minecraft:placed_block", + "conditions": { + "player": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "type_specific": { + "type": "player", + "gamemode": "creative" + } + } + } + }, + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "equipment": { + "mainhand": { + "items": [ + "minecraft:water_bucket" + ], + "nbt": "{gm4_metallurgy:{active_shamir:\"infinitas\"}}" + } + } + } + } + ], + "location": [ + { + "condition": "minecraft:location_check", + "predicate": { + "block": { + "tag": "gm4:waterloggable" + } + } + } + ] + } + }, "use_on_cauldron": { "trigger": "minecraft:item_used_on_block", "conditions": { @@ -365,6 +410,7 @@ "place_tadpole", "place_tropical_fish", "place_water", + "place_waterloggable", "use_on_cauldron" ] ], diff --git a/gm4_metallurgy/data/gm4_infinitas_shamir/advancements/water/place_offhand.json b/gm4_metallurgy/data/gm4_infinitas_shamir/advancements/water/place_offhand.json index 8e3dad2ca1..a6ae434686 100644 --- a/gm4_metallurgy/data/gm4_infinitas_shamir/advancements/water/place_offhand.json +++ b/gm4_metallurgy/data/gm4_infinitas_shamir/advancements/water/place_offhand.json @@ -314,6 +314,7 @@ "predicate": { "block": { "blocks": [ + "minecraft:flower_pot", "minecraft:water" ] } @@ -322,6 +323,50 @@ ] } }, + "place_waterloggable": { + "trigger": "minecraft:placed_block", + "conditions": { + "player": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "type_specific": { + "type": "player", + "gamemode": "creative" + } + } + } + }, + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "equipment": { + "offhand": { + "items": [ + "minecraft:water_bucket" + ], + "nbt": "{gm4_metallurgy:{active_shamir:\"infinitas\"}}" + } + } + } + } + ], + "location": [ + { + "condition": "minecraft:location_check", + "predicate": { + "block": { + "tag": "gm4:waterloggable" + } + } + } + ] + } + }, "use_on_cauldron": { "trigger": "minecraft:item_used_on_block", "conditions": { @@ -365,6 +410,7 @@ "place_tadpole", "place_tropical_fish", "place_water", + "place_waterloggable", "use_on_cauldron" ] ], diff --git a/gm4_metallurgy/data/gm4_infinitas_shamir/functions/update_skull_owner.mcfunction b/gm4_metallurgy/data/gm4_infinitas_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index 2697357a6d..0000000000 --- a/gm4_metallurgy/data/gm4_infinitas_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"spiraculum"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_infinitas_shamir:band" diff --git a/gm4_metallurgy/data/gm4_metallurgy/functions/casting/add_metal/add_copper.mcfunction b/gm4_metallurgy/data/gm4_metallurgy/functions/casting/add_metal/add_copper.mcfunction index efab8c579c..e380a9396d 100644 --- a/gm4_metallurgy/data/gm4_metallurgy/functions/casting/add_metal/add_copper.mcfunction +++ b/gm4_metallurgy/data/gm4_metallurgy/functions/casting/add_metal/add_copper.mcfunction @@ -11,9 +11,3 @@ particle block weathered_copper ~.45 ~0.1 ~.65 .1 .1 .1 0 2 playsound item.bucket.empty_lava block @a[distance=..8] ~ ~ ~ .25 1.5 advancement grant @a[distance=..5,gamemode=!spectator] only gm4:metallurgy_cast kill @e[type=item,tag=gm4_ml_in_animation,dx=0,dz=0,limit=1,nbt={Item:{Count:1b,tag:{gm4_metallurgy:{metal:{type:"copper"}}}},OnGround:1b}] - - -#================================================== -# As of 1.17, this is now deprecated, and used -# for legacy casting. Please use Bismuth -#================================================== diff --git a/gm4_metallurgy/data/gm4_metallurgy/functions/casting/add_metal/add_thorium_brass.mcfunction b/gm4_metallurgy/data/gm4_metallurgy/functions/casting/add_metal/add_thorium_brass.mcfunction index 2bcfd62908..958f3df30a 100644 --- a/gm4_metallurgy/data/gm4_metallurgy/functions/casting/add_metal/add_thorium_brass.mcfunction +++ b/gm4_metallurgy/data/gm4_metallurgy/functions/casting/add_metal/add_thorium_brass.mcfunction @@ -18,9 +18,3 @@ particle block lime_concrete_powder ~.45 ~0.1 ~.65 .1 .1 .1 0 2 playsound item.bucket.empty_lava block @a[distance=..8] ~ ~ ~ .25 1.5 advancement grant @a[distance=..5,gamemode=!spectator] only gm4:metallurgy_cast kill @e[type=item,tag=gm4_ml_in_animation,dx=0,dz=0,limit=1,nbt={Item:{Count:1b,tag:{gm4_metallurgy:{metal:{type:"thorium_brass"}}}},OnGround:1b}] - - -#================================================== -# As of 1.17, this is now deprecated, and used -# for legacy casting. Please use Curie's Bismium -#================================================== diff --git a/gm4_metallurgy/data/gm4_metallurgy/functions/casting/sustain_mould.mcfunction b/gm4_metallurgy/data/gm4_metallurgy/functions/casting/sustain_mould.mcfunction index 6e04b77709..8f77f7db77 100644 --- a/gm4_metallurgy/data/gm4_metallurgy/functions/casting/sustain_mould.mcfunction +++ b/gm4_metallurgy/data/gm4_metallurgy/functions/casting/sustain_mould.mcfunction @@ -9,9 +9,6 @@ execute if block ~ ~1 ~ lava run scoreboard players add @s gm4_ml_heat 3 execute if score @s gm4_ml_heat matches 1..89 unless block ~ ~ ~ #minecraft:sand run function gm4_metallurgy:casting/destroy_mould execute unless score @s gm4_ml_heat matches 1..89 run function gm4_metallurgy:casting/destroy_mould -# update old casts (pre PR#487: https://github.com/Gamemode4Dev/GM4_Datapacks/pull/487) -execute if score @s gm4_ml_heat matches 50..89 align xyz positioned ~ ~1 ~ as @e[type=item,dx=0,dy=0,dz=0,tag=!gm4_ml_has_latest_nbt] if data entity @s Item.tag.gm4_metallurgy.stored_shamir run function gm4_metallurgy:update_nbt_version/load_band - # add metals if player desires to do so execute if score @s gm4_ml_heat matches 50..89 align xyz positioned ~ ~1 ~ if entity @e[type=item,nbt={Item:{Count:1b,tag:{gm4_metallurgy:{metal:{castable:1b}}}},OnGround:1b},dx=0,dy=0,dz=0] run function gm4_metallurgy:casting/add_metal/initialize diff --git a/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/add_band/check.mcfunction b/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/add_band/check.mcfunction index 2dbdf4bb47..1b6fb6a1f3 100644 --- a/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/add_band/check.mcfunction +++ b/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/add_band/check.mcfunction @@ -1,9 +1,6 @@ # @s = obsidian cast with a shamir on it # called from smooshing/prepare_transfer -# prepare shamir if NBT needs to be updated from old version -function gm4_metallurgy:update_nbt_version/load_band - # check whether the other item is valid scoreboard players set valid_item gm4_ml_data 0 execute as @e[type=item,dx=0,limit=1,nbt={Item:{Count:1b}},nbt=!{Item:{tag:{gm4_metallurgy:{has_shamir:1b}}}}] run function gm4_metallurgy:smooshing/add_band/check_item diff --git a/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/add_band/found_item.mcfunction b/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/add_band/found_item.mcfunction index b26f95d11e..541e28f97f 100644 --- a/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/add_band/found_item.mcfunction +++ b/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/add_band/found_item.mcfunction @@ -13,12 +13,9 @@ execute unless data entity @s Item.tag.CustomModelData run data modify entity @s function #gm4_metallurgy:apply_band # copy SkullOwner.Name to the new item (which is copied back to the obsidian cast when unsmooshed) -# legacy shamirs do not have this tag: invoke #update_skull_owner to migrate legacy shamirs to the new format data remove storage gm4_metallurgy:temp/shamir skull_owner data modify storage gm4_metallurgy:temp/shamir skull_owner set from entity @e[type=item,tag=gm4_ml_source,dx=0,limit=1] Item.tag.SkullOwner.Name execute unless data storage gm4_metallurgy:temp/shamir skull_owner run data modify storage gm4_metallurgy:temp/shamir name set from entity @s Item.tag.gm4_metallurgy.active_shamir -execute unless data storage gm4_metallurgy:temp/shamir skull_owner run function #gm4_metallurgy:update_skull_owner -data modify entity @s Item.tag.gm4_metallurgy.skull_owner set from storage gm4_metallurgy:temp/shamir skull_owner # use anvil durability function gm4_metallurgy:smooshing/anvil/use diff --git a/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/remove_band/finish_item.mcfunction b/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/remove_band/finish_item.mcfunction index 2fc2e3ba5e..b2493512e3 100644 --- a/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/remove_band/finish_item.mcfunction +++ b/gm4_metallurgy/data/gm4_metallurgy/functions/smooshing/remove_band/finish_item.mcfunction @@ -16,7 +16,5 @@ data modify entity @s Item.tag.CustomModelData set from entity @e[type=item,tag= data remove storage gm4_metallurgy:temp/shamir skull_owner data modify storage gm4_metallurgy:temp/shamir skull_owner set from entity @e[type=item,tag=gm4_ml_source,dx=0,limit=1] Item.tag.gm4_metallurgy.skull_owner execute unless data storage gm4_metallurgy:temp/shamir skull_owner run data modify storage gm4_metallurgy:temp/shamir name set from entity @s Item.tag.gm4_metallurgy.stored_shamir -execute unless data storage gm4_metallurgy:temp/shamir skull_owner run function #gm4_metallurgy:update_skull_owner -data modify entity @s Item.tag.SkullOwner.Name set from storage gm4_metallurgy:temp/shamir skull_owner tag @s add gm4_ml_smooshed diff --git a/gm4_metallurgy/data/gm4_metallurgy/functions/update_nbt_version/load_band.mcfunction b/gm4_metallurgy/data/gm4_metallurgy/functions/update_nbt_version/load_band.mcfunction deleted file mode 100644 index 51936d54b5..0000000000 --- a/gm4_metallurgy/data/gm4_metallurgy/functions/update_nbt_version/load_band.mcfunction +++ /dev/null @@ -1,16 +0,0 @@ -# loads the NBT of @s into storage and starts the update process if necessary. -# items verified as having the most recent NBT version are marked using the tag "gm4_ml_has_latest_nbt" AFTER being checked by this function. -# @s = band item to be checked for recent NBT -# run from smooshing/add_band/check and casting/sustain_mould - -# load nbt into storage -data modify storage gm4_metallurgy:temp/item/band gm4_metallurgy set from entity @s[tag=!gm4_ml_has_latest_nbt] Item.tag.gm4_metallurgy - -# update NBT if outdated tag was found -execute if data storage gm4_metallurgy:temp/item/band gm4_metallurgy.ore_type run function gm4_metallurgy:update_nbt_version/update_band - -# mark items with recent NBT using a tag for increased performance when clocked -tag @s add gm4_ml_has_latest_nbt - -# clear storage -data remove storage gm4_metallurgy:temp/item/band gm4_metallurgy diff --git a/gm4_metallurgy/data/gm4_metallurgy/functions/update_nbt_version/update_band.mcfunction b/gm4_metallurgy/data/gm4_metallurgy/functions/update_nbt_version/update_band.mcfunction deleted file mode 100644 index 204f4d2b9a..0000000000 --- a/gm4_metallurgy/data/gm4_metallurgy/functions/update_nbt_version/update_band.mcfunction +++ /dev/null @@ -1,16 +0,0 @@ -# updates NBT of pre-PR#487 (band recycling) bands to the new format. This function may be removed in the distant future. -# @s = band item with outdated NBT -# run from update_nbt_version/load_nbt - -execute if data storage gm4_metallurgy:temp/item/band gm4_metallurgy{ore_type:"aluminium"} run data modify storage gm4_metallurgy:temp/item/band gm4_metallurgy.metal set value {amount:[12s],type:"aluminium",castable:1b} -execute if data storage gm4_metallurgy:temp/item/band gm4_metallurgy{ore_type:"barimium"} run data modify storage gm4_metallurgy:temp/item/band gm4_metallurgy.metal set value {amount:[9s,3s],type:"barimium",castable:1b} -execute if data storage gm4_metallurgy:temp/item/band gm4_metallurgy{ore_type:"barium"} run data modify storage gm4_metallurgy:temp/item/band gm4_metallurgy.metal set value {amount:[12s],type:"barium",castable:1b} -execute if data storage gm4_metallurgy:temp/item/band gm4_metallurgy{ore_type:"copper"} run data modify storage gm4_metallurgy:temp/item/band gm4_metallurgy.metal set value {amount:[12s],type:"bismuth",castable:1b} -execute if data storage gm4_metallurgy:temp/item/band gm4_metallurgy{ore_type:"thorium"} run data modify storage gm4_metallurgy:temp/item/band gm4_metallurgy.metal set value {amount:[12s],type:"thorium",castable:1b} -execute if data storage gm4_metallurgy:temp/item/band gm4_metallurgy{ore_type:"thorium_brass"} run data modify storage gm4_metallurgy:temp/item/band gm4_metallurgy.metal set value {amount:[9s,3s],type:"curies_bismium",castable:1b} - -data merge storage gm4_metallurgy:temp/item/band {gm4_metallurgy:{item:"obsidian_cast"}} -data remove storage gm4_metallurgy:temp/item/band gm4_metallurgy.ore_type - -# overwrite source entity NBT with updated NBT -data modify entity @s Item.tag.gm4_metallurgy set from storage gm4_metallurgy:temp/item/band gm4_metallurgy diff --git a/gm4_metallurgy/data/gm4_metallurgy/predicates/infinitas_active.json b/gm4_metallurgy/data/gm4_metallurgy/predicates/infinitas_active.json index 89a550def1..c3e844094e 100644 --- a/gm4_metallurgy/data/gm4_metallurgy/predicates/infinitas_active.json +++ b/gm4_metallurgy/data/gm4_metallurgy/predicates/infinitas_active.json @@ -5,14 +5,20 @@ "condition": "minecraft:entity_properties", "entity": "this", "predicate": { - "nbt": "{Tags:[\"gm4_infinitas_mainhand_empty\"]}" + "nbt": "{Tags:[\"gm4_infinitas_mainhand_empty\"]}", + "flags": { + "is_sneaking": true + } } }, { "condition": "minecraft:entity_properties", "entity": "this", "predicate": { - "nbt": "{Tags:[\"gm4_infinitas_offhand_empty\"]}" + "nbt": "{Tags:[\"gm4_infinitas_offhand_empty\"]}", + "flags": { + "is_sneaking": true + } } } ] diff --git a/gm4_metallurgy/data/gm4_metallurgy/structures/test_smooshing.nbt b/gm4_metallurgy/data/gm4_metallurgy/structures/test_smooshing.nbt new file mode 100644 index 0000000000..35b3cf70af Binary files /dev/null and b/gm4_metallurgy/data/gm4_metallurgy/structures/test_smooshing.nbt differ diff --git a/gm4_metallurgy/data/gm4_metallurgy/tags/functions/update_skull_owner.json b/gm4_metallurgy/data/gm4_metallurgy/tags/functions/update_skull_owner.json deleted file mode 100644 index 0c60e89499..0000000000 --- a/gm4_metallurgy/data/gm4_metallurgy/tags/functions/update_skull_owner.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "values": [ - "gm4_arborenda_shamir:update_skull_owner", - "gm4_defuse_shamir:update_skull_owner", - "gm4_ender_bolt_shamir:update_skull_owner", - "gm4_forterra_shamir:update_skull_owner", - "gm4_gemini_shamir:update_skull_owner", - "gm4_hypexperia_shamir:update_skull_owner", - "gm4_moneo_shamir:update_skull_owner", - "gm4_musical_shamir:update_skull_owner", - "gm4_sensus_shamir:update_skull_owner", - "gm4_infinitas_shamir:update_skull_owner", - "gm4_tinker_shamir:update_skull_owner" - ] -} diff --git a/gm4_metallurgy/data/gm4_moneo_shamir/functions/update_skull_owner.mcfunction b/gm4_metallurgy/data/gm4_moneo_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index b1c1d8ba34..0000000000 --- a/gm4_metallurgy/data/gm4_moneo_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"moneo"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_moneo_shamir:band/v0" diff --git a/gm4_metallurgy/data/gm4_musical_shamir/functions/update_skull_owner.mcfunction b/gm4_metallurgy/data/gm4_musical_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index c0f8fab475..0000000000 --- a/gm4_metallurgy/data/gm4_musical_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"musical"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_musical_shamir:band/v0" diff --git a/gm4_metallurgy/data/gm4_sensus_shamir/functions/update_skull_owner.mcfunction b/gm4_metallurgy/data/gm4_sensus_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index cee5438e62..0000000000 --- a/gm4_metallurgy/data/gm4_sensus_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"sensus"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_sensus_shamir:band/v0" diff --git a/gm4_metallurgy/data/gm4_tinker_shamir/functions/update_skull_owner.mcfunction b/gm4_metallurgy/data/gm4_tinker_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index 7377abe6ce..0000000000 --- a/gm4_metallurgy/data/gm4_tinker_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"tinker"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_tinker_shamir:band/v0" diff --git a/gm4_mysterious_midnights/overlay_18/data/gm4_mysterious_midnights/functions/calculate_difficulty.mcfunction b/gm4_mysterious_midnights/overlay_18/data/gm4_mysterious_midnights/functions/calculate_difficulty.mcfunction new file mode 100644 index 0000000000..1ab0499668 --- /dev/null +++ b/gm4_mysterious_midnights/overlay_18/data/gm4_mysterious_midnights/functions/calculate_difficulty.mcfunction @@ -0,0 +1,19 @@ +# @s = none +# at 29999998 1 7134 (forceloaded chunk) +# run from gm4_mysterious_midnights:start_midnight + +# generate random number from 0 to 15 +execute store result storage gm4_mysterious_midnights:temp day int 1 run time query day +function gm4_mysterious_midnights:roll_difficulty with storage gm4_mysterious_midnights:temp +scoreboard players set 16 gm4_mm_data 16 +scoreboard players operation difficulty gm4_mm_data %= 16 gm4_mm_data + +# spawn AEC for random selection (1/3 of nights are not a mysterious midnight) +execute if score difficulty gm4_mm_data matches 6.. run playsound entity.wolf.howl weather @a[x=0] ~ ~100000000000 ~ 0 1 1 +execute if score difficulty gm4_mm_data matches 6..10 run function #gm4_mysterious_midnights:setup_common_expansion +execute if score difficulty gm4_mm_data matches 11..13 run function #gm4_mysterious_midnights:setup_uncommon_expansion +execute if score difficulty gm4_mm_data matches 14.. run function #gm4_mysterious_midnights:setup_rare_expansion + +# chose one expansion +tag @e[type=area_effect_cloud,tag=gm4_mysterious_midnights_expansion,limit=1,sort=random] add gm4_mysterious_midnights_active +kill @e[type=area_effect_cloud,tag=gm4_mysterious_midnights_expansion,tag=!gm4_mysterious_midnights_active] diff --git a/gm4_mysterious_midnights/overlay_18/data/gm4_mysterious_midnights/functions/roll_difficulty.mcfunction b/gm4_mysterious_midnights/overlay_18/data/gm4_mysterious_midnights/functions/roll_difficulty.mcfunction new file mode 100644 index 0000000000..2cee4b00a6 --- /dev/null +++ b/gm4_mysterious_midnights/overlay_18/data/gm4_mysterious_midnights/functions/roll_difficulty.mcfunction @@ -0,0 +1,10 @@ +# Rolls a new value for the difficulty based on the world seed and the day number. +# @s = none +# at 29999998 1 7134 (forceloaded chunk) +# run from gm4_mysterious_midnights:calculate_difficulty + +# reset rng to use day count as seed +$random reset gm_mysterious_midnights:midnight_difficulty $(day) true true + +# store random value +execute store result score difficulty gm4_mm_data run random value 0..15 gm_mysterious_midnights:midnight_difficulty diff --git a/gm4_orb_of_ankou/data/gm4_corripio_shamir/functions/update_skull_owner.mcfunction b/gm4_orb_of_ankou/data/gm4_corripio_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index 1c51489637..0000000000 --- a/gm4_orb_of_ankou/data/gm4_corripio_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"corripio"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_corripio_shamir:band/v0" diff --git a/gm4_orb_of_ankou/data/gm4_metallurgy/tags/functions/update_skull_owner.json b/gm4_orb_of_ankou/data/gm4_metallurgy/tags/functions/update_skull_owner.json deleted file mode 100644 index 386be136d7..0000000000 --- a/gm4_orb_of_ankou/data/gm4_metallurgy/tags/functions/update_skull_owner.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "gm4_corripio_shamir:update_skull_owner" - ] -} diff --git a/gm4_percurro_shamir/data/gm4_metallurgy/tags/functions/update_skull_owner.json b/gm4_percurro_shamir/data/gm4_metallurgy/tags/functions/update_skull_owner.json deleted file mode 100644 index 16b70a5568..0000000000 --- a/gm4_percurro_shamir/data/gm4_metallurgy/tags/functions/update_skull_owner.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "gm4_percurro_shamir:update_skull_owner" - ] -} diff --git a/gm4_percurro_shamir/data/gm4_percurro_shamir/functions/update_skull_owner.mcfunction b/gm4_percurro_shamir/data/gm4_percurro_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index 20b542e6f6..0000000000 --- a/gm4_percurro_shamir/data/gm4_percurro_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"percurro"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_percurro_shamir:band/v0" diff --git a/gm4_smelteries/data/gm4_smelteries/functions/main.mcfunction b/gm4_smelteries/data/gm4_smelteries/functions/main.mcfunction index 62cc4cf37d..7b5e98cbb7 100644 --- a/gm4_smelteries/data/gm4_smelteries/functions/main.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/functions/main.mcfunction @@ -1,5 +1,3 @@ -# NOTE remove during 1.20 update: updates old machines to include a marker entity -execute as @e[type=armor_stand,tag=gm4_smeltery] at @s run function gm4_smelteries:upgrade_machine_stand # process machine execute as @e[type=marker,tag=gm4_smeltery] at @s run function gm4_smelteries:process diff --git a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand.mcfunction b/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand.mcfunction deleted file mode 100644 index b421bfdf5a..0000000000 --- a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand.mcfunction +++ /dev/null @@ -1,17 +0,0 @@ -# updates old machine armor stands -# @s = smeltery armor stand -# located at @s -# run from gm4_smelteries:main - -# update blocks -scoreboard players set $smeltery_placed gm4_machine_data 0 -execute if block ~1 ~ ~ furnace[facing=east] if block ~-1 ~ ~-1 iron_block if block ~-1 ~ ~ iron_block if block ~-1 ~ ~1 iron_block if block ~ ~ ~-1 iron_block if block ~ ~ ~1 iron_block if block ~1 ~ ~-1 iron_block if block ~1 ~ ~1 iron_block if block ~-1 ~1 ~-1 iron_block if block ~-1 ~1 ~ iron_block if block ~-1 ~1 ~1 iron_block if block ~ ~1 ~-1 iron_block if block ~ ~1 ~1 iron_block if block ~1 ~1 ~-1 iron_block if block ~1 ~1 ~1 iron_block run function gm4_smelteries:upgrade_machine_stand/east -execute if score $smeltery_placed gm4_machine_data matches 0 if block ~-1 ~ ~ furnace[facing=west] if block ~-1 ~ ~-1 iron_block if block ~-1 ~ ~1 iron_block if block ~ ~ ~-1 iron_block if block ~ ~ ~1 iron_block if block ~1 ~ ~-1 iron_block if block ~1 ~ ~ iron_block if block ~1 ~ ~1 iron_block if block ~-1 ~1 ~-1 iron_block if block ~-1 ~1 ~1 iron_block if block ~ ~1 ~-1 iron_block if block ~ ~1 ~1 iron_block if block ~1 ~1 ~-1 iron_block if block ~1 ~1 ~ iron_block if block ~1 ~1 ~1 iron_block run function gm4_smelteries:upgrade_machine_stand/west -execute if score $smeltery_placed gm4_machine_data matches 0 if block ~ ~ ~1 furnace[facing=south] if block ~-1 ~ ~-1 iron_block if block ~-1 ~ ~ iron_block if block ~-1 ~ ~1 iron_block if block ~ ~ ~-1 iron_block if block ~1 ~ ~-1 iron_block if block ~1 ~ ~ iron_block if block ~1 ~ ~1 iron_block if block ~-1 ~1 ~-1 iron_block if block ~-1 ~1 ~ iron_block if block ~-1 ~1 ~1 iron_block if block ~ ~1 ~-1 iron_block if block ~1 ~1 ~-1 iron_block if block ~1 ~1 ~ iron_block if block ~1 ~1 ~1 iron_block run function gm4_smelteries:upgrade_machine_stand/south -execute if score $smeltery_placed gm4_machine_data matches 0 if block ~ ~ ~-1 furnace[facing=north] if block ~-1 ~ ~-1 iron_block if block ~-1 ~ ~ iron_block if block ~-1 ~ ~1 iron_block if block ~ ~ ~1 iron_block if block ~1 ~ ~-1 iron_block if block ~1 ~ ~ iron_block if block ~1 ~ ~1 iron_block if block ~-1 ~1 ~-1 iron_block if block ~-1 ~1 ~ iron_block if block ~-1 ~1 ~1 iron_block if block ~ ~1 ~1 iron_block if block ~1 ~1 ~-1 iron_block if block ~1 ~1 ~ iron_block if block ~1 ~1 ~1 iron_block run function gm4_smelteries:upgrade_machine_stand/north -execute if score $smeltery_placed gm4_machine_data matches 0 align xyz positioned ~0.5 ~0.5 ~0.5 run function gm4_smelteries:upgrade_machine_stand/default - -# drop items from the original hopper -execute if score $smeltery_placed gm4_machine_data matches 0 if data storage gm4_smelteries:temp Items[-1] align xyz positioned ~0.5 ~1.1 ~0.5 run function gm4_smelteries:upgrade_machine_stand/drop_items -execute unless score $smeltery_placed gm4_machine_data matches 0 if data storage gm4_smelteries:temp Items[-1] align xyz positioned ~0.5 ~0.2 ~0.5 run function gm4_smelteries:upgrade_machine_stand/drop_items -data remove storage gm4_smelteries:temp Items diff --git a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/default.mcfunction b/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/default.mcfunction deleted file mode 100644 index b74b533475..0000000000 --- a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/default.mcfunction +++ /dev/null @@ -1,24 +0,0 @@ -# updates old machine armor stands -# @s = smeltery armor stand -# located at @s align xyz positioned ~0.5 ~0.5 ~0.5 -# run from gm4_smelteries:upgrade_machine_stand - -# place furnace -data modify storage gm4_smelteries:temp Items set from block ~ ~ ~ Items -setblock ~ ~ ~ furnace[facing=north]{CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Smeltery","font":"minecraft:default","color":"#373737"},[{"text":"Smeltery","font":"gm4:half_scale"},{"text":"Smeltery","font":"gm4:inverted"},{"text":"Smeltery","font":"gm4:inverted_spacing"},{"text":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","font":"gm4:container_gui","color":"white"},{"text":"Smeltery","font":"gm4:half_scale"},{"text":"Smeltery","font":"gm4:inverted"},{"text":"Smeltery","font":"gm4:inverted_spacing"},{"text":"Smeltery","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.smeltery","font":"minecraft:default","color":"#373737"},[{"translate":"container.gm4.smeltery","font":"gm4:half_scale"},{"translate":"container.gm4.smeltery","font":"gm4:inverted"},{"translate":"container.gm4.smeltery","font":"gm4:inverted_spacing"},{"translate":"container.gm4.smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.smeltery","font":"gm4:half_scale"},{"translate":"container.gm4.smeltery","font":"gm4:inverted"},{"translate":"container.gm4.smeltery","font":"gm4:inverted_spacing"},{"translate":"container.gm4.smeltery","font":"minecraft:default","color":"#373737"}]]}]}'} - -# summon cauldron display armor stand -summon armor_stand ~ ~-1.5 ~1 {NoGravity:1,Marker:1,Invulnerable:1,Invisible:1,Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_smeltery_cauldron"',ArmorItems:[{},{},{},{}],Rotation:[180.0f,0.0f]} - -# summon display armor stand and marker entity -summon armor_stand ~ ~-0.3 ~ {Small:1,NoGravity:1,Marker:1,Invulnerable:1,Invisible:1,Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_stand","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_smeltery_stand"',ArmorItems:[{},{},{},{id:"minecraft:iron_block",Count:1b,tag:{CustomModelData:3420002}}],Rotation:[180.0f,0.0f]} -summon marker ~ ~ ~ {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:'"gm4_smeltery"',Rotation:[180.0f,0.0f]} - -# link cauldron stand to smeltery marker -execute store result score $new gm4_smelt_id run data get entity @e[type=marker,distance=..0.1,tag=gm4_new_machine,limit=1] UUID[3] -scoreboard players operation @e[distance=..3,tag=gm4_new_machine] gm4_smelt_id = $new gm4_smelt_id - -# set entity version -scoreboard players set @e[distance=..2,tag=gm4_new_machine] gm4_entity_version 1 -tag @e[distance=..3] remove gm4_new_machine -kill @s diff --git a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/drop_items.mcfunction b/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/drop_items.mcfunction deleted file mode 100644 index b4263162c7..0000000000 --- a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/drop_items.mcfunction +++ /dev/null @@ -1,11 +0,0 @@ -# drops items from the original hopper, drops directly above the original hopper -# @s = smeltery armor stand -# located at @s align xyz positioned ~0.5 ~0.7 ~0.5 -# run from gm4_smelteries:upgrade_machine_stand - -summon item ~ ~ ~ {Tags:["gm4_smeltery_item"],Item:{id:"minecraft:stick",Count:1b,tag:{gm4_smelteries:{id:"delete"}}}} -data modify entity @e[type=item,tag=gm4_smeltery_item,distance=..0.5,limit=1] Item set from storage gm4_smelteries:temp Items[-1] -kill @e[type=item,tag=gm4_smeltery_item,distance=..2,nbt={Item:{tag:{gm4_smelteries:{id:"delete"}}}}] -tag @e[type=item,distance=..0.5] remove gm4_smeltery_item -data remove storage gm4_smelteries:temp Items[-1] -execute if data storage gm4_smelteries:temp Items[-1] run function gm4_smelteries:upgrade_machine_stand/drop_items diff --git a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/east.mcfunction b/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/east.mcfunction deleted file mode 100644 index 961c776771..0000000000 --- a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/east.mcfunction +++ /dev/null @@ -1,22 +0,0 @@ -# updates old machine armor stands -# @s = smeltery armor stand -# located at @s -# run from gm4_smelteries:upgrade_machine_stand - -scoreboard players set $smeltery_placed gm4_machine_data 1 - -data modify storage gm4_smelteries:temp Items set from block ~ ~ ~ Items -execute align xyz run summon marker ~1.5 ~0.5 ~0.5 {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:'"gm4_smeltery"',Rotation:[-90.0f,0.0f]} -execute align xyz run summon armor_stand ~1.5 ~0.2 ~0.5 {Small:1,NoGravity:1,Marker:1,Invulnerable:1,Invisible:1,Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_stand","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_smeltery_stand"',ArmorItems:[{},{},{},{id:"minecraft:iron_block",Count:1b,tag:{CustomModelData:3420002}}],Rotation:[-90.0f,0.0f]} -data merge entity @s {Silent:1,Small:0,Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_smeltery_cauldron"',ArmorItems:[{},{},{},{}],HandItems:[{},{}],Rotation:[-90.0f,0.0f]} -data merge block ~1 ~ ~ {CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Smeltery","font":"minecraft:default","color":"#373737"},[{"text":"Smeltery","font":"gm4:half_scale"},{"text":"Smeltery","font":"gm4:inverted"},{"text":"Smeltery","font":"gm4:inverted_spacing"},{"text":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","font":"gm4:container_gui","color":"white"},{"text":"Smeltery","font":"gm4:half_scale"},{"text":"Smeltery","font":"gm4:inverted"},{"text":"Smeltery","font":"gm4:inverted_spacing"},{"text":"Smeltery","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.smeltery","font":"minecraft:default","color":"#373737"},[{"translate":"container.gm4.smeltery","font":"gm4:half_scale"},{"translate":"container.gm4.smeltery","font":"gm4:inverted"},{"translate":"container.gm4.smeltery","font":"gm4:inverted_spacing"},{"translate":"container.gm4.smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.smeltery","font":"gm4:half_scale"},{"translate":"container.gm4.smeltery","font":"gm4:inverted"},{"translate":"container.gm4.smeltery","font":"gm4:inverted_spacing"},{"translate":"container.gm4.smeltery","font":"minecraft:default","color":"#373737"}]]}]}'} -setblock ~ ~ ~ cauldron -tp @s ~ ~-1.1 ~ - -# link cauldron armor stand to smeltery marker -execute store result score $new gm4_smelt_id run data get entity @e[type=marker,distance=..2,tag=gm4_smeltery,tag=gm4_new_machine,limit=1] UUID[3] -scoreboard players operation @e[distance=..2,tag=gm4_new_machine] gm4_smelt_id = $new gm4_smelt_id - -# set entity version -scoreboard players set @e[distance=..2,tag=gm4_new_machine] gm4_entity_version 1 -tag @e[distance=..2] remove gm4_new_machine diff --git a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/north.mcfunction b/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/north.mcfunction deleted file mode 100644 index e88f046d8f..0000000000 --- a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/north.mcfunction +++ /dev/null @@ -1,22 +0,0 @@ -# updates old machine armor stands -# @s = smeltery armor stand -# located at @s -# run from gm4_smelteries:upgrade_machine_stand - -scoreboard players set $smeltery_placed gm4_machine_data 1 - -data modify storage gm4_smelteries:temp Items set from block ~ ~ ~ Items -execute align xyz run summon marker ~0.5 ~0.5 ~-0.5 {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:'"gm4_smeltery"',Rotation:[180.0f,0.0f]} -execute align xyz run summon armor_stand ~0.5 ~0.2 ~-0.5 {Small:1,NoGravity:1,Marker:1,Invulnerable:1,Invisible:1,Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_stand","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_smeltery_stand"',ArmorItems:[{},{},{},{id:"minecraft:iron_block",Count:1b,tag:{CustomModelData:3420002}}],Rotation:[180.0f,0.0f]} -data merge entity @s {Silent:1,Small:0,Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_smeltery_cauldron"',ArmorItems:[{},{},{},{}],HandItems:[{},{}],Rotation:[180.0f,0.0f]} -data merge block ~ ~ ~-1 {CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Smeltery","font":"minecraft:default","color":"#373737"},[{"text":"Smeltery","font":"gm4:half_scale"},{"text":"Smeltery","font":"gm4:inverted"},{"text":"Smeltery","font":"gm4:inverted_spacing"},{"text":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","font":"gm4:container_gui","color":"white"},{"text":"Smeltery","font":"gm4:half_scale"},{"text":"Smeltery","font":"gm4:inverted"},{"text":"Smeltery","font":"gm4:inverted_spacing"},{"text":"Smeltery","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.smeltery","font":"minecraft:default","color":"#373737"},[{"translate":"container.gm4.smeltery","font":"gm4:half_scale"},{"translate":"container.gm4.smeltery","font":"gm4:inverted"},{"translate":"container.gm4.smeltery","font":"gm4:inverted_spacing"},{"translate":"container.gm4.smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.smeltery","font":"gm4:half_scale"},{"translate":"container.gm4.smeltery","font":"gm4:inverted"},{"translate":"container.gm4.smeltery","font":"gm4:inverted_spacing"},{"translate":"container.gm4.smeltery","font":"minecraft:default","color":"#373737"}]]}]}'} -setblock ~ ~ ~ cauldron -tp @s ~ ~-1.1 ~ - -# link cauldron armor stand to smeltery marker -execute store result score $new gm4_smelt_id run data get entity @e[type=marker,distance=..2,tag=gm4_smeltery,tag=gm4_new_machine,limit=1] UUID[3] -scoreboard players operation @e[distance=..2,tag=gm4_new_machine] gm4_smelt_id = $new gm4_smelt_id - -# set entity version -scoreboard players set @e[distance=..2,tag=gm4_new_machine] gm4_entity_version 1 -tag @e[distance=..2] remove gm4_new_machine diff --git a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/south.mcfunction b/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/south.mcfunction deleted file mode 100644 index 41f7bf4734..0000000000 --- a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/south.mcfunction +++ /dev/null @@ -1,22 +0,0 @@ -# updates old machine armor stands -# @s = smeltery armor stand -# located at @s -# run from gm4_smelteries:upgrade_machine_stand - -scoreboard players set $smeltery_placed gm4_machine_data 1 - -data modify storage gm4_smelteries:temp Items set from block ~ ~ ~ Items -execute align xyz run summon marker ~0.5 ~0.5 ~1.5 {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:'"gm4_smeltery"',Rotation:[0.0f,0.0f]} -execute align xyz run summon armor_stand ~0.5 ~0.2 ~1.5 {Small:1,NoGravity:1,Marker:1,Invulnerable:1,Invisible:1,Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_stand","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_smeltery_stand"',ArmorItems:[{},{},{},{id:"minecraft:iron_block",Count:1b,tag:{CustomModelData:3420002}}],Rotation:[0.0f,0.0f]} -data merge entity @s {Small:0,Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_smeltery_cauldron"',ArmorItems:[{},{},{},{}],HandItems:[{},{}],Rotation:[0.0f,0.0f]} -data merge block ~ ~ ~1 {CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Smeltery","font":"minecraft:default","color":"#373737"},[{"text":"Smeltery","font":"gm4:half_scale"},{"text":"Smeltery","font":"gm4:inverted"},{"text":"Smeltery","font":"gm4:inverted_spacing"},{"text":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","font":"gm4:container_gui","color":"white"},{"text":"Smeltery","font":"gm4:half_scale"},{"text":"Smeltery","font":"gm4:inverted"},{"text":"Smeltery","font":"gm4:inverted_spacing"},{"text":"Smeltery","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.smeltery","font":"minecraft:default","color":"#373737"},[{"translate":"container.gm4.smeltery","font":"gm4:half_scale"},{"translate":"container.gm4.smeltery","font":"gm4:inverted"},{"translate":"container.gm4.smeltery","font":"gm4:inverted_spacing"},{"translate":"container.gm4.smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.smeltery","font":"gm4:half_scale"},{"translate":"container.gm4.smeltery","font":"gm4:inverted"},{"translate":"container.gm4.smeltery","font":"gm4:inverted_spacing"},{"translate":"container.gm4.smeltery","font":"minecraft:default","color":"#373737"}]]}]}'} -setblock ~ ~ ~ cauldron -tp @s ~ ~-1.1 ~ - -# link cauldron armor stand to smeltery marker -execute store result score $new gm4_smelt_id run data get entity @e[type=marker,distance=..2,tag=gm4_smeltery,tag=gm4_new_machine,limit=1] UUID[3] -scoreboard players operation @e[distance=..2,tag=gm4_new_machine] gm4_smelt_id = $new gm4_smelt_id - -# set entity version -scoreboard players set @e[distance=..2,tag=gm4_new_machine] gm4_entity_version 1 -tag @e[distance=..2] remove gm4_new_machine diff --git a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/west.mcfunction b/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/west.mcfunction deleted file mode 100644 index 7837d8c483..0000000000 --- a/gm4_smelteries/data/gm4_smelteries/functions/upgrade_machine_stand/west.mcfunction +++ /dev/null @@ -1,22 +0,0 @@ -# updates old machine armor stands -# @s = smeltery armor stand -# located at @s -# run from gm4_smelteries:upgrade_machine_stand - -scoreboard players set $smeltery_placed gm4_machine_data 1 - -data modify storage gm4_smelteries:temp Items set from block ~ ~ ~ Items -execute align xyz run summon marker ~-0.5 ~0.5 ~0.5 {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:'"gm4_smeltery"',Rotation:[90.0f,0.0f]} -execute align xyz run summon armor_stand ~-0.5 ~0.2 ~0.5 {Small:1,NoGravity:1,Marker:1,Invulnerable:1,Invisible:1,Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_stand","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_smeltery_stand"',ArmorItems:[{},{},{},{id:"minecraft:iron_block",Count:1b,tag:{CustomModelData:3420002}}],Rotation:[90.0f,0.0f]} -data merge entity @s {Small:0,Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_smeltery_cauldron"',ArmorItems:[{},{},{},{}],HandItems:[{},{}],Rotation:[90.0f,0.0f]} -data merge block ~-1 ~ ~ {CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Smeltery","font":"minecraft:default","color":"#373737"},[{"text":"Smeltery","font":"gm4:half_scale"},{"text":"Smeltery","font":"gm4:inverted"},{"text":"Smeltery","font":"gm4:inverted_spacing"},{"text":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","font":"gm4:container_gui","color":"white"},{"text":"Smeltery","font":"gm4:half_scale"},{"text":"Smeltery","font":"gm4:inverted"},{"text":"Smeltery","font":"gm4:inverted_spacing"},{"text":"Smeltery","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.smeltery","font":"minecraft:default","color":"#373737"},[{"translate":"container.gm4.smeltery","font":"gm4:half_scale"},{"translate":"container.gm4.smeltery","font":"gm4:inverted"},{"translate":"container.gm4.smeltery","font":"gm4:inverted_spacing"},{"translate":"container.gm4.smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.smeltery","font":"gm4:half_scale"},{"translate":"container.gm4.smeltery","font":"gm4:inverted"},{"translate":"container.gm4.smeltery","font":"gm4:inverted_spacing"},{"translate":"container.gm4.smeltery","font":"minecraft:default","color":"#373737"}]]}]}'} -setblock ~ ~ ~ cauldron -tp @s ~ ~-1.1 ~ - -# link cauldron armor stand to smeltery marker -execute store result score $new gm4_smelt_id run data get entity @e[type=marker,distance=..2,tag=gm4_smeltery,tag=gm4_new_machine,limit=1] UUID[3] -scoreboard players operation @e[distance=..2,tag=gm4_new_machine] gm4_smelt_id = $new gm4_smelt_id - -# set entity version -scoreboard players set @e[distance=..2,tag=gm4_new_machine] gm4_entity_version 1 -tag @e[distance=..2] remove gm4_new_machine diff --git a/gm4_soul_glass/data/gm4_soul_glass/functions/main.mcfunction b/gm4_soul_glass/data/gm4_soul_glass/functions/main.mcfunction index 83adc66815..3b296eed86 100644 --- a/gm4_soul_glass/data/gm4_soul_glass/functions/main.mcfunction +++ b/gm4_soul_glass/data/gm4_soul_glass/functions/main.mcfunction @@ -1,10 +1,3 @@ -# upgrade area effect clouds to markers -execute as @e[type=area_effect_cloud,tag=gm4_sg_furnace] at @s run function gm4_soul_glass:upgrade_marker_bf -execute as @e[type=area_effect_cloud,tag=gm4_soul_glass] at @s run function gm4_soul_glass:upgrade_marker_sg -# NOTE remove during 1.20 update: updates old markers to include have an entity version score -execute as @e[type=marker,tag=gm4_sg_furnace,tag=!smithed.entity] at @s run function gm4_soul_glass:upgrade_marker_bf -execute as @e[type=marker,tag=gm4_soul_glass,tag=!smithed.entity] at @s run function gm4_soul_glass:upgrade_marker_sg - # process soul glass and blast furnace execute as @e[type=marker,tag=gm4_sg_furnace] at @s run function gm4_soul_glass:furnace/process execute as @e[type=marker,tag=gm4_soul_glass] at @s run function gm4_soul_glass:process diff --git a/gm4_soul_glass/data/gm4_soul_glass/functions/upgrade_marker_bf.mcfunction b/gm4_soul_glass/data/gm4_soul_glass/functions/upgrade_marker_bf.mcfunction deleted file mode 100644 index 62ed35da50..0000000000 --- a/gm4_soul_glass/data/gm4_soul_glass/functions/upgrade_marker_bf.mcfunction +++ /dev/null @@ -1,4 +0,0 @@ -summon marker ~ ~ ~ {CustomName:'"gm4_sg_furnace"',Tags:["gm4_sg_furnace","smithed.entity","smithed.strict","gm4_new_machine"]} -kill @s -scoreboard players set @e[type=marker,tag=gm4_new_machine,distance=..0.1] gm4_entity_version 1 -tag @e[type=marker,distance=..0.1] remove gm4_new_machine diff --git a/gm4_soul_glass/data/gm4_soul_glass/functions/upgrade_marker_sg.mcfunction b/gm4_soul_glass/data/gm4_soul_glass/functions/upgrade_marker_sg.mcfunction deleted file mode 100644 index bd9884ab00..0000000000 --- a/gm4_soul_glass/data/gm4_soul_glass/functions/upgrade_marker_sg.mcfunction +++ /dev/null @@ -1,8 +0,0 @@ -summon marker ~ ~ ~ {CustomName:'"gm4_soul_glass"',Tags:["gm4_soul_glass","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"]} -scoreboard players operation @e[type=minecraft:marker,distance=..0.1,tag=gm4_new_machine,limit=1] gm4_sg_levels = @s gm4_sg_levels -scoreboard players operation @e[type=minecraft:marker,distance=..0.1,tag=gm4_new_machine,limit=1] gm4_sg_primary = @s gm4_sg_primary -scoreboard players operation @e[type=minecraft:marker,distance=..0.1,tag=gm4_new_machine,limit=1] gm4_sg_secondary = @s gm4_sg_secondary - -kill @s -scoreboard players set @e[type=marker,tag=gm4_new_machine,distance=..0.1] gm4_entity_version 1 -tag @e[type=marker,distance=..0.1] remove gm4_new_machine diff --git a/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/check.mcfunction b/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/check.mcfunction index 43bb534130..7157edeb52 100644 --- a/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/check.mcfunction +++ b/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/check.mcfunction @@ -1,7 +1,7 @@ #@s = soul glass AEC #run from beacon_clock -execute unless block ~ ~-1 ~ beacon{primary_effect:-1} run function gm4_soul_glass:effect/update_effects +execute if data block ~ ~-1 ~ primary_effect run function gm4_soul_glass:effect/update_effects execute store result score @s gm4_sg_levels run data get block ~ ~-1 ~ Levels diff --git a/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/obtain_numeric_primary_id.mcfunction b/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/obtain_numeric_primary_id.mcfunction new file mode 100644 index 0000000000..527ffb326b --- /dev/null +++ b/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/obtain_numeric_primary_id.mcfunction @@ -0,0 +1,14 @@ +# Converts a string effect id to a matching numeric id, as scoreboard lookups are cheaper and this conversion only has to be done once when soul glass is first placed on a beacon +# @s = gm4_soul_glass marker +# at @s +# run from effect/update_effects + +# convert id +execute if data storage gm4_soul_glass:temp {effect:"minecraft:speed"} run scoreboard players set @s gm4_sg_primary 1 +execute if data storage gm4_soul_glass:temp {effect:"minecraft:haste"} run scoreboard players set @s gm4_sg_primary 3 +execute if data storage gm4_soul_glass:temp {effect:"minecraft:strength"} run scoreboard players set @s gm4_sg_primary 5 +execute if data storage gm4_soul_glass:temp {effect:"minecraft:jump_boost"} run scoreboard players set @s gm4_sg_primary 8 +execute if data storage gm4_soul_glass:temp {effect:"minecraft:resistance"} run scoreboard players set @s gm4_sg_primary 11 + +# clean up storage +data remove storage gm4_soul_glass:temp effect diff --git a/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/obtain_numeric_secondary_id.mcfunction b/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/obtain_numeric_secondary_id.mcfunction new file mode 100644 index 0000000000..1120861492 --- /dev/null +++ b/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/obtain_numeric_secondary_id.mcfunction @@ -0,0 +1,15 @@ +# Converts a string effect id to a matching numeric id, as scoreboard lookups are cheaper and this conversion only has to be done once when soul glass is first placed on a beacon +# @s = gm4_soul_glass marker +# at @s +# run from effect/update_effects + +# convert id +execute if data storage gm4_soul_glass:temp {effect:"minecraft:speed"} run scoreboard players set @s gm4_sg_secondary 1 +execute if data storage gm4_soul_glass:temp {effect:"minecraft:haste"} run scoreboard players set @s gm4_sg_secondary 3 +execute if data storage gm4_soul_glass:temp {effect:"minecraft:strength"} run scoreboard players set @s gm4_sg_secondary 5 +execute if data storage gm4_soul_glass:temp {effect:"minecraft:jump_boost"} run scoreboard players set @s gm4_sg_secondary 8 +execute if data storage gm4_soul_glass:temp {effect:"minecraft:resistance"} run scoreboard players set @s gm4_sg_secondary 11 +execute if data storage gm4_soul_glass:temp {effect:"minecraft:regeneration"} run scoreboard players set @s gm4_sg_secondary 10 + +# clean up storage +data remove storage gm4_soul_glass:temp effect diff --git a/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/update_effects.mcfunction b/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/update_effects.mcfunction index 7d7399dd9a..bdc45da767 100644 --- a/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/update_effects.mcfunction +++ b/gm4_soul_glass/overlay_18/data/gm4_soul_glass/functions/effect/update_effects.mcfunction @@ -1,11 +1,14 @@ #@s = soul glass AEC #run from effects/check -execute store result score @s gm4_sg_primary run data get block ~ ~-1 ~ primary_effect -execute unless block ~ ~-1 ~ beacon{secondary_effect:-1} store result score @s gm4_sg_secondary run data get block ~ ~-1 ~ secondary_effect +data modify storage gm4_soul_glass:temp effect set from block ~ ~-1 ~ primary_effect +function gm4_soul_glass:effect/obtain_numeric_primary_id -data modify block ~ ~-1 ~ primary_effect set value -1 -data modify block ~ ~-1 ~ secondary_effect set value -1 +data modify storage gm4_soul_glass:temp effect set from block ~ ~-1 ~ secondary_effect +execute if data storage gm4_soul_glass:temp effect run function gm4_soul_glass:effect/obtain_numeric_secondary_id + +data remove block ~ ~-1 ~ primary_effect +data remove block ~ ~-1 ~ secondary_effect playsound minecraft:entity.wither.spawn block @a[distance=..10] ~ ~ ~ .5 1.3 particle minecraft:witch ~ ~-1 ~ 0.5 0.5 0.5 0 40 force diff --git a/gm4_tinkering_compressors/data/gm4_tinkering_compressors/functions/main.mcfunction b/gm4_tinkering_compressors/data/gm4_tinkering_compressors/functions/main.mcfunction index d82358823b..9046c37ddc 100644 --- a/gm4_tinkering_compressors/data/gm4_tinkering_compressors/functions/main.mcfunction +++ b/gm4_tinkering_compressors/data/gm4_tinkering_compressors/functions/main.mcfunction @@ -1,5 +1,3 @@ -# NOTE remove during 1.20 update: updates old machines to include a marker entity -execute as @e[type=armor_stand,tag=gm4_tinkering_compressor] at @s run function gm4_tinkering_compressors:upgrade_machine_stand # process machine execute as @e[type=marker,tag=gm4_tinkering_compressor] at @s run function gm4_tinkering_compressors:process diff --git a/gm4_tinkering_compressors/data/gm4_tinkering_compressors/functions/upgrade_machine_stand.mcfunction b/gm4_tinkering_compressors/data/gm4_tinkering_compressors/functions/upgrade_machine_stand.mcfunction deleted file mode 100644 index 6b2407936a..0000000000 --- a/gm4_tinkering_compressors/data/gm4_tinkering_compressors/functions/upgrade_machine_stand.mcfunction +++ /dev/null @@ -1,22 +0,0 @@ -# updates old machine armor stands -# @s = tinkering_compressor armor stand -# located at @s -# run from gm4_tinkering_compressors:main - -# update entities -execute align xyz run summon marker ~0.5 ~0.5 ~0.5 {Tags:["gm4_tinkering_compressor","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict"],CustomName:'"gm4_tinkering_compressor"',Rotation:[0.0f,0.0f]} -summon armor_stand ~ ~ ~ {Small:1,NoGravity:1,Marker:1,Invulnerable:1,Invisible:1,Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_tinkering_compressor_display","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1,CustomName:'"gm4_tinkering_compressor_display"',HandItems:[{id:"minecraft:stone_button",Count:1b,tag:{CustomModelData:3420002}},{}],Pose:{RightArm:[0.0f,0.0f,0.0f]},Rotation:[0.0f,0.0f]} -data merge entity @s {Small:0,Silent:1,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_tinkering_compressor_stand","gm4_machine_stand","smithed.entity","smithed.strict"],HasVisualFire:1,CustomName:'"gm4_tinkering_compressor_stand"',ArmorItems:[{},{},{},{id:"minecraft:oxidized_cut_copper",Count:1b,tag:{CustomModelData:3420001}}],HandItems:[{},{}],Pose:{Head:[180f,0f,0f]},Rotation:[0.0f,0.0f]} -tp @s ~ ~-0.565 ~ - -# update dropper -data modify storage gm4_tinkering_compressors:temp block set from block ~ ~ ~ {} -setblock ~ ~ ~ dropper[facing=down] -data modify block ~ ~ ~ {} merge from storage gm4_tinkering_compressors:temp block -data merge block ~ ~ ~ {CustomName:'{"translate":"%1$s%3427655$s","with":[{"translate":"%1$s%3427656$s","with":[{"text":"Tinker Amount","font":"minecraft:default","color":"#373737"},[{"text":"Tinker\\u00a0Amount","font":"gm4:half_scale"},{"text":"Tinker\\u00a0Amount","font":"gm4:inverted"},{"text":"Tinker\\u00a0Amount","font":"gm4:inverted_spacing"},{"text":"Tinker\\u00a0Amount","font":"gm4:offscreen"},{"translate":"gui.gm4.tinkering_compressor","font":"gm4:container_gui","color":"white"},{"text":"Tinker\\u00a0Amount","font":"gm4:half_scale"},{"text":"Tinker\\u00a0Amount","font":"gm4:inverted"},{"text":"Tinker\\u00a0Amount","font":"gm4:inverted_spacing"},{"text":"Tinker Amount","font":"minecraft:default","color":"#373737"}]]},{"translate":"%1$s%3427656$s","with":[{"translate":"container.gm4.tinkering_compressor","font":"minecraft:default","color":"#373737"},[{"translate":"container.gm4.tinkering_compressor","font":"gm4:half_scale"},{"translate":"container.gm4.tinkering_compressor","font":"gm4:inverted"},{"translate":"container.gm4.tinkering_compressor","font":"gm4:inverted_spacing"},{"translate":"container.gm4.tinkering_compressor","font":"gm4:offscreen"},{"translate":"gui.gm4.tinkering_compressor","font":"gm4:container_gui","color":"white"},{"translate":"container.gm4.tinkering_compressor","font":"gm4:half_scale"},{"translate":"container.gm4.tinkering_compressor","font":"gm4:inverted"},{"translate":"container.gm4.tinkering_compressor","font":"gm4:inverted_spacing"},{"translate":"container.gm4.tinkering_compressor","font":"minecraft:default","color":"#373737"}]]}]}'} -data remove storage gm4_tinkering_compressors:temp block - -# store entity version -scoreboard players set @s gm4_entity_version 1 -execute align xyz positioned ~0.5 ~0.5 ~0.5 run scoreboard players set @e[type=armor_stand,tag=gm4_tinkering_compressor_display,distance=..0.5,limit=1] gm4_entity_version 1 -execute align xyz positioned ~0.5 ~0.5 ~0.5 run scoreboard players set @e[type=marker,tag=gm4_machine_marker,distance=..0.1,limit=1] gm4_entity_version 1 diff --git a/gm4_tnt_landmines/data/gm4_tnt_landmines/functions/checks/landmine.mcfunction b/gm4_tnt_landmines/data/gm4_tnt_landmines/functions/checks/landmine.mcfunction index 8a8c720740..65c198978d 100644 --- a/gm4_tnt_landmines/data/gm4_tnt_landmines/functions/checks/landmine.mcfunction +++ b/gm4_tnt_landmines/data/gm4_tnt_landmines/functions/checks/landmine.mcfunction @@ -1,10 +1,6 @@ # @s = tnt landmine # run from main -# keep lit -# 1.18 NOTE; This 16->17 backward compatibility may be removed. -data merge entity @s {HasVisualFire:1} - #arming execute as @s[tag=!gm4_tnt_armed] unless entity @e[type=area_effect_cloud,tag=gm4_mine_disarmed,distance=..0.2] run tag @s add gm4_tnt_armed diff --git a/gm4_trapped_signs/data/gm4_trapped_signs/functions/main.mcfunction b/gm4_trapped_signs/data/gm4_trapped_signs/functions/main.mcfunction index 6368c56f66..d2941b2047 100644 --- a/gm4_trapped_signs/data/gm4_trapped_signs/functions/main.mcfunction +++ b/gm4_trapped_signs/data/gm4_trapped_signs/functions/main.mcfunction @@ -1,5 +1,3 @@ -# NOTE remove during 1.20 update: updates old machines to include a marker entity -execute as @e[type=armor_stand,tag=gm4_trapped_sign] at @s run function gm4_trapped_signs:upgrade_machine_stand # process trapped signs execute as @e[type=marker,tag=gm4_trapped_sign] at @s run function gm4_trapped_signs:process diff --git a/gm4_trapped_signs/data/gm4_trapped_signs/functions/upgrade_machine_stand.mcfunction b/gm4_trapped_signs/data/gm4_trapped_signs/functions/upgrade_machine_stand.mcfunction deleted file mode 100644 index 75d6049c15..0000000000 --- a/gm4_trapped_signs/data/gm4_trapped_signs/functions/upgrade_machine_stand.mcfunction +++ /dev/null @@ -1,27 +0,0 @@ -# updates old machine armor stands -# @s = trapped_sign armor stand -# located at @s -# run from gm4_trapped_signs:main - -summon marker ~ ~ ~ {Tags:["gm4_trapped_sign","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:'"gm4_trapped_sign"'} - -execute if entity @s[tag=gm4_secret_trapped_sign] run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_secret_trapped_sign - -execute if block ~ ~ ~ acacia_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_acacia_trapped_sign -execute if block ~ ~ ~ acacia_wall_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_acacia_trapped_sign -execute if block ~ ~ ~ birch_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_birch_trapped_sign -execute if block ~ ~ ~ birch_wall_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_birch_trapped_sign -execute if block ~ ~ ~ crimson_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_crimson_trapped_sign -execute if block ~ ~ ~ crimson_wall_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_crimson_trapped_sign -execute if block ~ ~ ~ dark_oak_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_dark_oak_trapped_sign -execute if block ~ ~ ~ dark_oak_wall_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_dark_oak_trapped_sign -execute if block ~ ~ ~ jungle_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_jungle_trapped_sign -execute if block ~ ~ ~ jungle_wall_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_jungle_trapped_sign -execute if block ~ ~ ~ spruce_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_spruce_trapped_sign -execute if block ~ ~ ~ spruce_wall_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_spruce_trapped_sign -execute if block ~ ~ ~ warped_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_warped_trapped_sign -execute if block ~ ~ ~ warped_wall_sign run tag @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] add gm4_warped_trapped_sign - -scoreboard players set @e[type=marker,tag=gm4_new_machine,limit=1,distance=..0.1] gm4_entity_version 1 -tag @e[type=marker,distance=..0.1] remove gm4_new_machine -kill @s diff --git a/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/furnace_cart_20hz.mcfunction b/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/furnace_cart_20hz.mcfunction index bb5ddedb76..1a9630e49f 100644 --- a/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/furnace_cart_20hz.mcfunction +++ b/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/furnace_cart_20hz.mcfunction @@ -1,10 +1,6 @@ # @s = furnace_minecart # at world spawn # called by gm4_tunnel_bores:pulse_check -# fixes MC-51053 and handles tunnel bores. === 20Hz === - -# fix MC-51053 -#execute at @s unless block ~ ~ ~ #minecraft:rails[shape=north_south] unless block ~ ~ ~ #minecraft:rails[shape=east_west] if entity @s[nbt=!{Fuel:0s}] if entity @s[nbt=!{Fuel:3600s}] run function gm4_tunnel_bores:mc_51053 # handle cart orientation and environment (rail interactions, cart push direction) on 5Hz execute if score main_clock gm4_bore_data = trigger_tick gm4_bore_data if entity @s[tag=gm4_tunnel_bore] run function gm4_tunnel_bores:bore/tunnel_bore_5hz diff --git a/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/main.mcfunction b/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/main.mcfunction index 2fabab0e7a..7d0a55b5f4 100644 --- a/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/main.mcfunction +++ b/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/main.mcfunction @@ -2,11 +2,5 @@ execute if score refuel_clock gm4_bore_fuel matches 220.. run scoreboard players set refuel_clock gm4_bore_fuel 0 scoreboard players add refuel_clock gm4_bore_fuel 1 -# NOTE remove during 1.20 update: updates old machine carts with an entity version and smithed compatibility -execute as @e[type=furnace_minecart,tag=gm4_tunnel_bore] unless score @s gm4_entity_version = @s gm4_entity_version run function gm4_tunnel_bores:upgrade_machine_cart # bore handling execute as @e[type=furnace_minecart,tag=gm4_tunnel_bore] run function gm4_tunnel_bores:bore/mine/auto_mine - -# NOTE remove during 1.20 update: allows old machine cart items to spawn a tunnel bore -# turn crafted carts into tunnel bores. VERY EXPERIMENTAL DETECTION OF CARTS. -execute as @e[type=furnace_minecart,tag=!gm4_tunnel_bore,nbt={CustomName:'{"italic":false,"color":"white","translate":"%1$s","with":["Minecart with Piston",{"translate":"item.gm4.minecart.bore"}]}'}] at @s run function gm4_tunnel_bores:machine/create_cart diff --git a/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/mc_51053.mcfunction b/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/mc_51053.mcfunction deleted file mode 100644 index 52c0ea0b50..0000000000 --- a/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/mc_51053.mcfunction +++ /dev/null @@ -1,8 +0,0 @@ -# @s = furnace_minecart -# at world spawn -# called by gm4_tunnel_bores:process_furnace_carts -# fixes MC-51053 === 20Hz === - -# get new PushX and PushZ values from cart Motion -execute store result entity @s PushX double 0.5 run data get entity @s Motion[0] -execute store result entity @s PushZ double 0.5 run data get entity @s Motion[2] diff --git a/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/upgrade_machine_cart.mcfunction b/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/upgrade_machine_cart.mcfunction deleted file mode 100644 index 999824649f..0000000000 --- a/gm4_tunnel_bores/data/gm4_tunnel_bores/functions/upgrade_machine_cart.mcfunction +++ /dev/null @@ -1,8 +0,0 @@ -# updates old machine cart -# @s = tunnel_bore minecart -# located at @s -# run from gm4_tunnel_bores:main - -scoreboard players set @e[type=area_effect_cloud,tag=gm4_bore_storage,tag=!smithed.entity,distance=..0.2] gm4_entity_version 1 -execute as @e[type=area_effect_cloud,tag=gm4_bore_storage,tag=!smithed.entity,distance=..0.2] run data merge entity @s {Tags:["gm4_bore_storage","gm4_machine_cart","smithed.entity","smithed.strict"]} -scoreboard players set @s gm4_entity_version 1 diff --git a/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart.mcfunction b/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart.mcfunction new file mode 100644 index 0000000000..380c4615f1 --- /dev/null +++ b/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart.mcfunction @@ -0,0 +1,16 @@ +# destroys the tunnel_bore +# @s = tunnel_bore marker +# located at @s +# run from gm4_tunnel_bores:machine/verify_destroy + +tag @s add gm4_destroyed_bore_storage + +# drop item +scoreboard players set $dropped_item gm4_machine_data 0 +execute as @e[type=item,distance=..3,nbt={Age:0s,Item:{id:"minecraft:furnace_minecart",Count:1b,tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}},limit=1,sort=nearest] at @s run function gm4_tunnel_bores:machine/destroy_cart/drop_item + +# scan hoppers if no item was broken +execute if score $dropped_item gm4_machine_data matches 0 run function gm4_tunnel_bores:machine/destroy_cart/scan_hoppers + +# kill marker +kill @s diff --git a/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart/scan_hoppers.mcfunction b/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart/scan_hoppers.mcfunction new file mode 100644 index 0000000000..9a4f34545d --- /dev/null +++ b/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart/scan_hoppers.mcfunction @@ -0,0 +1,39 @@ +# searches for hoppers with invalid items +# @s = tunnel_bore marker +# located at @s +# run from gm4_tunnel_bores:machine/destroy_cart + +# find hopper with the invalid item +scoreboard players set $found_item gm4_machine_data 0 +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~00 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~00 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~00 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~00 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~00 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~00 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~00 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~00 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~00 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper + +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-1 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-1 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-1 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-1 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-1 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-1 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-1 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-1 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-1 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper + +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-2 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-2 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-2 ~00 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-2 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-2 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-2 ~01 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~00 ~-2 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~01 ~-2 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper +execute if score $found_item gm4_machine_data matches 0 positioned ~-1 ~-2 ~-1 if block ~ ~ ~ hopper{Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]} run function gm4_tunnel_bores:machine/destroy_cart/update_hopper + +# if no hoppers found, find hopper minecarts with the invalid item +execute if score $found_item gm4_machine_data matches 0 as @e[type=hopper_minecart,distance=..3,nbt={Items:[{id:"minecraft:furnace_minecart",tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}]}] run function gm4_tunnel_bores:machine/destroy_cart/update_hopper_minecart diff --git a/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart/update_hopper.mcfunction b/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart/update_hopper.mcfunction new file mode 100644 index 0000000000..5da1e85c7d --- /dev/null +++ b/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart/update_hopper.mcfunction @@ -0,0 +1,16 @@ +# updates hoppers with invalid items +# @s = tunnel_bore marker +# located at the hopper with an invalid item +# run from gm4_tunnel_bores:machine/destroy_cart/scan_hoppers + +# replace correct slot with proper item +data modify storage gm4_machines:temp Items set from block ~ ~ ~ Items +execute if data storage gm4_machines:temp Items[{Slot:0b,tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}] run loot replace block ~ ~ ~ container.0 loot gm4_tunnel_bores:entities/piston_minecart +execute if data storage gm4_machines:temp Items[{Slot:1b,tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}] run loot replace block ~ ~ ~ container.1 loot gm4_tunnel_bores:entities/piston_minecart +execute if data storage gm4_machines:temp Items[{Slot:2b,tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}] run loot replace block ~ ~ ~ container.2 loot gm4_tunnel_bores:entities/piston_minecart +execute if data storage gm4_machines:temp Items[{Slot:3b,tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}] run loot replace block ~ ~ ~ container.3 loot gm4_tunnel_bores:entities/piston_minecart +execute if data storage gm4_machines:temp Items[{Slot:4b,tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}] run loot replace block ~ ~ ~ container.4 loot gm4_tunnel_bores:entities/piston_minecart + +# clean up +data remove storage gm4_machines:temp Items +scoreboard players set $found_item gm4_machine_data 1 diff --git a/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart/update_hopper_minecart.mcfunction b/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart/update_hopper_minecart.mcfunction new file mode 100644 index 0000000000..512d73a297 --- /dev/null +++ b/gm4_tunnel_bores/overlay_26/data/gm4_tunnel_bores/functions/machine/destroy_cart/update_hopper_minecart.mcfunction @@ -0,0 +1,16 @@ +# updates hopper minecarts with invalid items +# @s = hopper minecart with invalid item +# located at @s +# run from gm4_tunnel_bores:machine/destroy_cart/scan_hoppers + +# replace correct slot with proper item +data modify storage gm4_machines:temp Items set from entity @s Items +execute if data storage gm4_machines:temp Items[{Slot:0b,tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}] run loot replace entity @s container.0 loot gm4_tunnel_bores:entities/piston_minecart +execute if data storage gm4_machines:temp Items[{Slot:1b,tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}] run loot replace entity @s container.1 loot gm4_tunnel_bores:entities/piston_minecart +execute if data storage gm4_machines:temp Items[{Slot:2b,tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}] run loot replace entity @s container.2 loot gm4_tunnel_bores:entities/piston_minecart +execute if data storage gm4_machines:temp Items[{Slot:3b,tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}] run loot replace entity @s container.3 loot gm4_tunnel_bores:entities/piston_minecart +execute if data storage gm4_machines:temp Items[{Slot:4b,tag:{display:{Name:'{"translate":"item.gm4.minecart.bore","fallback":"Minecart with Piston"}'}}}] run loot replace entity @s container.4 loot gm4_tunnel_bores:entities/piston_minecart + +# clean up +data remove storage gm4_machines:temp Items +scoreboard players set $found_item gm4_machine_data 1 diff --git a/gm4_weighted_armour/data/gm4_helious_shamir/functions/update_skull_owner.mcfunction b/gm4_weighted_armour/data/gm4_helious_shamir/functions/update_skull_owner.mcfunction deleted file mode 100644 index 2e9c1450cc..0000000000 --- a/gm4_weighted_armour/data/gm4_helious_shamir/functions/update_skull_owner.mcfunction +++ /dev/null @@ -1 +0,0 @@ -execute if data storage gm4_metallurgy:temp/shamir {name:"helious"} run data modify storage gm4_metallurgy:temp/shamir skull_owner set value "[Drop to Fix Item] gm4_helious_shamir:band/v0" diff --git a/gm4_weighted_armour/data/gm4_metallurgy/tags/functions/update_skull_owner.json b/gm4_weighted_armour/data/gm4_metallurgy/tags/functions/update_skull_owner.json deleted file mode 100644 index 9f9558ab86..0000000000 --- a/gm4_weighted_armour/data/gm4_metallurgy/tags/functions/update_skull_owner.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "gm4_helious_shamir:update_skull_owner" - ] -} diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/extra_items/release_from_bottle/check_timer.mcfunction b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/extra_items/release_from_bottle/check_timer.mcfunction index 18b116d614..f37ae0e0df 100644 --- a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/extra_items/release_from_bottle/check_timer.mcfunction +++ b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/extra_items/release_from_bottle/check_timer.mcfunction @@ -9,5 +9,5 @@ execute unless score @s gm4_zc_bottled_vex_escape_timer matches -2147483648..214 execute if score @s gm4_zc_bottled_vex_escape_timer matches 0.. run function gm4_zauber_cauldrons:cauldron/extra_items/release_from_bottle/crack_bottle # break free (if the moon phase is right, the bottle survives an additional tick) -execute if score @s gm4_zc_bottled_vex_escape_timer matches 1 unless score @s gm4_zc_moon_phase = $current gm4_zc_moon_phase run function gm4_zauber_cauldrons:cauldron/extra_items/release_from_bottle/release +execute if score @s gm4_zc_bottled_vex_escape_timer matches 1 unless function gm4_zauber_cauldrons:cauldron/liquid/magicol/check_moon_phase run function gm4_zauber_cauldrons:cauldron/extra_items/release_from_bottle/release execute if score @s gm4_zc_bottled_vex_escape_timer matches ..0 run function gm4_zauber_cauldrons:cauldron/extra_items/release_from_bottle/release diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/extra_items/release_from_bottle/crack_bottle.mcfunction b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/extra_items/release_from_bottle/crack_bottle.mcfunction index 43801973a0..549b14b72c 100644 --- a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/extra_items/release_from_bottle/crack_bottle.mcfunction +++ b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/extra_items/release_from_bottle/crack_bottle.mcfunction @@ -10,4 +10,4 @@ playsound minecraft:block.glass.break block @a[distance=..8] ~ ~ ~ 0.1 1.9 particle minecraft:block glass ~ ~ ~ 0.1 0.1 0.1 0 1 # players wearing zauber armor can tell if its the right moon phase -execute if score @s gm4_zc_moon_phase = $current gm4_zc_moon_phase run particle minecraft:electric_spark ~ ~.2 ~ 0.15 0.15 0.15 0.01 3 normal @a[distance=..8,advancements={gm4_zauber_cauldrons:equipment/has_full_armor=true}] +execute if score @s gm4_zc_moon_phase = $current gm4_zc_moon_phase if function gm4_zauber_cauldrons:cauldron/liquid/magicol/check_moon_phase run particle minecraft:electric_spark ~ ~.2 ~ 0.15 0.15 0.15 0.01 3 normal @a[distance=..8,advancements={gm4_zauber_cauldrons:equipment/has_full_armor=true}] diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/liquid/magicol/check_moon_phase.mcfunction b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/liquid/magicol/check_moon_phase.mcfunction new file mode 100644 index 0000000000..a5ebfb1aaf --- /dev/null +++ b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/liquid/magicol/check_moon_phase.mcfunction @@ -0,0 +1,9 @@ +# Checks the moon phase, time, and weather for the correct conditions for magicol bottling. Used to display sparkle particles and to bottle magicol. +# @s = varies +# at varies +# run in if function conditions from gm4_zauber_cauldrons:cauldron/extra_items/release_from_bottle/check_timer, gm4_zauber_cauldrons:recipes/magicol/bottled/<...>/<...>/<...>, and gm4_zauber_cauldrons:cauldron/liquid/magicol/particles + +# require clear night and correct moon phase +execute unless predicate gm4_zauber_cauldrons:cauldron/clear_night run return fail +execute unless score $preferred gm4_zc_moon_phase = $current gm4_zc_moon_phase run return fail +return 1 diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/liquid/magicol/particles.mcfunction b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/liquid/magicol/particles.mcfunction index 3e7d56499e..0ad17ec362 100644 --- a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/liquid/magicol/particles.mcfunction +++ b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/liquid/magicol/particles.mcfunction @@ -6,7 +6,7 @@ # display enchant particles for players with full zauber armor during the correct moon phase scoreboard players reset $preferred gm4_zc_moon_phase execute store result score $preferred gm4_zc_moon_phase run data get storage gm4_zauber_cauldrons:temp/cauldron/ingredients liquid.magicol.moon_phase -execute if score $preferred gm4_zc_moon_phase = $current gm4_zc_moon_phase run particle minecraft:electric_spark ~.5 ~.78 ~.5 0.25 0.25 0.25 0.01 6 normal @a[distance=..8,advancements={gm4_zauber_cauldrons:equipment/has_full_armor=true}] +execute if function gm4_zauber_cauldrons:cauldron/liquid/magicol/check_moon_phase run particle minecraft:electric_spark ~.5 ~.78 ~.5 0.25 0.25 0.25 0.01 6 normal @a[distance=..8,advancements={gm4_zauber_cauldrons:equipment/has_full_armor=true}] # make sure the cauldron is in loaded chunks to avoid entity buildup execute unless loaded ~ ~ ~ run return -1 diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/structure/update/replace_marker.mcfunction b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/structure/update/replace_marker.mcfunction deleted file mode 100644 index b2621f4581..0000000000 --- a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/structure/update/replace_marker.mcfunction +++ /dev/null @@ -1,10 +0,0 @@ -# replaces outdated cauldron markers with new ones -# @s = old area_effect_cloud based gm4_zauber_cauldron entities -# at @s -# run from cauldron/structure/update/search_for_outdated_markers - -# kill old entity -kill @s - -# summon new entity -summon marker ~ ~ ~ {CustomName:'"gm4_zauber_cauldron"',Tags:["gm4_zauber_cauldron"]} diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/structure/update/search_for_outdated_markers.mcfunction b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/structure/update/search_for_outdated_markers.mcfunction deleted file mode 100644 index bbc0e1dd05..0000000000 --- a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/cauldron/structure/update/search_for_outdated_markers.mcfunction +++ /dev/null @@ -1,10 +0,0 @@ -# looks for outdated cauldron markers -# @s = none -# at world spawn -# scheduled from init (only on worlds which has zauber cauldrons installed previously) and self scheduled - -# target outdated markers -execute as @e[type=area_effect_cloud,tag=gm4_zauber_cauldron] at @s run function gm4_zauber_cauldrons:cauldron/structure/update/replace_marker - -# self-schedule -schedule function gm4_zauber_cauldrons:cauldron/structure/update/search_for_outdated_markers 512t diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/init.mcfunction b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/init.mcfunction index c5ca364af2..5a5dce6e1d 100644 --- a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/init.mcfunction +++ b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/init.mcfunction @@ -34,7 +34,6 @@ execute unless data storage gm4_player_heads:register heads[{id:"gm4_zauber_caul execute unless data storage gm4_player_heads:register heads[{id:"gm4_zauber_cauldrons:crystal/strength"}] run data modify storage gm4_player_heads:register heads append value {id:"gm4_zauber_cauldrons:crystal/strength",name:'[Drop to Fix Item] gm4_zauber_cauldrons:crystal/strength',loot_table:'gm4_zauber_cauldrons:items/crystals/strength'} # module data version -execute if score zauber_cauldrons gm4_modules matches ..16030 unless score $data_version gm4_zc_data matches 1.. run function gm4_zauber_cauldrons:cauldron/structure/update/search_for_outdated_markers scoreboard players set $data_version gm4_zc_data 1 # website maintained module version diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/player/crystal/swap/restore_player_head.mcfunction b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/player/crystal/swap/restore_player_head.mcfunction index 42fa4bfb2a..e76bc2a84c 100644 --- a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/player/crystal/swap/restore_player_head.mcfunction +++ b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/player/crystal/swap/restore_player_head.mcfunction @@ -19,7 +19,6 @@ execute if score $item gm4_zc_data matches 1.. store result score $slot gm4_zc_d # remove firework star specific data data remove storage gm4_zauber_cauldrons:temp/item/crystal Item.tag.Explosion -data remove storage gm4_zauber_cauldrons:temp/item/crystal Item.tag.HideFlags # replace item execute if score $slot gm4_zc_data matches 0..8 run function gm4_zauber_cauldrons:player/crystal/swap/restore_player_head/hotbar diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/recipes/magicol/bottled/wrong_moon_phase.mcfunction b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/recipes/magicol/bottled/wrong_moon_phase.mcfunction index 3acf289bde..df84c79604 100644 --- a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/recipes/magicol/bottled/wrong_moon_phase.mcfunction +++ b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/functions/recipes/magicol/bottled/wrong_moon_phase.mcfunction @@ -13,3 +13,6 @@ playsound minecraft:block.glass.break block @a[distance=..8] ~ ~ ~ 1 1.3 # consume liquid scoreboard players remove @s gm4_zc_liquid_level 1 execute align xyz run function gm4_zauber_cauldrons:cauldron/liquid/update/from_score + +# return +return fail diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/predicates/cauldron/clear_night.json b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/predicates/cauldron/clear_night.json new file mode 100644 index 0000000000..64890c3fed --- /dev/null +++ b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/predicates/cauldron/clear_night.json @@ -0,0 +1,18 @@ +{ + "condition": "minecraft:all_of", + "terms": [ + { + "condition": "minecraft:time_check", + "value": { + "min": 13000, + "max": 23000 + }, + "period": 24000 + }, + { + "condition": "minecraft:weather_check", + "raining": false, + "thundering": false + } + ] +} diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/templates/functions/magicol/craft_bottled_magicol.mcfunction b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/templates/functions/magicol/craft_bottled_magicol.mcfunction index 74288a91c9..6e0e5ac5ff 100644 --- a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/templates/functions/magicol/craft_bottled_magicol.mcfunction +++ b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/templates/functions/magicol/craft_bottled_magicol.mcfunction @@ -10,9 +10,8 @@ execute align xyz run kill @e[type=item,dx=0,dy=0,dz=0] # set flag scoreboard players set $recipe_success gm4_zc_data 1 -# if the moon phase is wrong, spawn vexes instead -execute unless score $current gm4_zc_moon_phase = $preferred gm4_zc_moon_phase run function gm4_zauber_cauldrons:recipes/magicol/bottled/wrong_moon_phase -execute unless score $current gm4_zc_moon_phase = $preferred gm4_zc_moon_phase run return -1 +# cancel execution via return and spawn vexes, unless it is a clear night and the correct moon phase +execute unless function gm4_zauber_cauldrons:cauldron/liquid/magicol/check_moon_phase run return run function gm4_zauber_cauldrons:recipes/magicol/bottled/wrong_moon_phase # summon item loot spawn ~ ~.2 ~ loot gm4_zauber_cauldrons:items/bottled_magicol/{{bottle}}/{{color}}/{{weather_modifier}} diff --git a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/templates/loot_tables/zauber_crystal.json b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/templates/loot_tables/zauber_crystal.json index bba97edc0c..84242774a9 100644 --- a/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/templates/loot_tables/zauber_crystal.json +++ b/gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/templates/loot_tables/zauber_crystal.json @@ -16,6 +16,7 @@ "name": { "translate": "item.gm4.zauber_cauldrons.crystal.{{effect}}", "fallback": "{{translate_fallback}}", + "color": "yellow", "italic": false } }, diff --git a/lib_custom_crafters/data/gm4_custom_crafters/structures/test_platform.nbt b/lib_custom_crafters/data/gm4_custom_crafters/structures/test_platform.nbt new file mode 100644 index 0000000000..7af1267ea2 Binary files /dev/null and b/lib_custom_crafters/data/gm4_custom_crafters/structures/test_platform.nbt differ diff --git a/lib_forceload/data/gm4_forceload/functions/check_dimension.mcfunction b/lib_forceload/data/gm4_forceload/functions/check_dimension.mcfunction index 42b226ee73..2c1c703f5e 100644 --- a/lib_forceload/data/gm4_forceload/functions/check_dimension.mcfunction +++ b/lib_forceload/data/gm4_forceload/functions/check_dimension.mcfunction @@ -4,6 +4,5 @@ advancement revoke @s only gm4_forceload:dimension_marking # spawns a dimension marker if one doesn't already exist in the dimension -execute as @e[type=area_effect_cloud,tag=gm4_dimension] at @s run function gm4_forceload:upgrade_marker execute store success score $initialized gm4_dimension if block 29999998 1 7133 birch_wall_sign execute if score $initialized gm4_dimension matches 0 run function gm4_forceload:mark_dimension diff --git a/lib_forceload/data/gm4_forceload/functions/upgrade_marker.mcfunction b/lib_forceload/data/gm4_forceload/functions/upgrade_marker.mcfunction deleted file mode 100644 index 4337164f9f..0000000000 --- a/lib_forceload/data/gm4_forceload/functions/upgrade_marker.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -# @s = area effect cloud dimension marker -# run from check_dimension - -kill @e[type=marker,tag=gm4_dimension,distance=..1] -summon marker ~ ~ ~ {Tags:["gm4_dimension","gm4_new_dimension"]} -data modify entity @e[type=marker,tag=gm4_new_dimension,limit=1] CustomName set from entity @s CustomName -scoreboard players operation @e[type=marker,tag=gm4_new_dimension,limit=1] gm4_dimension = @s gm4_dimension -tag @e[type=marker] remove gm4_new_dimension -kill @s diff --git a/lib_trees/data/gm4_trees/functions/tick.mcfunction b/lib_trees/data/gm4_trees/functions/tick.mcfunction index 7cf97b574b..d3da30691d 100644 --- a/lib_trees/data/gm4_trees/functions/tick.mcfunction +++ b/lib_trees/data/gm4_trees/functions/tick.mcfunction @@ -1,7 +1,6 @@ schedule function gm4_trees:tick 1t # upgrade old entities -execute as @e[type=area_effect_cloud,tag=gm4_fruiting_sapling] at @s run function #gm4_trees:upgrade_aec_to_marker execute as @e[type=marker,tag=gm4_fruiting_sapling] run function #gm4_trees:upgrade_fruiting_to_general # process saplings diff --git a/lib_trees/data/gm4_trees/tags/functions/upgrade_aec_to_marker.json b/lib_trees/data/gm4_trees/tags/functions/upgrade_aec_to_marker.json deleted file mode 100644 index 86dde3df2a..0000000000 --- a/lib_trees/data/gm4_trees/tags/functions/upgrade_aec_to_marker.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "values": [] -} diff --git a/poetry.lock b/poetry.lock index ccc62763bc..55d90dfdb4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,15 +1,25 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. + +[[package]] +name = "annotated-types" +version = "0.6.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, + {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, +] [[package]] name = "beet" -version = "0.97.1" +version = "0.103.1" description = "The Minecraft pack development kit" -category = "main" optional = false python-versions = ">=3.10,<4.0" files = [ - {file = "beet-0.97.1-py3-none-any.whl", hash = "sha256:b036c075cd891ca59d400422598468977665edd23885392d774dc502b5423d33"}, - {file = "beet-0.97.1.tar.gz", hash = "sha256:2713eeed138564195989e5c3dd6a16984f1a4c5dafaf6fb3392a79ee32a6f863"}, + {file = "beet-0.103.1-py3-none-any.whl", hash = "sha256:cf4805f42118599b58f2417ec5009d524adb07f35e0fff2a0fe22fd81d04b8ee"}, + {file = "beet-0.103.1.tar.gz", hash = "sha256:52f784a53952a816611840ead2020b9ea2229e7e7f4f5207daf7f145d539485b"}, ] [package.dependencies] @@ -19,7 +29,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} Jinja2 = ">=3.1.2,<4.0.0" nbtlib = ">=1.12.1,<2.0.0" pathspec = ">=0.11.2,<0.12.0" -pydantic = ">=1,<2" +pydantic = ">=2.5.2,<3.0.0" PyYAML = ">=6.0.1,<7.0.0" toml = ">=0.10.2,<0.11.0" typing-extensions = ">=4.8.0,<5.0.0" @@ -31,7 +41,6 @@ image = ["Pillow"] name = "black" version = "22.12.0" description = "The uncompromising code formatter." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -64,55 +73,34 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "bolt" -version = "0.39.0" +version = "0.45.0" description = "Supercharge Minecraft commands with Python" -category = "main" optional = false python-versions = ">=3.10,<4.0" files = [ - {file = "bolt-0.39.0-py3-none-any.whl", hash = "sha256:04438cb88f111d191a6d3b99505abf3d62af43d0a90182be1c11df32dbc37932"}, - {file = "bolt-0.39.0.tar.gz", hash = "sha256:e8c8ae9f3dd2f2ef290df587793104b596c345cc177a94a840e52c7c6130fdf7"}, + {file = "bolt-0.45.0-py3-none-any.whl", hash = "sha256:e0ce188066ce3bc0ea62abe0689efbbfdebffb48b587a7f561ad70a06ab1e654"}, + {file = "bolt-0.45.0.tar.gz", hash = "sha256:b359c1aee4028ce7288d407ca4ec8455f925c529be1cedbb89cb199a572153cd"}, ] [package.dependencies] -beet = ">=0.96.1" -mecha = ">=0.79.0" - -[[package]] -name = "bolt-expressions" -version = "0.12.2" -description = "Provides pandas-like expressions capabilities to the bolt extension of mecha" -category = "main" -optional = false -python-versions = ">=3.10,<4.0" -files = [ - {file = "bolt_expressions-0.12.2-py3-none-any.whl", hash = "sha256:5781fe63cdebbf69a25cb9d78321a5ffe936728eaeceeb14bc73e98f85ef80da"}, - {file = "bolt_expressions-0.12.2.tar.gz", hash = "sha256:1de747f0b176e72ee934cd64d5fc87b0ea6c8e42cbbd0ab6d5e072ee36153442"}, -] - -[package.dependencies] -beet = ">=0.55.0" -bolt = ">=0.17.7" -mecha = ">=0.59.2" -nbtlib = "1.12.1" +beet = ">=0.100.0" +mecha = ">=0.86.5" [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -212,7 +200,6 @@ files = [ name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -227,7 +214,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "click-help-colors" version = "0.9.4" description = "Colorization of help messages in Click" -category = "main" optional = false python-versions = "*" files = [ @@ -245,7 +231,6 @@ dev = ["mypy", "pytest"] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -257,7 +242,6 @@ files = [ name = "idna" version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -269,7 +253,6 @@ files = [ name = "isort" version = "5.13.2" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -282,14 +265,13 @@ colors = ["colorama (>=0.4.6)"] [[package]] name = "jinja2" -version = "3.1.2" +version = "3.1.3" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, ] [package.dependencies] @@ -300,85 +282,92 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] name = "mecha" -version = "0.79.0" +version = "0.87.0" description = "A powerful Minecraft command library" -category = "main" optional = false python-versions = ">=3.10,<4.0" files = [ - {file = "mecha-0.79.0-py3-none-any.whl", hash = "sha256:601c17c7f203511eebfa2b065c3877a81303685db0a92ac78157d9184c471243"}, - {file = "mecha-0.79.0.tar.gz", hash = "sha256:f12e6de29278aa904de8db3fd535e98f7c5017090ec6d98782475c099bb00131"}, + {file = "mecha-0.87.0-py3-none-any.whl", hash = "sha256:a4bbbf460dd376affa971196210d1f8545d8a70ba77f034d91ce05e5816573ce"}, + {file = "mecha-0.87.0.tar.gz", hash = "sha256:3b09e01b3ff487fe76ee609a3ac0f3e8b70ac115822e04b27a2a8565f3d1b7e5"}, ] [package.dependencies] -beet = ">=0.96.0" +beet = ">=0.100.0" tokenstream = ">=1.7.0,<2.0.0" [[package]] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -390,7 +379,6 @@ files = [ name = "nbtlib" version = "1.12.1" description = "A python package to read and edit nbt data" -category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -403,55 +391,53 @@ numpy = "*" [[package]] name = "numpy" -version = "1.26.2" +version = "1.26.4" description = "Fundamental package for array computing in Python" -category = "main" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.26.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f"}, - {file = "numpy-1.26.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440"}, - {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75"}, - {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00"}, - {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe"}, - {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523"}, - {file = "numpy-1.26.2-cp310-cp310-win32.whl", hash = "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9"}, - {file = "numpy-1.26.2-cp310-cp310-win_amd64.whl", hash = "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919"}, - {file = "numpy-1.26.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841"}, - {file = "numpy-1.26.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1"}, - {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a"}, - {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b"}, - {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7"}, - {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8"}, - {file = "numpy-1.26.2-cp311-cp311-win32.whl", hash = "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186"}, - {file = "numpy-1.26.2-cp311-cp311-win_amd64.whl", hash = "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d"}, - {file = "numpy-1.26.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0"}, - {file = "numpy-1.26.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75"}, - {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7"}, - {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6"}, - {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6"}, - {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec"}, - {file = "numpy-1.26.2-cp312-cp312-win32.whl", hash = "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167"}, - {file = "numpy-1.26.2-cp312-cp312-win_amd64.whl", hash = "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e"}, - {file = "numpy-1.26.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef"}, - {file = "numpy-1.26.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2"}, - {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3"}, - {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818"}, - {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210"}, - {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36"}, - {file = "numpy-1.26.2-cp39-cp39-win32.whl", hash = "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80"}, - {file = "numpy-1.26.2-cp39-cp39-win_amd64.whl", hash = "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060"}, - {file = "numpy-1.26.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79"}, - {file = "numpy-1.26.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d"}, - {file = "numpy-1.26.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841"}, - {file = "numpy-1.26.2.tar.gz", hash = "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] [[package]] name = "pathspec" version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -461,146 +447,218 @@ files = [ [[package]] name = "pillow" -version = "10.1.0" +version = "10.2.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "Pillow-10.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106"}, - {file = "Pillow-10.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db"}, - {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f"}, - {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818"}, - {file = "Pillow-10.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57"}, - {file = "Pillow-10.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7"}, - {file = "Pillow-10.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061"}, - {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262"}, - {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992"}, - {file = "Pillow-10.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a"}, - {file = "Pillow-10.1.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b"}, - {file = "Pillow-10.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651"}, - {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b"}, - {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f"}, - {file = "Pillow-10.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996"}, - {file = "Pillow-10.1.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"}, - {file = "Pillow-10.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d"}, - {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80"}, - {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212"}, - {file = "Pillow-10.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14"}, - {file = "Pillow-10.1.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099"}, - {file = "Pillow-10.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd"}, - {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28"}, - {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2"}, - {file = "Pillow-10.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f"}, - {file = "Pillow-10.1.0.tar.gz", hash = "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, + {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, + {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, + {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, + {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, + {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, + {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, + {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, + {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, + {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, + {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, + {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, + {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, + {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, + {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, + {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, + {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, ] [package.extras] docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.1.0" +version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, - {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] [[package]] name = "pydantic" -version = "1.10.13" -description = "Data validation and settings management using python type hints" -category = "main" +version = "2.6.1" +description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-1.10.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737"}, - {file = "pydantic-1.10.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01"}, - {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548"}, - {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8"}, - {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69"}, - {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17"}, - {file = "pydantic-1.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f"}, - {file = "pydantic-1.10.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653"}, - {file = "pydantic-1.10.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe"}, - {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9"}, - {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80"}, - {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580"}, - {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0"}, - {file = "pydantic-1.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0"}, - {file = "pydantic-1.10.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4b03e42ec20286f052490423682016fd80fda830d8e4119f8ab13ec7464c0132"}, - {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f59ef915cac80275245824e9d771ee939133be38215555e9dc90c6cb148aaeb5"}, - {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a1f9f747851338933942db7af7b6ee8268568ef2ed86c4185c6ef4402e80ba8"}, - {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:97cce3ae7341f7620a0ba5ef6cf043975cd9d2b81f3aa5f4ea37928269bc1b87"}, - {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:854223752ba81e3abf663d685f105c64150873cc6f5d0c01d3e3220bcff7d36f"}, - {file = "pydantic-1.10.13-cp37-cp37m-win_amd64.whl", hash = "sha256:b97c1fac8c49be29486df85968682b0afa77e1b809aff74b83081cc115e52f33"}, - {file = "pydantic-1.10.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261"}, - {file = "pydantic-1.10.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599"}, - {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127"}, - {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f"}, - {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78"}, - {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953"}, - {file = "pydantic-1.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f"}, - {file = "pydantic-1.10.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6"}, - {file = "pydantic-1.10.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691"}, - {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd"}, - {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1"}, - {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96"}, - {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d"}, - {file = "pydantic-1.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d"}, - {file = "pydantic-1.10.13-py3-none-any.whl", hash = "sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687"}, - {file = "pydantic-1.10.13.tar.gz", hash = "sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340"}, + {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"}, + {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"}, ] [package.dependencies] -typing-extensions = ">=4.2.0" +annotated-types = ">=0.4.0" +pydantic-core = "2.16.2" +typing-extensions = ">=4.6.1" [package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] +email = ["email-validator (>=2.0.0)"] + +[[package]] +name = "pydantic-core" +version = "2.16.2" +description = "" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"}, + {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"}, + {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"}, + {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"}, + {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"}, + {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"}, + {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"}, + {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"}, + {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"}, + {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"}, + {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"}, + {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"}, + {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"}, + {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -660,7 +718,6 @@ files = [ name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -678,30 +735,10 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "smithed-libraries" -version = "0.6.0" -description = "All of the Smithed Libraries" -category = "main" -optional = false -python-versions = ">=3.10,<4.0" -files = [ - {file = "smithed_libraries-0.6.0-py3-none-any.whl", hash = "sha256:ea0e0e8763fc5a5878387a091bc0961798c597f1dc1353ed59d582a0a9c79439"}, - {file = "smithed_libraries-0.6.0.tar.gz", hash = "sha256:677e4a0d0efddcb047773537593f6d9f8f72d6d284ed4d493cff463fc793a0c8"}, -] - -[package.dependencies] -beet = ">=0.80.1" -bolt = ">=0.20.1" -bolt-expressions = ">=0.8.2" -mecha = ">=0.57.5" -pydantic = ">=1.10.2,<2.0.0" - [[package]] name = "tokenstream" version = "1.7.0" description = "A versatile token stream for handwritten parsers" -category = "main" optional = false python-versions = ">=3.10,<4.0" files = [ @@ -713,7 +750,6 @@ files = [ name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -725,7 +761,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -737,7 +772,6 @@ files = [ name = "typing-extensions" version = "4.9.0" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -747,22 +781,22 @@ files = [ [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.0" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "9ace49c46c0403ef94ef9b42c0bb899bcae861405edfbe9a950bd6c69eac9652" +content-hash = "831d32ff983a72142b4560cc4f4b401a3e1056273fd6798df9821ff466fa9348" diff --git a/pyproject.toml b/pyproject.toml index d2cfa6496b..5b68dba647 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,12 +6,11 @@ authors = ["Gamemode 4 Contributors"] [tool.poetry.dependencies] python = "^3.10" -beet = "0.97.1" -mecha = "^0.79.0" -bolt = ">=0.38.2" +beet = "^0.103.1" +mecha = "^0.87.0" +bolt = "^0.45.0" PyYAML = "^6.0" -pydantic = "^1.10.2" -smithed-libraries = "^0.6.0" +pydantic = "^2.6.1" requests = "^2.28.1" pillow = "^10.0.0"