From 77f0e689f84a601f5da4aaf2308bccf74a531346 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sat, 24 Jul 2021 16:59:58 +0800 Subject: Initial public release (minecraft 1.17.1). --- .gitignore | 1 + README.md | 21 ++ blocks.txt | 106 +++++++ changelog.txt | 48 +++ data/bktsb/functions/booklistener.mcfunction | 36 +++ data/bktsb/functions/init.mcfunction | 19 ++ data/bktsb/functions/rng.mcfunction | 7 + data/bktsb/functions/starterisland.mcfunction | 3 + .../functions/structgen/gen_amethyst.mcfunction | 1 + .../structgen/gen_bastion_east.mcfunction | 25 ++ .../structgen/gen_bastion_north.mcfunction | 25 ++ .../structgen/gen_bastion_south.mcfunction | 25 ++ .../structgen/gen_bastion_west.mcfunction | 25 ++ .../functions/structgen/gen_dungeon.mcfunction | 3 + .../structgen/gen_endship_east.mcfunction | 4 + .../structgen/gen_endship_north.mcfunction | 4 + .../structgen/gen_endship_south.mcfunction | 4 + .../structgen/gen_endship_west.mcfunction | 4 + .../structgen/gen_fortressbalcony_east.mcfunction | 4 + .../structgen/gen_fortressbalcony_north.mcfunction | 4 + .../structgen/gen_fortressbalcony_south.mcfunction | 4 + .../structgen/gen_fortressbalcony_west.mcfunction | 4 + .../structgen/helpers/amethyst/cast_ray.mcfunction | 13 + .../structgen/helpers/amethyst/generate.mcfunction | 20 ++ .../structgen/helpers/amethyst/loop.mcfunction | 3 + .../structgen/helpers/amethyst/ray_tick.mcfunction | 4 + .../structgen/helpers/dungeon/loot.mcfunction | 22 ++ .../structgen/helpers/dungeon/room.mcfunction | 4 + .../helpers/dungeon/room_callback.mcfunction | 2 + .../structgen/helpers/dungeon/spawner.mcfunction | 6 + .../helpers/gen_bastion_helper.mcfunction | 29 ++ .../helpers/gen_end_ship_east_helper.mcfunction | 5 + .../helpers/gen_end_ship_north_helper.mcfunction | 5 + .../helpers/gen_end_ship_south_helper.mcfunction | 5 + .../helpers/gen_end_ship_west_helper.mcfunction | 5 + .../helpers/gen_generic_helper.mcfunction | 2 + ...place_bastion_common_loot_and_vanish.mcfunction | 2 + ...ace_bastion_treasure_loot_and_vanish.mcfunction | 2 + .../place_elytra_east_and_vanish.mcfunction | 2 + .../place_elytra_north_and_vanish.mcfunction | 2 + .../place_elytra_south_and_vanish.mcfunction | 2 + .../place_elytra_west_and_vanish.mcfunction | 2 + .../place_endship_loot_and_vanish.mcfunction | 2 + .../helpers/summon_shulker_and_vanish.mcfunction | 2 + data/bktsb/functions/summontrader.mcfunction | 6 + data/bktsb/functions/tradecycle.mcfunction | 7 + data/bktsb/functions/tradertrades.mcfunction | 55 ++++ data/bktsb/predicates/dummy1.json | 7 + data/bktsb/predicates/dummy2.json | 7 + data/bktsb/predicates/dummy3.json | 7 + data/bktsb/predicates/dummy4.json | 7 + data/bktsb/predicates/dummy_amethyst.json | 7 + data/bktsb/predicates/dummy_dungeon.json | 7 + data/bktsb/recipes/braincoralblock.json | 16 + data/bktsb/recipes/bubblecoralblock.json | 16 + data/bktsb/recipes/coalore.json | 21 ++ data/bktsb/recipes/copperore.json | 21 ++ data/bktsb/recipes/deepslatecoalore.json | 21 ++ data/bktsb/recipes/deepslatecopperore.json | 21 ++ data/bktsb/recipes/deepslatediamondore.json | 21 ++ data/bktsb/recipes/deepslateemeraldore.json | 21 ++ data/bktsb/recipes/deepslategoldore.json | 21 ++ data/bktsb/recipes/deepslateironore.json | 21 ++ data/bktsb/recipes/deepslatelapisore.json | 21 ++ data/bktsb/recipes/deepslateredstore.json | 21 ++ data/bktsb/recipes/diamondore.json | 21 ++ data/bktsb/recipes/dummy1.json | 16 + data/bktsb/recipes/dummy2.json | 16 + data/bktsb/recipes/dummy3.json | 17 + data/bktsb/recipes/dummy4.json | 17 + data/bktsb/recipes/dummy_amethyst.json | 17 + data/bktsb/recipes/dummy_dungeon.json | 18 ++ data/bktsb/recipes/egapple.json | 19 ++ data/bktsb/recipes/emeraldore.json | 21 ++ data/bktsb/recipes/endstone.json | 23 ++ data/bktsb/recipes/firecoralblock.json | 16 + data/bktsb/recipes/gildedblackst.json | 20 ++ data/bktsb/recipes/goldore.json | 21 ++ data/bktsb/recipes/horncoralblock.json | 16 + data/bktsb/recipes/ironore.json | 21 ++ data/bktsb/recipes/lapisore.json | 21 ++ data/bktsb/recipes/nethergoldore.json | 20 ++ data/bktsb/recipes/quartzore.json | 18 ++ data/bktsb/recipes/redsand.json | 20 ++ data/bktsb/recipes/redstore.json | 21 ++ data/bktsb/recipes/soulsoil.json | 19 ++ data/bktsb/recipes/tubecoralblock.json | 16 + data/bktsb/structures/dungeon_base.nbt | Bin 0 -> 376 bytes data/bktsb/structures/island.nbt | Bin 0 -> 4794 bytes data/bktsb/structures/nether/bastion1.nbt | Bin 0 -> 2219 bytes data/bktsb/structures/nether/bastion2.nbt | Bin 0 -> 1533 bytes data/bktsb/structures/nether/bastion3.nbt | Bin 0 -> 2461 bytes data/bktsb/structures/nether/bastion4.nbt | Bin 0 -> 11793 bytes data/bktsb/structures/nether/fortress.nbt | Bin 0 -> 1154 bytes data/minecraft/dimension_type/overworld.json | 17 + data/minecraft/dimension_type/overworld_caves.json | 17 + .../loot_tables/chests/end_city_treasure.json | 345 +++++++++++++++++++++ data/minecraft/loot_tables/entities/blaze.json | 67 ++++ data/minecraft/loot_tables/entities/creeper.json | 81 +++++ data/minecraft/loot_tables/entities/evoker.json | 45 +++ data/minecraft/loot_tables/entities/husk.json | 54 ++++ .../minecraft/loot_tables/entities/magma_cube.json | 50 +++ data/minecraft/loot_tables/entities/shulker.json | 31 ++ data/minecraft/loot_tables/entities/witch.json | 183 +++++++++++ data/minecraft/loot_tables/entities/zombie.json | 89 ++++++ .../loot_tables/entities/zombified_piglin.json | 107 +++++++ data/minecraft/tags/functions/load.json | 5 + data/minecraft/tags/functions/tick.json | 7 + features.txt | 66 ++++ items.txt | 177 +++++++++++ mobs.txt | 73 +++++ pack.mcmeta | 6 + version.txt | 2 + 113 files changed, 2706 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 blocks.txt create mode 100644 changelog.txt create mode 100644 data/bktsb/functions/booklistener.mcfunction create mode 100644 data/bktsb/functions/init.mcfunction create mode 100644 data/bktsb/functions/rng.mcfunction create mode 100644 data/bktsb/functions/starterisland.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_amethyst.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_bastion_east.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_bastion_north.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_bastion_south.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_bastion_west.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_dungeon.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_endship_east.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_endship_north.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_endship_south.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_endship_west.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_fortressbalcony_east.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_fortressbalcony_north.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_fortressbalcony_south.mcfunction create mode 100644 data/bktsb/functions/structgen/gen_fortressbalcony_west.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/amethyst/cast_ray.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/amethyst/generate.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/amethyst/loop.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/amethyst/ray_tick.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/dungeon/loot.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/dungeon/room.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/dungeon/room_callback.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/dungeon/spawner.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/gen_bastion_helper.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/gen_end_ship_east_helper.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/gen_end_ship_north_helper.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/gen_end_ship_south_helper.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/gen_end_ship_west_helper.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/gen_generic_helper.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/place_bastion_common_loot_and_vanish.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/place_bastion_treasure_loot_and_vanish.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/place_elytra_east_and_vanish.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/place_elytra_north_and_vanish.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/place_elytra_south_and_vanish.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/place_elytra_west_and_vanish.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/place_endship_loot_and_vanish.mcfunction create mode 100644 data/bktsb/functions/structgen/helpers/summon_shulker_and_vanish.mcfunction create mode 100644 data/bktsb/functions/summontrader.mcfunction create mode 100644 data/bktsb/functions/tradecycle.mcfunction create mode 100644 data/bktsb/functions/tradertrades.mcfunction create mode 100644 data/bktsb/predicates/dummy1.json create mode 100644 data/bktsb/predicates/dummy2.json create mode 100644 data/bktsb/predicates/dummy3.json create mode 100644 data/bktsb/predicates/dummy4.json create mode 100644 data/bktsb/predicates/dummy_amethyst.json create mode 100644 data/bktsb/predicates/dummy_dungeon.json create mode 100644 data/bktsb/recipes/braincoralblock.json create mode 100644 data/bktsb/recipes/bubblecoralblock.json create mode 100644 data/bktsb/recipes/coalore.json create mode 100644 data/bktsb/recipes/copperore.json create mode 100644 data/bktsb/recipes/deepslatecoalore.json create mode 100644 data/bktsb/recipes/deepslatecopperore.json create mode 100644 data/bktsb/recipes/deepslatediamondore.json create mode 100644 data/bktsb/recipes/deepslateemeraldore.json create mode 100644 data/bktsb/recipes/deepslategoldore.json create mode 100644 data/bktsb/recipes/deepslateironore.json create mode 100644 data/bktsb/recipes/deepslatelapisore.json create mode 100644 data/bktsb/recipes/deepslateredstore.json create mode 100644 data/bktsb/recipes/diamondore.json create mode 100644 data/bktsb/recipes/dummy1.json create mode 100644 data/bktsb/recipes/dummy2.json create mode 100644 data/bktsb/recipes/dummy3.json create mode 100644 data/bktsb/recipes/dummy4.json create mode 100644 data/bktsb/recipes/dummy_amethyst.json create mode 100644 data/bktsb/recipes/dummy_dungeon.json create mode 100644 data/bktsb/recipes/egapple.json create mode 100644 data/bktsb/recipes/emeraldore.json create mode 100644 data/bktsb/recipes/endstone.json create mode 100644 data/bktsb/recipes/firecoralblock.json create mode 100644 data/bktsb/recipes/gildedblackst.json create mode 100644 data/bktsb/recipes/goldore.json create mode 100644 data/bktsb/recipes/horncoralblock.json create mode 100644 data/bktsb/recipes/ironore.json create mode 100644 data/bktsb/recipes/lapisore.json create mode 100644 data/bktsb/recipes/nethergoldore.json create mode 100644 data/bktsb/recipes/quartzore.json create mode 100644 data/bktsb/recipes/redsand.json create mode 100644 data/bktsb/recipes/redstore.json create mode 100644 data/bktsb/recipes/soulsoil.json create mode 100644 data/bktsb/recipes/tubecoralblock.json create mode 100644 data/bktsb/structures/dungeon_base.nbt create mode 100644 data/bktsb/structures/island.nbt create mode 100644 data/bktsb/structures/nether/bastion1.nbt create mode 100644 data/bktsb/structures/nether/bastion2.nbt create mode 100644 data/bktsb/structures/nether/bastion3.nbt create mode 100644 data/bktsb/structures/nether/bastion4.nbt create mode 100644 data/bktsb/structures/nether/fortress.nbt create mode 100644 data/minecraft/dimension_type/overworld.json create mode 100644 data/minecraft/dimension_type/overworld_caves.json create mode 100644 data/minecraft/loot_tables/chests/end_city_treasure.json create mode 100644 data/minecraft/loot_tables/entities/blaze.json create mode 100644 data/minecraft/loot_tables/entities/creeper.json create mode 100644 data/minecraft/loot_tables/entities/evoker.json create mode 100644 data/minecraft/loot_tables/entities/husk.json create mode 100644 data/minecraft/loot_tables/entities/magma_cube.json create mode 100644 data/minecraft/loot_tables/entities/shulker.json create mode 100644 data/minecraft/loot_tables/entities/witch.json create mode 100644 data/minecraft/loot_tables/entities/zombie.json create mode 100644 data/minecraft/loot_tables/entities/zombified_piglin.json create mode 100644 data/minecraft/tags/functions/load.json create mode 100644 data/minecraft/tags/functions/tick.json create mode 100644 features.txt create mode 100644 items.txt create mode 100644 mobs.txt create mode 100644 pack.mcmeta create mode 100644 version.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..727bc05 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.directory diff --git a/README.md b/README.md new file mode 100644 index 0000000..99bc085 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# Data Pack for the BearKidsTeam Skyblock Server + +## Additions and Changes to the Vanilla Game + +**TODO** + +## Please note ... + + - You need command blocks enabled on the server so the data pack can function correctly. + + - Written for and tested on vanilla / fabric servers. Might not work on other servers. + + - You may want to comment out island generation once the starting island is generated because I couldn't figure out how to reliably disable it automatically (besides placing a bedrock there). + + - This datapack is written for a small SMP skyblock server, i.e. without a huge playerbase in mind. Some stuff may break if used on a huge server (mainly the structure books). + + - Structure books are **destructive**. They will erase anything within the bounding box of the generated structure. (Well, they don't _always_ do that. But don't let your guard down.) + +## Copyright + +Some of the JSON files (loot tables, dimension configuration) are pulled from official sources and modified based upon them. This is permitted by Mojang's EULA and Mojang holds the copyright of these files. Everything else in this data pack is licensed under the MIT (Expat) License. diff --git a/blocks.txt b/blocks.txt new file mode 100644 index 0000000..eaeb167 --- /dev/null +++ b/blocks.txt @@ -0,0 +1,106 @@ +Legend + +category +i : infinite +ii: infinite after initial acquirement, slow initial acquirement +iu: infinite after initial acquirement, no initial acquirement +r : unreliable renewable in vanilla +u : non renewable in vanilla +c : crafted only + +method of obtaining ("uncrafting" methods omitted) +* : mechanics added by this pack +# : unavailable in vanilla skyblock +##: unavailable in vanilla skyblock before initial acquirement +$ : unreliable / slow + +gravel i wg#, batering (late), ?* (early obtaining) +magma i wg#, crafting +obsidian i wg#, np$, formed (lava) +clay r wg#, villager gift, zombie drop* +terracotta c wg#, trading, crafting +dirt i wg#, tilling coarse dirt +coarse dirt i wg#, gravel+dirt +grass i wg#, spread +ice i wg#, water freezing +packedice i wg#, crafting +blueice i wg#, crafting +mycelium i wg#, spreading +podzol i wg#, spruce tree, wt trades$ +sand r wg#, wt trades$, husk drop*, chest loot# +redsand r wg#, wt trades$, crafting* +sandst r wg#, crafting +snow i wg#, snowing +stone i wg#, crafting +granite/p i wg#, crafting +diorite/p i wg#, crafting +andesite/p i wg#, crafting +coal ore u wg#, crafting* +diamond ore u wg#, crafting* +emerald ore u wg#, crafting* +gold ore u wg#, crafting* +nethergold u wg#, crafting* +iron ore u wg#, crafting* +lapis ore u wg#, crafting* +redst ore u wg#, crafting* +lava u wg#, wt trades$, bastioninabook +water i wg#, source formation, cauldron +basalt i wg#, blueicelava +blackst i wg#, batering +glowst i wg#, crafting +netherrack u wg#, zombiepig drop* +nylium iu wg#, spread, wt trades* +soul sand i wg#, batering +soul soil r wg#, soul campfire, crafting* +ancientdeb u wg#, chest loot#, magma cube drop* +quartz ore u wg#, crafting* +endstone r wg#, portal spawn, crafting* +sponge u wg#, elderguardian drop#, guardian drop* + +gildedblackst u wg#, chest loot#, crafting* +deadbush u wg#, husk drop* +chorus flower iu wg#, wt trades$, farming +coral i wg#, bonemeal +coralblock r wg#, wt trades$, crafting* +mushroom iu wg#, mooshroom shearing +fungus i wg#, bonemeal +netherwart iu wg#, farming, blaze drop* +spawners u + cavesp u + silfsh u + skele u + spider u + zombie u + blaze u fortressinabook + magama u bastioninabook + +=======================1.17======================= +amethy clst iu wg#, budding amethyst##, geodeinabook* +azalea i wg#, moss## +azalea lvs iu wg#, azalea## +amethy blk i wg#, geodeinabook* +cu blk+v c,i ores, drowned drop +raw blk c ores drop# +bud amethy u wg#, geodeinabook* +calcite u wg#, geodeinabook*, crafting* +candle c +cavevines iu wg#, chests#, dungeoninabook*? +deepslate* u wg#, crafting* +copperore u wg#, crafting* +dripleaf r wg#, wt trades$ +dripst blk i wg#, trading, crafting +glitemfram c +glowlichen iu wg#, bonemeal, wt trades* +hangroots i wg#, hoe rooted dirt +light - +lightngrod c +moss i wg#, wt trades, bonemeal +mosscarpet i wg#, bonemeal +pointdripst i wg#, wt trades, growing +powdersnow i wg#, cauldron +rooteddirt i wg#, azalea +sculksensor - +smoothbaslt i wg#, baslt, geodeinabook* +sporeblosm - +tintglass c +tuff i wg#, crafting* diff --git a/changelog.txt b/changelog.txt new file mode 100644 index 0000000..b375d23 --- /dev/null +++ b/changelog.txt @@ -0,0 +1,48 @@ +rev 1: initial production version. + +rev 2 (production only): disabled island generation. + +rev 3: witch drops brown mushroom. + +rev 4: structure books function correctly in other dimensions. + wandering traders announce their arrival. + +rev 5: trade cycling for wandering traders. + +rev 6: endcity chests now give chorus flower. + +rev 7: initlal 1.17 bring up. + recipes: + nerfed iron & gold ore crafting: recipe yields 8 -> 3. + new recipes: + cobbled deepslate: + 8 cobblestone + 1 gravel -> 4 cobbled deepslate + tuff: + 8 basalt + 1 obsidian -> 9 tuff + calcite: + 8 dripstone + 1 bonemeal -> 8 calcite + + loot tables: + fishing loot table reverted to vanilla + + wandering traders: + wandering traders no longer sell shulker spawn eggs. + end city in a book price adjusted: 30 shulker shells -> 30 ender chests. + wandering traders sells glow lichen for 5 diamonds. + wandering traders sells geodes book for 30 emeralds. + wandering traders sells dungeon book for 30 golden apples. + + structure books: + dungeon in a book + - always 9x6x9 and with a roof + - only generates the spawner if used while standing on a gold block + - always generates with two chests, one with dungeon loot, + one with mineshaft loot (for glow berries). + geode in a book + - always bound within a 11x11x11 cube + - must be used while standing on a diamond block, otherwise generates + without budding amethyst. + - 16~40 budding amethysts tries to generate, if the prerequisite is met. + + general: + building limits adjusted to their 1.18 values. diff --git a/data/bktsb/functions/booklistener.mcfunction b/data/bktsb/functions/booklistener.mcfunction new file mode 100644 index 0000000..709f2c6 --- /dev/null +++ b/data/bktsb/functions/booklistener.mcfunction @@ -0,0 +1,36 @@ +execute as @a[predicate=bktsb:dummy1,y_rotation=-45..44] at @s run function bktsb:structgen/gen_endship_south +execute as @a[predicate=bktsb:dummy1,y_rotation=45..134] at @s run function bktsb:structgen/gen_endship_west +execute as @a[predicate=bktsb:dummy1,y_rotation=135..224] at @s run function bktsb:structgen/gen_endship_north +execute as @a[predicate=bktsb:dummy1,y_rotation=-135..-46] at @s run function bktsb:structgen/gen_endship_east +recipe take @a[predicate=bktsb:dummy1] bktsb:dummy1 + +execute as @a[predicate=bktsb:dummy2,y_rotation=-45..44] at @s run function bktsb:structgen/gen_bastion_south +execute as @a[predicate=bktsb:dummy2,y_rotation=45..134] at @s run function bktsb:structgen/gen_bastion_west +execute as @a[predicate=bktsb:dummy2,y_rotation=135..224] at @s run function bktsb:structgen/gen_bastion_north +execute as @a[predicate=bktsb:dummy2,y_rotation=-135..-46] at @s run function bktsb:structgen/gen_bastion_east +recipe take @a[predicate=bktsb:dummy2] bktsb:dummy2 + +execute as @a[predicate=bktsb:dummy3,y_rotation=-45..44] at @s run function bktsb:structgen/gen_fortressbalcony_south +execute as @a[predicate=bktsb:dummy3,y_rotation=45..134] at @s run function bktsb:structgen/gen_fortressbalcony_west +execute as @a[predicate=bktsb:dummy3,y_rotation=135..224] at @s run function bktsb:structgen/gen_fortressbalcony_north +execute as @a[predicate=bktsb:dummy3,y_rotation=-135..-46] at @s run function bktsb:structgen/gen_fortressbalcony_east +recipe take @a[predicate=bktsb:dummy3] bktsb:dummy3 + +execute as @a[predicate=bktsb:dummy4,y_rotation=-45..44] at @s run setblock ~ ~ ~1 chest[facing=north] +execute as @a[predicate=bktsb:dummy4,y_rotation=-45..44] at @s run data modify block ~ ~ ~1 LootTable set value "minecraft:chests/buried_treasure" + +execute as @a[predicate=bktsb:dummy4,y_rotation=45..134] at @s run setblock ~-1 ~ ~ chest[facing=east] +execute as @a[predicate=bktsb:dummy4,y_rotation=45..134] at @s run data modify block ~-1 ~ ~ LootTable set value "minecraft:chests/buried_treasure" + +execute as @a[predicate=bktsb:dummy4,y_rotation=135..224] at @s run setblock ~ ~ ~-1 chest[facing=south] +execute as @a[predicate=bktsb:dummy4,y_rotation=135..224] at @s run data modify block ~ ~ ~-1 LootTable set value "minecraft:chests/buried_treasure" + +execute as @a[predicate=bktsb:dummy4,y_rotation=-135..-46] at @s run setblock ~1 ~ ~ chest[facing=west] +execute as @a[predicate=bktsb:dummy4,y_rotation=-135..-46] at @s run data modify block ~1 ~ ~ LootTable set value "minecraft:chests/buried_treasure" +recipe take @a[predicate=bktsb:dummy4] bktsb:dummy4 + +execute as @a[predicate=bktsb:dummy_amethyst] at @s run function bktsb:structgen/gen_amethyst +recipe take @a[predicate=bktsb:dummy_amethyst] bktsb:dummy_amethyst + +execute as @a[predicate=bktsb:dummy_dungeon] at @s run function bktsb:structgen/gen_dungeon +recipe take @a[predicate=bktsb:dummy_dungeon] bktsb:dummy_dungeon diff --git a/data/bktsb/functions/init.mcfunction b/data/bktsb/functions/init.mcfunction new file mode 100644 index 0000000..36dd5e1 --- /dev/null +++ b/data/bktsb/functions/init.mcfunction @@ -0,0 +1,19 @@ +scoreboard objectives add srand dummy +scoreboard objectives add randr dummy +scoreboard objectives add c dummy +scoreboard objectives add m dummy +scoreboard objectives add p dummy +scoreboard objectives add lim dummy +scoreboard objectives add genvar dummy +scoreboard objectives add booktrigger minecraft.used:minecraft.knowledge_book +scoreboard objectives add firstload dummy +scoreboard objectives add looper dummy +scoreboard objectives add loopstep dummy +scoreboard players set #a c 12345 +scoreboard players set #a m 1103515245 +scoreboard players set #a p 2147483647 +scoreboard players set #a srand 617274873 + +execute unless score #a firstload matches 1 run scoreboard players set #a firstload 0 +execute if score #a firstload matches 0 run function bktsb:starterisland +scoreboard players set #a testFirst 1 diff --git a/data/bktsb/functions/rng.mcfunction b/data/bktsb/functions/rng.mcfunction new file mode 100644 index 0000000..cf10912 --- /dev/null +++ b/data/bktsb/functions/rng.mcfunction @@ -0,0 +1,7 @@ +#set lim before using +scoreboard players operation #a srand *= #a m +scoreboard players operation #a srand += #a c +scoreboard players operation #a srand %= #a p +scoreboard players operation #a randr = #a srand +scoreboard players operation #a randr %= #a lim +#result in randr diff --git a/data/bktsb/functions/starterisland.mcfunction b/data/bktsb/functions/starterisland.mcfunction new file mode 100644 index 0000000..6b1565b --- /dev/null +++ b/data/bktsb/functions/starterisland.mcfunction @@ -0,0 +1,3 @@ +setworldspawn 0 67 0 -90 +setblock -3 65 -1 minecraft:structure_block{name:"bktsb:island",mode:"LOAD",ignoreEntities:1,rotation:"NONE"} replace +setblock -3 66 -1 minecraft:redstone_block diff --git a/data/bktsb/functions/structgen/gen_amethyst.mcfunction b/data/bktsb/functions/structgen/gen_amethyst.mcfunction new file mode 100644 index 0000000..f733f22 --- /dev/null +++ b/data/bktsb/functions/structgen/gen_amethyst.mcfunction @@ -0,0 +1 @@ +function bktsb:structgen/helpers/amethyst/generate diff --git a/data/bktsb/functions/structgen/gen_bastion_east.mcfunction b/data/bktsb/functions/structgen/gen_bastion_east.mcfunction new file mode 100644 index 0000000..b4266b2 --- /dev/null +++ b/data/bktsb/functions/structgen/gen_bastion_east.mcfunction @@ -0,0 +1,25 @@ +scoreboard players set #a lim 4 +function bktsb:rng +scoreboard players operation #a genvar = #a randr +#for debugging +#scoreboard players set #a genvar 0 + +#11 x 4 x 12, w x h x d +execute if score #a genvar matches 0 run setblock ~13 ~ ~-5 minecraft:structure_block{name:"bktsb:nether/bastion1",mode:"LOAD",ignoreEntities:1,rotation:"CLOCKWISE_90"} replace +execute if score #a genvar matches 0 run setblock ~13 ~12 ~-5 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 0 run setblock ~13 ~1 ~-5 redstone_block + +#10 x 3 x 10 +execute if score #a genvar matches 1 run setblock ~11 ~ ~-5 minecraft:structure_block{name:"bktsb:nether/bastion2",mode:"LOAD",ignoreEntities:1,rotation:"CLOCKWISE_90"} replace +execute if score #a genvar matches 1 run setblock ~11 ~12 ~-5 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 1 run setblock ~11 ~1 ~-5 redstone_block + +#11 x 5 x 11 +execute if score #a genvar matches 2 run setblock ~12 ~ ~-5 minecraft:structure_block{name:"bktsb:nether/bastion3",mode:"LOAD",ignoreEntities:1,rotation:"CLOCKWISE_90"} replace +execute if score #a genvar matches 2 run setblock ~12 ~12 ~-5 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 2 run setblock ~12 ~1 ~-5 redstone_block + +#19 x 10 x 20 +execute if score #a genvar matches 3 run setblock ~21 ~ ~-9 minecraft:structure_block{name:"bktsb:nether/bastion4",mode:"LOAD",ignoreEntities:1,rotation:"CLOCKWISE_90"} replace +execute if score #a genvar matches 3 run setblock ~21 ~12 ~-9 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 3 run setblock ~21 ~1 ~-9 redstone_block diff --git a/data/bktsb/functions/structgen/gen_bastion_north.mcfunction b/data/bktsb/functions/structgen/gen_bastion_north.mcfunction new file mode 100644 index 0000000..492ef0c --- /dev/null +++ b/data/bktsb/functions/structgen/gen_bastion_north.mcfunction @@ -0,0 +1,25 @@ +scoreboard players set #a lim 4 +function bktsb:rng +scoreboard players operation #a genvar = #a randr +#for debugging +#scoreboard players set #a genvar 0 + +#11 x 4 x 12, w x h x d +execute if score #a genvar matches 0 run setblock ~-5 ~ ~-13 minecraft:structure_block{name:"bktsb:nether/bastion1",mode:"LOAD",ignoreEntities:1,rotation:"NONE"} replace +execute if score #a genvar matches 0 run setblock ~-5 ~12 ~-13 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 0 run setblock ~-5 ~1 ~-13 redstone_block + +#10 x 3 x 10 +execute if score #a genvar matches 1 run setblock ~-5 ~ ~-11 minecraft:structure_block{name:"bktsb:nether/bastion2",mode:"LOAD",ignoreEntities:1,rotation:"NONE"} replace +execute if score #a genvar matches 1 run setblock ~-5 ~12 ~-11 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 1 run setblock ~-5 ~1 ~-11 redstone_block + +#11 x 5 x 11 +execute if score #a genvar matches 2 run setblock ~-5 ~ ~-12 minecraft:structure_block{name:"bktsb:nether/bastion3",mode:"LOAD",ignoreEntities:1,rotation:"NONE"} replace +execute if score #a genvar matches 2 run setblock ~-5 ~12 ~-12 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 2 run setblock ~-5 ~1 ~-12 redstone_block + +#19 x 10 x 20 +execute if score #a genvar matches 3 run setblock ~-9 ~ ~-21 minecraft:structure_block{name:"bktsb:nether/bastion4",mode:"LOAD",ignoreEntities:1,rotation:"NONE"} replace +execute if score #a genvar matches 3 run setblock ~-9 ~12 ~-21 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 3 run setblock ~-9 ~1 ~-21 redstone_block diff --git a/data/bktsb/functions/structgen/gen_bastion_south.mcfunction b/data/bktsb/functions/structgen/gen_bastion_south.mcfunction new file mode 100644 index 0000000..d031e21 --- /dev/null +++ b/data/bktsb/functions/structgen/gen_bastion_south.mcfunction @@ -0,0 +1,25 @@ +scoreboard players set #a lim 4 +function bktsb:rng +scoreboard players operation #a genvar = #a randr +#for debugging +#scoreboard players set #a genvar 0 + +#11 x 4 x 12, w x h x d +execute if score #a genvar matches 0 run setblock ~5 ~ ~13 minecraft:structure_block{name:"bktsb:nether/bastion1",mode:"LOAD",ignoreEntities:1,rotation:"CLOCKWISE_180"} replace +execute if score #a genvar matches 0 run setblock ~5 ~12 ~ minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 0 run setblock ~5 ~1 ~13 redstone_block + +#10 x 3 x 10 +execute if score #a genvar matches 1 run setblock ~5 ~ ~11 minecraft:structure_block{name:"bktsb:nether/bastion2",mode:"LOAD",ignoreEntities:1,rotation:"CLOCKWISE_180"} replace +execute if score #a genvar matches 1 run setblock ~5 ~12 ~ minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 1 run setblock ~5 ~1 ~11 redstone_block + +#11 x 5 x 11 +execute if score #a genvar matches 2 run setblock ~5 ~ ~12 minecraft:structure_block{name:"bktsb:nether/bastion3",mode:"LOAD",ignoreEntities:1,rotation:"CLOCKWISE_180"} replace +execute if score #a genvar matches 2 run setblock ~5 ~12 ~ minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 2 run setblock ~5 ~1 ~12 redstone_block + +#19 x 10 x 20 +execute if score #a genvar matches 3 run setblock ~9 ~ ~21 minecraft:structure_block{name:"bktsb:nether/bastion4",mode:"LOAD",ignoreEntities:1,rotation:"CLOCKWISE_180"} replace +execute if score #a genvar matches 3 run setblock ~9 ~12 ~ minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 3 run setblock ~9 ~1 ~21 redstone_block diff --git a/data/bktsb/functions/structgen/gen_bastion_west.mcfunction b/data/bktsb/functions/structgen/gen_bastion_west.mcfunction new file mode 100644 index 0000000..4ff206f --- /dev/null +++ b/data/bktsb/functions/structgen/gen_bastion_west.mcfunction @@ -0,0 +1,25 @@ +scoreboard players set #a lim 4 +function bktsb:rng +scoreboard players operation #a genvar = #a randr +#for debugging +#scoreboard players set #a genvar 0 + +#11 x 4 x 12, w x h x d +execute if score #a genvar matches 0 run setblock ~-13 ~ ~5 minecraft:structure_block{name:"bktsb:nether/bastion1",mode:"LOAD",ignoreEntities:1,rotation:"COUNTERCLOCKWISE_90"} replace +execute if score #a genvar matches 0 run setblock ~-13 ~12 ~5 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 0 run setblock ~-13 ~1 ~5 redstone_block + +#10 x 3 x 10 +execute if score #a genvar matches 1 run setblock ~-11 ~ ~5 minecraft:structure_block{name:"bktsb:nether/bastion2",mode:"LOAD",ignoreEntities:1,rotation:"COUNTERCLOCKWISE_90"} replace +execute if score #a genvar matches 1 run setblock ~-11 ~12 ~5 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 1 run setblock ~-11 ~1 ~5 redstone_block + +#11 x 5 x 11 +execute if score #a genvar matches 2 run setblock ~-12 ~ ~5 minecraft:structure_block{name:"bktsb:nether/bastion3",mode:"LOAD",ignoreEntities:1,rotation:"COUNTERCLOCKWISE_90"} replace +execute if score #a genvar matches 2 run setblock ~-12 ~12 ~5 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 2 run setblock ~-12 ~1 ~5 redstone_block + +#19 x 10 x 20 +execute if score #a genvar matches 3 run setblock ~-21 ~ ~9 minecraft:structure_block{name:"bktsb:nether/bastion4",mode:"LOAD",ignoreEntities:1,rotation:"COUNTERCLOCKWISE_90"} replace +execute if score #a genvar matches 3 run setblock ~-21 ~12 ~9 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_bastion_helper",TrackOutput:0} +execute if score #a genvar matches 3 run setblock ~-21 ~1 ~9 redstone_block diff --git a/data/bktsb/functions/structgen/gen_dungeon.mcfunction b/data/bktsb/functions/structgen/gen_dungeon.mcfunction new file mode 100644 index 0000000..50ef606 --- /dev/null +++ b/data/bktsb/functions/structgen/gen_dungeon.mcfunction @@ -0,0 +1,3 @@ +function bktsb:structgen/helpers/dungeon/room +execute positioned ~ ~-1 ~ if block ~ ~ ~ gold_block run function bktsb:structgen/helpers/dungeon/spawner +function bktsb:structgen/helpers/dungeon/loot diff --git a/data/bktsb/functions/structgen/gen_endship_east.mcfunction b/data/bktsb/functions/structgen/gen_endship_east.mcfunction new file mode 100644 index 0000000..0547a36 --- /dev/null +++ b/data/bktsb/functions/structgen/gen_endship_east.mcfunction @@ -0,0 +1,4 @@ +#13 x 24 x 29, w x h x d +setblock ~30 ~ ~-6 minecraft:structure_block{name:"end_city/ship",mode:"LOAD",ignoreEntities:0,rotation:"CLOCKWISE_90"} replace +setblock ~30 ~30 ~-6 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_end_ship_east_helper",TrackOutput:0} +setblock ~30 ~1 ~-6 redstone_block diff --git a/data/bktsb/functions/structgen/gen_endship_north.mcfunction b/data/bktsb/functions/structgen/gen_endship_north.mcfunction new file mode 100644 index 0000000..7cde7f2 --- /dev/null +++ b/data/bktsb/functions/structgen/gen_endship_north.mcfunction @@ -0,0 +1,4 @@ +#13 x 24 x 29, w x h x d +setblock ~-6 ~ ~-30 minecraft:structure_block{name:"end_city/ship",mode:"LOAD",ignoreEntities:0,rotation:"NONE"} replace +setblock ~-6 ~30 ~-30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_end_ship_north_helper",TrackOutput:0} +setblock ~-6 ~1 ~-30 redstone_block diff --git a/data/bktsb/functions/structgen/gen_endship_south.mcfunction b/data/bktsb/functions/structgen/gen_endship_south.mcfunction new file mode 100644 index 0000000..0499ac2 --- /dev/null +++ b/data/bktsb/functions/structgen/gen_endship_south.mcfunction @@ -0,0 +1,4 @@ +#13 x 24 x 29, w x h x d +setblock ~6 ~ ~30 minecraft:structure_block{name:"end_city/ship",mode:"LOAD",ignoreEntities:0,rotation:"CLOCKWISE_180"} replace +setblock ~6 ~30 ~ minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_end_ship_south_helper",TrackOutput:0} +setblock ~6 ~1 ~30 redstone_block diff --git a/data/bktsb/functions/structgen/gen_endship_west.mcfunction b/data/bktsb/functions/structgen/gen_endship_west.mcfunction new file mode 100644 index 0000000..b83d94c --- /dev/null +++ b/data/bktsb/functions/structgen/gen_endship_west.mcfunction @@ -0,0 +1,4 @@ +#13 x 24 x 29, w x h x d +setblock ~-30 ~ ~6 minecraft:structure_block{name:"end_city/ship",mode:"LOAD",ignoreEntities:0,rotation:"COUNTERCLOCKWISE_90"} replace +setblock ~-30 ~30 ~6 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_end_ship_west_helper",TrackOutput:0} +setblock ~-30 ~1 ~6 redstone_block diff --git a/data/bktsb/functions/structgen/gen_fortressbalcony_east.mcfunction b/data/bktsb/functions/structgen/gen_fortressbalcony_east.mcfunction new file mode 100644 index 0000000..489efee --- /dev/null +++ b/data/bktsb/functions/structgen/gen_fortressbalcony_east.mcfunction @@ -0,0 +1,4 @@ +# 7 x 5 x 7 +setblock ~8 ~ ~3 minecraft:structure_block{name:"bktsb:nether/fortress",mode:"LOAD",ignoreEntities:1,rotation:"CLOCKWISE_180"} replace +setblock ~8 ~12 ~3 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_generic_helper",TrackOutput:0} +setblock ~8 ~1 ~3 redstone_block diff --git a/data/bktsb/functions/structgen/gen_fortressbalcony_north.mcfunction b/data/bktsb/functions/structgen/gen_fortressbalcony_north.mcfunction new file mode 100644 index 0000000..f9c3028 --- /dev/null +++ b/data/bktsb/functions/structgen/gen_fortressbalcony_north.mcfunction @@ -0,0 +1,4 @@ +# 7 x 5 x 7 +setblock ~3 ~ ~-8 minecraft:structure_block{name:"bktsb:nether/fortress",mode:"LOAD",ignoreEntities:1,rotation:"CLOCKWISE_90"} replace +setblock ~3 ~12 ~ minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_generic_helper",TrackOutput:0} +setblock ~3 ~1 ~-8 redstone_block diff --git a/data/bktsb/functions/structgen/gen_fortressbalcony_south.mcfunction b/data/bktsb/functions/structgen/gen_fortressbalcony_south.mcfunction new file mode 100644 index 0000000..9418e6f --- /dev/null +++ b/data/bktsb/functions/structgen/gen_fortressbalcony_south.mcfunction @@ -0,0 +1,4 @@ +# 7 x 5 x 7 +setblock ~-3 ~ ~8 minecraft:structure_block{name:"bktsb:nether/fortress",mode:"LOAD",ignoreEntities:1,rotation:"COUNTERCLOCKWISE_90"} replace +setblock ~-3 ~12 ~ minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_generic_helper",TrackOutput:0} +setblock ~-3 ~1 ~8 redstone_block diff --git a/data/bktsb/functions/structgen/gen_fortressbalcony_west.mcfunction b/data/bktsb/functions/structgen/gen_fortressbalcony_west.mcfunction new file mode 100644 index 0000000..e5b791d --- /dev/null +++ b/data/bktsb/functions/structgen/gen_fortressbalcony_west.mcfunction @@ -0,0 +1,4 @@ +# 7 x 5 x 7 +setblock ~-8 ~ ~-3 minecraft:structure_block{name:"bktsb:nether/fortress",mode:"LOAD",ignoreEntities:1,rotation:"NONE"} replace +setblock ~-8 ~12 ~-3 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/gen_generic_helper",TrackOutput:0} +setblock ~-8 ~1 ~-3 redstone_block diff --git a/data/bktsb/functions/structgen/helpers/amethyst/cast_ray.mcfunction b/data/bktsb/functions/structgen/helpers/amethyst/cast_ray.mcfunction new file mode 100644 index 0000000..74ec2b3 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/amethyst/cast_ray.mcfunction @@ -0,0 +1,13 @@ +summon armor_stand ~ ~ ~ {Glowing:1,NoGravity:1} + +scoreboard players set #a lim 360 +function bktsb:rng +execute store result entity @e[type=armor_stand,sort=nearest,nbt={Glowing:1b},tag=!ame_rays,limit=1] Rotation[0] float 1.0 run scoreboard players get #a randr + +scoreboard players set #a lim 181 +function bktsb:rng +scoreboard players set #a lim 90 +scoreboard players operation #a randr -= #a lim +execute store result entity @e[type=armor_stand,sort=nearest,nbt={Glowing:1b},tag=!ame_rays,limit=1] Rotation[1] float 1.0 run scoreboard players get #a randr + +tag @e[type=armor_stand,sort=nearest,nbt={Glowing:1b},tag=!ame_rays,limit=1] add ame_rays diff --git a/data/bktsb/functions/structgen/helpers/amethyst/generate.mcfunction b/data/bktsb/functions/structgen/helpers/amethyst/generate.mcfunction new file mode 100644 index 0000000..19719a4 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/amethyst/generate.mcfunction @@ -0,0 +1,20 @@ +scoreboard players set #a genvar 0 +execute if block ~ ~-1 ~ diamond_block run scoreboard players set #a genvar 1 + +fill ~-11 ~-12 ~-11 ~11 ~11 ~11 air +kill @e[type=item,distance=..20,nbt={Item:{id:"minecraft:redstone"}}] +fill ~-11 ~-11 ~-11 ~11 ~11 ~11 redstone_wire +execute as @e[type=item,distance=..10,nbt={Item:{id:"minecraft:redstone"}}] at @s run setblock ~ ~ ~ smooth_basalt +execute as @e[type=item,distance=..9,nbt={Item:{id:"minecraft:redstone"}}] at @s run setblock ~ ~ ~ calcite +execute as @e[type=item,distance=..8,nbt={Item:{id:"minecraft:redstone"}}] at @s run setblock ~ ~ ~ amethyst_block +execute as @e[type=item,distance=..7,nbt={Item:{id:"minecraft:redstone"}}] at @s run setblock ~ ~ ~ air +kill @e[type=item,distance=..20,nbt={Item:{id:"minecraft:redstone"}}] + +scoreboard players set #a lim 24 +function bktsb:rng +scoreboard players operation #a looper = #a randr +scoreboard players set #a lim 16 +scoreboard players operation #a looper += #a lim +scoreboard players set #a loopstep 1 + +execute if score #a genvar matches 1.. run setblock ~ ~-1 ~ repeating_command_block{auto:1,Command:"function bktsb:structgen/helpers/amethyst/loop",TrackOutput:0} diff --git a/data/bktsb/functions/structgen/helpers/amethyst/loop.mcfunction b/data/bktsb/functions/structgen/helpers/amethyst/loop.mcfunction new file mode 100644 index 0000000..dcd7362 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/amethyst/loop.mcfunction @@ -0,0 +1,3 @@ +execute if score #a looper matches ..0 run setblock ~ ~ ~ amethyst_block +execute positioned ~ ~1 ~ if score #a looper matches 1.. run function bktsb:structgen/helpers/amethyst/cast_ray +execute if score #a looper matches 1.. run scoreboard players operation #a looper -= #a loopstep diff --git a/data/bktsb/functions/structgen/helpers/amethyst/ray_tick.mcfunction b/data/bktsb/functions/structgen/helpers/amethyst/ray_tick.mcfunction new file mode 100644 index 0000000..9dca97b --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/amethyst/ray_tick.mcfunction @@ -0,0 +1,4 @@ +execute as @e[type=armor_stand,tag=ame_rays] at @s run tp @s ^ ^ ^1 +execute as @e[type=armor_stand,tag=ame_rays] at @s if block ~ ~ ~ amethyst_block run setblock ~ ~ ~ budding_amethyst +execute as @e[type=armor_stand,tag=ame_rays] at @s if block ~ ~ ~ calcite run kill @s +execute as @e[type=armor_stand,tag=ame_rays] at @s if block ~ ~ ~ smooth_basalt run kill @s diff --git a/data/bktsb/functions/structgen/helpers/dungeon/loot.mcfunction b/data/bktsb/functions/structgen/helpers/dungeon/loot.mcfunction new file mode 100644 index 0000000..a7f0f2e --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/dungeon/loot.mcfunction @@ -0,0 +1,22 @@ +scoreboard players set #a lim 4 +function bktsb:rng + +execute if score #a randr matches 0 run setblock ~-3 ~-1 ~-2 chest[facing=east] +execute if score #a randr matches 0 run data merge block ~-3 ~-1 ~-2 {LootTable:"minecraft:chests/simple_dungeon"} +execute if score #a randr matches 0 run setblock ~-2 ~-1 ~-3 chest[facing=south] +execute if score #a randr matches 0 run data merge block ~-2 ~-1 ~-3 {LootTable:"minecraft:chests/abandoned_mineshaft"} + +execute if score #a randr matches 1 run setblock ~-3 ~-1 ~2 chest[facing=east] +execute if score #a randr matches 1 run data merge block ~-3 ~-1 ~2 {LootTable:"minecraft:chests/simple_dungeon"} +execute if score #a randr matches 1 run setblock ~-2 ~-1 ~3 chest[facing=north] +execute if score #a randr matches 1 run data merge block ~-2 ~-1 ~3 {LootTable:"minecraft:chests/abandoned_mineshaft"} + +execute if score #a randr matches 2 run setblock ~3 ~-1 ~-2 chest[facing=west] +execute if score #a randr matches 2 run data merge block ~3 ~-1 ~-2 {LootTable:"minecraft:chests/simple_dungeon"} +execute if score #a randr matches 2 run setblock ~2 ~-1 ~-3 chest[facing=south] +execute if score #a randr matches 2 run data merge block ~2 ~-1 ~-3 {LootTable:"minecraft:chests/abandoned_mineshaft"} + +execute if score #a randr matches 3 run setblock ~3 ~-1 ~2 chest[facing=west] +execute if score #a randr matches 3 run data merge block ~3 ~-1 ~2 {LootTable:"minecraft:chests/simple_dungeon"} +execute if score #a randr matches 3 run setblock ~2 ~-1 ~3 chest[facing=north] +execute if score #a randr matches 3 run data merge block ~2 ~-1 ~3 {LootTable:"minecraft:chests/abandoned_mineshaft"} diff --git a/data/bktsb/functions/structgen/helpers/dungeon/room.mcfunction b/data/bktsb/functions/structgen/helpers/dungeon/room.mcfunction new file mode 100644 index 0000000..1f7cd21 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/dungeon/room.mcfunction @@ -0,0 +1,4 @@ +fill ~-4 ~-2 ~-4 ~4 ~3 ~4 cobblestone outline +setblock ~-4 ~-2 ~-4 minecraft:structure_block{name:"bktsb:dungeon_base",mode:"LOAD",ignoreEntities:1,rotation:"NONE",integrity:0.5} replace +setblock ~-4 ~-1 ~-4 redstone_block +setblock ~-4 ~-0 ~-4 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/dungeon/room_callback",TrackOutput:0} diff --git a/data/bktsb/functions/structgen/helpers/dungeon/room_callback.mcfunction b/data/bktsb/functions/structgen/helpers/dungeon/room_callback.mcfunction new file mode 100644 index 0000000..8db59a6 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/dungeon/room_callback.mcfunction @@ -0,0 +1,2 @@ +fill ~ ~-2 ~ ~8 ~-2 ~8 cobblestone replace air +fill ~ ~ ~ ~ ~-2 ~ cobblestone diff --git a/data/bktsb/functions/structgen/helpers/dungeon/spawner.mcfunction b/data/bktsb/functions/structgen/helpers/dungeon/spawner.mcfunction new file mode 100644 index 0000000..043156c --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/dungeon/spawner.mcfunction @@ -0,0 +1,6 @@ +setblock ~ ~ ~ spawner +scoreboard players set #a lim 4 +function bktsb:rng +execute if score #a randr matches 0..1 run data merge block ~ ~ ~ {MaxNearbyEntities: 6s, RequiredPlayerRange: 16s, SpawnCount: 4s, SpawnData: {id: "minecraft:zombie"}, MaxSpawnDelay: 800s, Delay: 500s, SpawnRange: 4s, MinSpawnDelay: 200s, SpawnPotentials: [{Entity: {id: "minecraft:zombie"}, Weight: 1}]} +execute if score #a randr matches 2 run data merge block ~ ~ ~ {MaxNearbyEntities: 6s, RequiredPlayerRange: 16s, SpawnCount: 4s, SpawnData: {id: "minecraft:skeleton"}, MaxSpawnDelay: 800s, Delay: 500s, SpawnRange: 4s, MinSpawnDelay: 200s, SpawnPotentials: [{Entity: {id: "minecraft:skeleton"}, Weight: 1}]} +execute if score #a randr matches 3 run data merge block ~ ~ ~ {MaxNearbyEntities: 6s, RequiredPlayerRange: 16s, SpawnCount: 4s, SpawnData: {id: "minecraft:spider"}, MaxSpawnDelay: 800s, Delay: 500s, SpawnRange: 4s, MinSpawnDelay: 200s, SpawnPotentials: [{Entity: {id: "minecraft:spider"}, Weight: 1}]} diff --git a/data/bktsb/functions/structgen/helpers/gen_bastion_helper.mcfunction b/data/bktsb/functions/structgen/helpers/gen_bastion_helper.mcfunction new file mode 100644 index 0000000..acdb77e --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/gen_bastion_helper.mcfunction @@ -0,0 +1,29 @@ +fill ~ ~ ~ ~ ~-12 ~ minecraft:air replace minecraft:redstone_block +setblock ~ ~ ~ minecraft:air +fill ~-16 ~-10 ~-16 ~16 ~-9 ~16 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/place_bastion_common_loot_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"bastion_other"} +fill ~-20 ~-9 ~-20 ~20 ~-7 ~20 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/place_bastion_treasure_loot_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"bastion_treasure"} + +scoreboard players set #a lim 3 +function bktsb:rng + +execute if score #a randr matches 1.. run summon piglin_brute ~ ~ ~ +scoreboard players remove #a randr 1 +execute if score #a randr matches 1.. run summon piglin_brute ~ ~ ~ + +execute as @e[type=piglin_brute,distance=..50] run data merge entity @s {IsImmuneToZombification:1} + +scoreboard players set #a lim 5 +function bktsb:rng + +execute if score #a randr matches 1.. run summon piglin ~ ~ ~ +scoreboard players remove #a randr 1 +execute if score #a randr matches 1.. run summon piglin ~ ~ ~ +scoreboard players remove #a randr 1 +execute if score #a randr matches 1.. run summon piglin ~ ~ ~ +scoreboard players remove #a randr 1 +execute if score #a randr matches 1.. run summon piglin ~ ~ ~ + +execute as @e[type=piglin,distance=..50] run data merge entity @s {IsImmuneToZombification:1} + +spreadplayers ~ ~ 2 20 false @e[type=piglin_brute,distance=..50] +spreadplayers ~ ~ 2 20 false @e[type=piglin,distance=..50] diff --git a/data/bktsb/functions/structgen/helpers/gen_end_ship_east_helper.mcfunction b/data/bktsb/functions/structgen/helpers/gen_end_ship_east_helper.mcfunction new file mode 100644 index 0000000..c791e15 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/gen_end_ship_east_helper.mcfunction @@ -0,0 +1,5 @@ +fill ~ ~ ~ ~ ~-29 ~ minecraft:air replace minecraft:redstone_block +setblock ~ ~ ~ minecraft:air +fill ~0 ~-25 ~-30 ~-30 ~-24 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/place_endship_loot_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Chest"} +fill ~0 ~-25 ~-30 ~-30 ~-24 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/place_elytra_west_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Elytra"} +fill ~0 ~-29 ~-30 ~-30 ~-18 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/summon_shulker_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Sentry"} diff --git a/data/bktsb/functions/structgen/helpers/gen_end_ship_north_helper.mcfunction b/data/bktsb/functions/structgen/helpers/gen_end_ship_north_helper.mcfunction new file mode 100644 index 0000000..15be5d9 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/gen_end_ship_north_helper.mcfunction @@ -0,0 +1,5 @@ +fill ~ ~ ~ ~ ~-29 ~ minecraft:air replace minecraft:redstone_block +setblock ~ ~ ~ minecraft:air +fill ~-30 ~-25 ~0 ~30 ~-24 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/place_endship_loot_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Chest"} +fill ~-30 ~-25 ~0 ~30 ~-24 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/place_elytra_south_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Elytra"} +fill ~-30 ~-29 ~0 ~30 ~-18 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/summon_shulker_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Sentry"} diff --git a/data/bktsb/functions/structgen/helpers/gen_end_ship_south_helper.mcfunction b/data/bktsb/functions/structgen/helpers/gen_end_ship_south_helper.mcfunction new file mode 100644 index 0000000..ae08db9 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/gen_end_ship_south_helper.mcfunction @@ -0,0 +1,5 @@ +fill ~ ~ ~ ~ ~-29 ~ minecraft:air replace minecraft:redstone_block +setblock ~ ~ ~ minecraft:air +fill ~-30 ~-25 ~0 ~30 ~-24 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/place_endship_loot_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Chest"} +fill ~-30 ~-25 ~0 ~30 ~-24 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/place_elytra_north_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Elytra"} +fill ~-30 ~-29 ~0 ~30 ~-18 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/summon_shulker_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Sentry"} diff --git a/data/bktsb/functions/structgen/helpers/gen_end_ship_west_helper.mcfunction b/data/bktsb/functions/structgen/helpers/gen_end_ship_west_helper.mcfunction new file mode 100644 index 0000000..a9fdfaf --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/gen_end_ship_west_helper.mcfunction @@ -0,0 +1,5 @@ +fill ~ ~ ~ ~ ~-29 ~ minecraft:air replace minecraft:redstone_block +setblock ~ ~ ~ minecraft:air +fill ~0 ~-25 ~-30 ~30 ~-24 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/place_endship_loot_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Chest"} +fill ~0 ~-25 ~-30 ~30 ~-24 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/place_elytra_east_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Elytra"} +fill ~0 ~-29 ~-30 ~30 ~-18 ~30 minecraft:command_block{auto:1,Command:"function bktsb:structgen/helpers/summon_shulker_and_vanish",TrackOutput:0} replace minecraft:structure_block{metadata:"Sentry"} diff --git a/data/bktsb/functions/structgen/helpers/gen_generic_helper.mcfunction b/data/bktsb/functions/structgen/helpers/gen_generic_helper.mcfunction new file mode 100644 index 0000000..931d0a5 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/gen_generic_helper.mcfunction @@ -0,0 +1,2 @@ +fill ~ ~ ~ ~ ~-12 ~ minecraft:air replace minecraft:redstone_block +setblock ~ ~ ~ minecraft:air diff --git a/data/bktsb/functions/structgen/helpers/place_bastion_common_loot_and_vanish.mcfunction b/data/bktsb/functions/structgen/helpers/place_bastion_common_loot_and_vanish.mcfunction new file mode 100644 index 0000000..2e3c599 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/place_bastion_common_loot_and_vanish.mcfunction @@ -0,0 +1,2 @@ +data modify block ~ ~-1 ~ LootTable set value "minecraft:chests/bastion_other" +setblock ~ ~ ~ minecraft:air diff --git a/data/bktsb/functions/structgen/helpers/place_bastion_treasure_loot_and_vanish.mcfunction b/data/bktsb/functions/structgen/helpers/place_bastion_treasure_loot_and_vanish.mcfunction new file mode 100644 index 0000000..eebe605 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/place_bastion_treasure_loot_and_vanish.mcfunction @@ -0,0 +1,2 @@ +data modify block ~ ~-1 ~ LootTable set value "minecraft:chests/bastion_treasure" +setblock ~ ~ ~ minecraft:air diff --git a/data/bktsb/functions/structgen/helpers/place_elytra_east_and_vanish.mcfunction b/data/bktsb/functions/structgen/helpers/place_elytra_east_and_vanish.mcfunction new file mode 100644 index 0000000..f990cd5 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/place_elytra_east_and_vanish.mcfunction @@ -0,0 +1,2 @@ +summon minecraft:item_frame ~ ~ ~ {Facing:5,Item:{id:"minecraft:elytra",Count:1}} +setblock ~ ~ ~ minecraft:air diff --git a/data/bktsb/functions/structgen/helpers/place_elytra_north_and_vanish.mcfunction b/data/bktsb/functions/structgen/helpers/place_elytra_north_and_vanish.mcfunction new file mode 100644 index 0000000..1562eff --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/place_elytra_north_and_vanish.mcfunction @@ -0,0 +1,2 @@ +summon minecraft:item_frame ~ ~ ~ {Facing:2,Item:{id:"minecraft:elytra",Count:1}} +setblock ~ ~ ~ minecraft:air diff --git a/data/bktsb/functions/structgen/helpers/place_elytra_south_and_vanish.mcfunction b/data/bktsb/functions/structgen/helpers/place_elytra_south_and_vanish.mcfunction new file mode 100644 index 0000000..0f67b21 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/place_elytra_south_and_vanish.mcfunction @@ -0,0 +1,2 @@ +summon minecraft:item_frame ~ ~ ~ {Facing:3,Item:{id:"minecraft:elytra",Count:1}} +setblock ~ ~ ~ minecraft:air diff --git a/data/bktsb/functions/structgen/helpers/place_elytra_west_and_vanish.mcfunction b/data/bktsb/functions/structgen/helpers/place_elytra_west_and_vanish.mcfunction new file mode 100644 index 0000000..a691b3a --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/place_elytra_west_and_vanish.mcfunction @@ -0,0 +1,2 @@ +summon minecraft:item_frame ~ ~ ~ {Facing:4,Item:{id:"minecraft:elytra",Count:1}} +setblock ~ ~ ~ minecraft:air diff --git a/data/bktsb/functions/structgen/helpers/place_endship_loot_and_vanish.mcfunction b/data/bktsb/functions/structgen/helpers/place_endship_loot_and_vanish.mcfunction new file mode 100644 index 0000000..f04df2d --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/place_endship_loot_and_vanish.mcfunction @@ -0,0 +1,2 @@ +data modify block ~ ~-1 ~ LootTable set value "minecraft:chests/end_city_treasure" +setblock ~ ~ ~ minecraft:air diff --git a/data/bktsb/functions/structgen/helpers/summon_shulker_and_vanish.mcfunction b/data/bktsb/functions/structgen/helpers/summon_shulker_and_vanish.mcfunction new file mode 100644 index 0000000..e2384d9 --- /dev/null +++ b/data/bktsb/functions/structgen/helpers/summon_shulker_and_vanish.mcfunction @@ -0,0 +1,2 @@ +summon minecraft:shulker ~ ~ ~ {Color:16} +setblock ~ ~ ~ minecraft:air diff --git a/data/bktsb/functions/summontrader.mcfunction b/data/bktsb/functions/summontrader.mcfunction new file mode 100644 index 0000000..f3d3cc6 --- /dev/null +++ b/data/bktsb/functions/summontrader.mcfunction @@ -0,0 +1,6 @@ +summon wandering_trader ~ ~ ~ +data modify entity @e[type=minecraft:wandering_trader,limit=1,sort=nearest] DespawnDelay set value 48000 +summon trader_llama ~ ~ ~ +summon trader_llama ~ ~ ~ +execute as @e[type=minecraft:trader_llama,limit=2,sort=nearest] run data modify entity @s DespawnDelay set value 48000 +execute as @e[type=minecraft:trader_llama,limit=2,sort=nearest] run data modify entity @s Leash.UUID set from entity @e[type=minecraft:wandering_trader,limit=1] UUID diff --git a/data/bktsb/functions/tradecycle.mcfunction b/data/bktsb/functions/tradecycle.mcfunction new file mode 100644 index 0000000..87c5777 --- /dev/null +++ b/data/bktsb/functions/tradecycle.mcfunction @@ -0,0 +1,7 @@ +execute as @e[type=minecraft:trader_llama,distance=..8,limit=2,sort=nearest] run data modify entity @s Leash set value {} +summon minecraft:wandering_trader ~ ~ ~ +data modify entity @s Silent set value 1 +kill @s +# original @s no longer valid +execute as @e[type=minecraft:wandering_trader,limit=1,sort=nearest] at @s run data modify entity @s DespawnDelay set from entity @e[type=minecraft:trader_llama,distance=..8,limit=1,sort=nearest] DespawnDelay +execute as @e[type=minecraft:trader_llama,distance=..8,limit=2,sort=nearest] run data modify entity @s Leash.UUID set from entity @e[type=minecraft:wandering_trader,limit=1,sort=nearest] UUID diff --git a/data/bktsb/functions/tradertrades.mcfunction b/data/bktsb/functions/tradertrades.mcfunction new file mode 100644 index 0000000..a4b4132 --- /dev/null +++ b/data/bktsb/functions/tradertrades.mcfunction @@ -0,0 +1,55 @@ +##################################### RANDOM STUFF ##################################### +scoreboard players set #a lim 6 +function bktsb:rng + +execute if score #a randr matches 0 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:16,buy:{id:"minecraft:emerald",Count:3},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:cocoa_beans",Count:1}} + +execute if score #a randr matches 1 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:16,buy:{id:"minecraft:emerald",Count:9},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:cobweb",Count:16}} + +execute if score #a randr matches 2 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:16,buy:{id:"minecraft:emerald",Count:5},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:sweet_berries",Count:1}} + +execute if score #a randr matches 3 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:16,buy:{id:"minecraft:emerald_block",Count:3},buyB:{id:"minecraft:netherrack",Count:1},sell:{id:"minecraft:crimson_nylium",Count:1}} + +execute if score #a randr matches 4 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:16,buy:{id:"minecraft:emerald_block",Count:3},buyB:{id:"minecraft:netherrack",Count:1},sell:{id:"minecraft:warped_nylium",Count:1}} + +execute if score #a randr matches 5 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:16,buy:{id:"minecraft:emerald",Count:5},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:glow_lichen",Count:1}} +##################################### DOUBLE FLOWERS ##################################### +scoreboard players set #a lim 5 +function bktsb:rng + +execute if score #a randr matches 0 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:8,buy:{id:"minecraft:emerald",Count:3},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:sunflower",Count:1}} + +execute if score #a randr matches 1 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:8,buy:{id:"minecraft:emerald",Count:3},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:lilac",Count:1}} + +execute if score #a randr matches 2 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:8,buy:{id:"minecraft:emerald",Count:3},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:rose_bush",Count:1}} + +execute if score #a randr matches 3 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:8,buy:{id:"minecraft:emerald",Count:3},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:peony",Count:1}} + +execute if score #a randr matches 4 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:8,buy:{id:"minecraft:stone",Count:64},buyB:{id:"minecraft:charcoal",Count:9},sell:{id:"minecraft:lava_bucket",Count:1}} + +##################################### VALUABLE STUFF ##################################### + +scoreboard players set #a lim 6 +function bktsb:rng + +execute if score #a randr matches 0 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:1,buy:{id:"minecraft:emerald",Count:30},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:knowledge_book",Count:1,tag:{Recipes:["bktsb:dummy_amethyst"],display:{Name:"{\"text\":\"Geode in a Book\",\"color\":\"#FF00FF\"}"},Enchantments:[{}]}}} + +execute if score #a randr matches 1 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:1,buy:{id:"minecraft:ender_chest",Count:30},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:knowledge_book",Count:1,tag:{Recipes:["bktsb:dummy1"],display:{Name:"{\"text\":\"End City Ship in a Book\",\"color\":\"#FF00FF\"}"},Enchantments:[{}]}}} + +execute if score #a randr matches 2 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:1,buy:{id:"minecraft:netherite_ingot",Count:30},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:knowledge_book",Count:1,tag:{Recipes:["bktsb:dummy2"],display:{Name:"{\"text\":\"Bastion in a Book\",\"color\":\"#FF00FF\"}"},Enchantments:[{}]}}} + +execute if score #a randr matches 3 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:1,buy:{id:"minecraft:obsidian",Count:30},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:knowledge_book",Count:1,tag:{Recipes:["bktsb:dummy3"],display:{Name:"{\"text\":\"Fortress in a Book\",\"color\":\"#FF00FF\"}"},Enchantments:[{}]}}} + +execute if score #a randr matches 4 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:1,buy:{id:"minecraft:diamond",Count:30},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:knowledge_book",Count:1,tag:{Recipes:["bktsb:dummy4"],display:{Name:"{\"text\":\"Buried Treasure in a Book\",\"color\":\"#FF00FF\"}"},Enchantments:[{}]}}} + +execute if score #a randr matches 5 run data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:1,buy:{id:"minecraft:golden_apple",Count:30},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:knowledge_book",Count:1,tag:{Recipes:["bktsb:dummy_dungeon"],display:{Name:"{\"text\":\"Dungeon in a Book\",\"color\":\"#FF00FF\"}"},Enchantments:[{}]}}} + +##################################### TRADE CYCLING ##################################### + +data modify entity @e[type=minecraft:wandering_trader,tag=!trade_added,limit=1] Offers.Recipes append value {maxUses:1,buy:{id:"minecraft:emerald_block",Count:30},buyB:{id:"minecraft:air",Count:1},sell:{id:"minecraft:written_book",Count:1,tag:{author:"wandering trader",title:"my wills",display:{Name:"{\"text\":\"Cycle Trades\",\"color\":\"#FF0000\"}"},pages:[],Enchantments:[{}]}}} + +execute as @e[type=minecraft:wandering_trader,tag=!trade_added] run tellraw @a ["",{"text":"A wild wandering trader appeared at ","color":"green"},{"nbt":"Pos","entity":"@s"},{"text":" !","color":"green"}] +execute as @e[type=minecraft:wandering_trader,tag=!trade_added] run playsound minecraft:entity.player.levelup neutral @a ~ ~ ~ 1000000 +tag @e[type=minecraft:wandering_trader,tag=!trade_added] add trade_added + +execute as @e[type=minecraft:wandering_trader,limit=1,nbt={Offers:{Recipes:[{sell:{id:"minecraft:written_book",Count:1b,tag:{author:"wandering trader",title:"my wills",display:{Name:"{\"text\":\"Cycle Trades\",\"color\":\"#FF0000\"}"},pages:[],Enchantments:[{}]}},uses:1}]}}] at @s run function bktsb:tradecycle diff --git a/data/bktsb/predicates/dummy1.json b/data/bktsb/predicates/dummy1.json new file mode 100644 index 0000000..be61896 --- /dev/null +++ b/data/bktsb/predicates/dummy1.json @@ -0,0 +1,7 @@ +{ + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "player": {"recipes": {"bktsb:dummy1": true} } + } +} diff --git a/data/bktsb/predicates/dummy2.json b/data/bktsb/predicates/dummy2.json new file mode 100644 index 0000000..531dcaf --- /dev/null +++ b/data/bktsb/predicates/dummy2.json @@ -0,0 +1,7 @@ +{ + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "player": {"recipes": {"bktsb:dummy2": true} } + } +} diff --git a/data/bktsb/predicates/dummy3.json b/data/bktsb/predicates/dummy3.json new file mode 100644 index 0000000..73fd40e --- /dev/null +++ b/data/bktsb/predicates/dummy3.json @@ -0,0 +1,7 @@ +{ + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "player": {"recipes": {"bktsb:dummy3": true} } + } +} diff --git a/data/bktsb/predicates/dummy4.json b/data/bktsb/predicates/dummy4.json new file mode 100644 index 0000000..a3638e5 --- /dev/null +++ b/data/bktsb/predicates/dummy4.json @@ -0,0 +1,7 @@ +{ + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "player": {"recipes": {"bktsb:dummy4": true} } + } +} diff --git a/data/bktsb/predicates/dummy_amethyst.json b/data/bktsb/predicates/dummy_amethyst.json new file mode 100644 index 0000000..d69fb5d --- /dev/null +++ b/data/bktsb/predicates/dummy_amethyst.json @@ -0,0 +1,7 @@ +{ + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "player": {"recipes": {"bktsb:dummy_amethyst": true} } + } +} diff --git a/data/bktsb/predicates/dummy_dungeon.json b/data/bktsb/predicates/dummy_dungeon.json new file mode 100644 index 0000000..368d763 --- /dev/null +++ b/data/bktsb/predicates/dummy_dungeon.json @@ -0,0 +1,7 @@ +{ + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "player": {"recipes": {"bktsb:dummy_dungeon": true} } + } +} diff --git a/data/bktsb/recipes/braincoralblock.json b/data/bktsb/recipes/braincoralblock.json new file mode 100644 index 0000000..057ded7 --- /dev/null +++ b/data/bktsb/recipes/braincoralblock.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:brain_coral" + } + }, + "result": { + "item": "minecraft:brain_coral_block" + } +} diff --git a/data/bktsb/recipes/bubblecoralblock.json b/data/bktsb/recipes/bubblecoralblock.json new file mode 100644 index 0000000..4185bda --- /dev/null +++ b/data/bktsb/recipes/bubblecoralblock.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:bubble_coral" + } + }, + "result": { + "item": "minecraft:bubble_coral_block" + } +} diff --git a/data/bktsb/recipes/coalore.json b/data/bktsb/recipes/coalore.json new file mode 100644 index 0000000..73433c9 --- /dev/null +++ b/data/bktsb/recipes/coalore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:coal_block" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + } + ], + "result": { + "item": "minecraft:coal_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/copperore.json b/data/bktsb/recipes/copperore.json new file mode 100644 index 0000000..380bbfe --- /dev/null +++ b/data/bktsb/recipes/copperore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:copper_block" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + } + ], + "result": { + "item": "minecraft:copper_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/deepslatecoalore.json b/data/bktsb/recipes/deepslatecoalore.json new file mode 100644 index 0000000..f5f46a7 --- /dev/null +++ b/data/bktsb/recipes/deepslatecoalore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:coal_block" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + } + ], + "result": { + "item": "minecraft:deepslate_coal_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/deepslatecopperore.json b/data/bktsb/recipes/deepslatecopperore.json new file mode 100644 index 0000000..08e6999 --- /dev/null +++ b/data/bktsb/recipes/deepslatecopperore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:copper_block" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + } + ], + "result": { + "item": "minecraft:deepslate_copper_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/deepslatediamondore.json b/data/bktsb/recipes/deepslatediamondore.json new file mode 100644 index 0000000..fcf405e --- /dev/null +++ b/data/bktsb/recipes/deepslatediamondore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:diamond_block" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + } + ], + "result": { + "item": "minecraft:deepslate_diamond_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/deepslateemeraldore.json b/data/bktsb/recipes/deepslateemeraldore.json new file mode 100644 index 0000000..0c6ec1c --- /dev/null +++ b/data/bktsb/recipes/deepslateemeraldore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:emerald_block" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + } + ], + "result": { + "item": "minecraft:deepslate_emerald_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/deepslategoldore.json b/data/bktsb/recipes/deepslategoldore.json new file mode 100644 index 0000000..08fbe6d --- /dev/null +++ b/data/bktsb/recipes/deepslategoldore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:gold_block" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + } + ], + "result": { + "item": "minecraft:deepslate_gold_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/deepslateironore.json b/data/bktsb/recipes/deepslateironore.json new file mode 100644 index 0000000..246f391 --- /dev/null +++ b/data/bktsb/recipes/deepslateironore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:iron_block" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + } + ], + "result": { + "item": "minecraft:deepslate_iron_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/deepslatelapisore.json b/data/bktsb/recipes/deepslatelapisore.json new file mode 100644 index 0000000..82d02c3 --- /dev/null +++ b/data/bktsb/recipes/deepslatelapisore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:lapis_block" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + } + ], + "result": { + "item": "minecraft:deepslate_lapis_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/deepslateredstore.json b/data/bktsb/recipes/deepslateredstore.json new file mode 100644 index 0000000..2f4a75a --- /dev/null +++ b/data/bktsb/recipes/deepslateredstore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:redstone_block" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + }, + { + "item": "minecraft:deepslate" + } + ], + "result": { + "item": "minecraft:deepslate_redstone_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/diamondore.json b/data/bktsb/recipes/diamondore.json new file mode 100644 index 0000000..ead29be --- /dev/null +++ b/data/bktsb/recipes/diamondore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:diamond_block" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + } + ], + "result": { + "item": "minecraft:diamond_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/dummy1.json b/data/bktsb/recipes/dummy1.json new file mode 100644 index 0000000..cdd69ff --- /dev/null +++ b/data/bktsb/recipes/dummy1.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "dd" + ], + "key": { + "d": { + "item": "minecraft:debug_stick" + } + }, + "result": { + "item": "minecraft:debug_stick", + "count": 1 + }, + "group": "dummy" +} diff --git a/data/bktsb/recipes/dummy2.json b/data/bktsb/recipes/dummy2.json new file mode 100644 index 0000000..17bd38f --- /dev/null +++ b/data/bktsb/recipes/dummy2.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ddd" + ], + "key": { + "d": { + "item": "minecraft:debug_stick" + } + }, + "result": { + "item": "minecraft:debug_stick", + "count": 1 + }, + "group": "dummy" +} diff --git a/data/bktsb/recipes/dummy3.json b/data/bktsb/recipes/dummy3.json new file mode 100644 index 0000000..636541b --- /dev/null +++ b/data/bktsb/recipes/dummy3.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ddd", + " d " + ], + "key": { + "d": { + "item": "minecraft:debug_stick" + } + }, + "result": { + "item": "minecraft:debug_stick", + "count": 1 + }, + "group": "dummy" +} diff --git a/data/bktsb/recipes/dummy4.json b/data/bktsb/recipes/dummy4.json new file mode 100644 index 0000000..cbee78a --- /dev/null +++ b/data/bktsb/recipes/dummy4.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ddd", + "dd " + ], + "key": { + "d": { + "item": "minecraft:debug_stick" + } + }, + "result": { + "item": "minecraft:debug_stick", + "count": 1 + }, + "group": "dummy" +} diff --git a/data/bktsb/recipes/dummy_amethyst.json b/data/bktsb/recipes/dummy_amethyst.json new file mode 100644 index 0000000..1d56a7d --- /dev/null +++ b/data/bktsb/recipes/dummy_amethyst.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ddd", + "ddd" + ], + "key": { + "d": { + "item": "minecraft:debug_stick" + } + }, + "result": { + "item": "minecraft:debug_stick", + "count": 1 + }, + "group": "dummy" +} diff --git a/data/bktsb/recipes/dummy_dungeon.json b/data/bktsb/recipes/dummy_dungeon.json new file mode 100644 index 0000000..ace3944 --- /dev/null +++ b/data/bktsb/recipes/dummy_dungeon.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ddd", + "ddd", + "d " + ], + "key": { + "d": { + "item": "minecraft:debug_stick" + } + }, + "result": { + "item": "minecraft:debug_stick", + "count": 1 + }, + "group": "dummy" +} diff --git a/data/bktsb/recipes/egapple.json b/data/bktsb/recipes/egapple.json new file mode 100644 index 0000000..3412f1d --- /dev/null +++ b/data/bktsb/recipes/egapple.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#X#", + "###" + ], + "key": { + "#": { + "item": "minecraft:gold_block" + }, + "X": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "minecraft:enchanted_golden_apple" + } +} diff --git a/data/bktsb/recipes/emeraldore.json b/data/bktsb/recipes/emeraldore.json new file mode 100644 index 0000000..62dc6c1 --- /dev/null +++ b/data/bktsb/recipes/emeraldore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:emerald_block" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + } + ], + "result": { + "item": "minecraft:emerald_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/endstone.json b/data/bktsb/recipes/endstone.json new file mode 100644 index 0000000..1fa2804 --- /dev/null +++ b/data/bktsb/recipes/endstone.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "eXe", + "###" + ], + "key": { + "#": { + "item": "minecraft:cobblestone" + }, + "X": { + "item": "minecraft:ender_pearl" + }, + "e": { + "item": "minecraft:egg" + } + }, + "result": { + "item": "minecraft:end_stone", + "count": 6 + } +} diff --git a/data/bktsb/recipes/firecoralblock.json b/data/bktsb/recipes/firecoralblock.json new file mode 100644 index 0000000..63768a8 --- /dev/null +++ b/data/bktsb/recipes/firecoralblock.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:fire_coral" + } + }, + "result": { + "item": "minecraft:fire_coral_block" + } +} diff --git a/data/bktsb/recipes/gildedblackst.json b/data/bktsb/recipes/gildedblackst.json new file mode 100644 index 0000000..c25e60f --- /dev/null +++ b/data/bktsb/recipes/gildedblackst.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#X#", + "###" + ], + "key": { + "#": { + "item": "minecraft:blackstone" + }, + "X": { + "item": "minecraft:gold_ingot" + } + }, + "result": { + "item": "minecraft:gilded_blackstone", + "count": 6 + } +} diff --git a/data/bktsb/recipes/goldore.json b/data/bktsb/recipes/goldore.json new file mode 100644 index 0000000..65de1c6 --- /dev/null +++ b/data/bktsb/recipes/goldore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:gold_block" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + } + ], + "result": { + "item": "minecraft:gold_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/horncoralblock.json b/data/bktsb/recipes/horncoralblock.json new file mode 100644 index 0000000..28f8a55 --- /dev/null +++ b/data/bktsb/recipes/horncoralblock.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:horn_coral" + } + }, + "result": { + "item": "minecraft:horn_coral_block" + } +} diff --git a/data/bktsb/recipes/ironore.json b/data/bktsb/recipes/ironore.json new file mode 100644 index 0000000..6531c28 --- /dev/null +++ b/data/bktsb/recipes/ironore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:iron_block" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + } + ], + "result": { + "item": "minecraft:iron_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/lapisore.json b/data/bktsb/recipes/lapisore.json new file mode 100644 index 0000000..bb6b775 --- /dev/null +++ b/data/bktsb/recipes/lapisore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:lapis_block" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + } + ], + "result": { + "item": "minecraft:lapis_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/nethergoldore.json b/data/bktsb/recipes/nethergoldore.json new file mode 100644 index 0000000..523f908 --- /dev/null +++ b/data/bktsb/recipes/nethergoldore.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#X#", + "###" + ], + "key": { + "#": { + "item": "minecraft:netherrack" + }, + "X": { + "item": "minecraft:gold_block" + } + }, + "result": { + "item": "minecraft:nether_gold_ore", + "count": 8 + } +} diff --git a/data/bktsb/recipes/quartzore.json b/data/bktsb/recipes/quartzore.json new file mode 100644 index 0000000..5019210 --- /dev/null +++ b/data/bktsb/recipes/quartzore.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:quartz_block" + }, + { + "item": "minecraft:netherrack" + }, + { + "item": "minecraft:netherrack" + } + ], + "result": { + "item": "minecraft:nether_quartz_ore", + "count": 2 + } +} diff --git a/data/bktsb/recipes/redsand.json b/data/bktsb/recipes/redsand.json new file mode 100644 index 0000000..3394856 --- /dev/null +++ b/data/bktsb/recipes/redsand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#X#", + "###" + ], + "key": { + "#": { + "item": "minecraft:sand" + }, + "X": { + "item": "minecraft:rotten_flesh" + } + }, + "result": { + "item": "minecraft:red_sand", + "count": 8 + } +} diff --git a/data/bktsb/recipes/redstore.json b/data/bktsb/recipes/redstore.json new file mode 100644 index 0000000..7bf5b9d --- /dev/null +++ b/data/bktsb/recipes/redstore.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:redstone_block" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + } + ], + "result": { + "item": "minecraft:redstone_ore", + "count": 3 + } +} diff --git a/data/bktsb/recipes/soulsoil.json b/data/bktsb/recipes/soulsoil.json new file mode 100644 index 0000000..ebf05e9 --- /dev/null +++ b/data/bktsb/recipes/soulsoil.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "sd", + "ds" + ], + "key": { + "d": { + "item": "minecraft:dirt" + }, + "s": { + "item": "minecraft:soul_sand" + } + }, + "result": { + "item": "minecraft:soul_soil", + "count": 4 + } +} diff --git a/data/bktsb/recipes/tubecoralblock.json b/data/bktsb/recipes/tubecoralblock.json new file mode 100644 index 0000000..d41d1cb --- /dev/null +++ b/data/bktsb/recipes/tubecoralblock.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:tube_coral" + } + }, + "result": { + "item": "minecraft:tube_coral_block" + } +} diff --git a/data/bktsb/structures/dungeon_base.nbt b/data/bktsb/structures/dungeon_base.nbt new file mode 100644 index 0000000..cb0a3d8 Binary files /dev/null and b/data/bktsb/structures/dungeon_base.nbt differ diff --git a/data/bktsb/structures/island.nbt b/data/bktsb/structures/island.nbt new file mode 100644 index 0000000..e893d2a Binary files /dev/null and b/data/bktsb/structures/island.nbt differ diff --git a/data/bktsb/structures/nether/bastion1.nbt b/data/bktsb/structures/nether/bastion1.nbt new file mode 100644 index 0000000..ada71db Binary files /dev/null and b/data/bktsb/structures/nether/bastion1.nbt differ diff --git a/data/bktsb/structures/nether/bastion2.nbt b/data/bktsb/structures/nether/bastion2.nbt new file mode 100644 index 0000000..6a5f470 Binary files /dev/null and b/data/bktsb/structures/nether/bastion2.nbt differ diff --git a/data/bktsb/structures/nether/bastion3.nbt b/data/bktsb/structures/nether/bastion3.nbt new file mode 100644 index 0000000..be42e2f Binary files /dev/null and b/data/bktsb/structures/nether/bastion3.nbt differ diff --git a/data/bktsb/structures/nether/bastion4.nbt b/data/bktsb/structures/nether/bastion4.nbt new file mode 100644 index 0000000..a09dd6a Binary files /dev/null and b/data/bktsb/structures/nether/bastion4.nbt differ diff --git a/data/bktsb/structures/nether/fortress.nbt b/data/bktsb/structures/nether/fortress.nbt new file mode 100644 index 0000000..688e8c8 Binary files /dev/null and b/data/bktsb/structures/nether/fortress.nbt differ diff --git a/data/minecraft/dimension_type/overworld.json b/data/minecraft/dimension_type/overworld.json new file mode 100644 index 0000000..9b21a4a --- /dev/null +++ b/data/minecraft/dimension_type/overworld.json @@ -0,0 +1,17 @@ +{ + "logical_height": 384, + "infiniburn": "minecraft:infiniburn_overworld", + "effects": "minecraft:overworld", + "ambient_light": 0.0, + "respawn_anchor_works": false, + "has_raids": true, + "min_y": -64, + "height": 384, + "natural": true, + "coordinate_scale": 1.0, + "piglin_safe": false, + "bed_works": true, + "has_skylight": true, + "has_ceiling": false, + "ultrawarm": false +} \ No newline at end of file diff --git a/data/minecraft/dimension_type/overworld_caves.json b/data/minecraft/dimension_type/overworld_caves.json new file mode 100644 index 0000000..f4ea040 --- /dev/null +++ b/data/minecraft/dimension_type/overworld_caves.json @@ -0,0 +1,17 @@ +{ + "logical_height": 384, + "infiniburn": "minecraft:infiniburn_overworld", + "effects": "minecraft:overworld", + "ambient_light": 0.0, + "respawn_anchor_works": false, + "has_raids": true, + "min_y": -64, + "height": 384, + "natural": true, + "coordinate_scale": 1.0, + "piglin_safe": false, + "bed_works": true, + "has_skylight": true, + "has_ceiling": true, + "ultrawarm": false +} \ No newline at end of file diff --git a/data/minecraft/loot_tables/chests/end_city_treasure.json b/data/minecraft/loot_tables/chests/end_city_treasure.json new file mode 100644 index 0000000..172fdfe --- /dev/null +++ b/data/minecraft/loot_tables/chests/end_city_treasure.json @@ -0,0 +1,345 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "min": 2.0, + "max": 6.0, + "type": "minecraft:uniform" + }, + "entries": [ + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "minecraft:diamond" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 4.0, + "max": 8.0, + "type": "minecraft:uniform" + } + } + ], + "name": "minecraft:iron_ingot" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "minecraft:gold_ingot" + }, + { + "type": "minecraft:item", + "weight": 7, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 4.0, + "type": "minecraft:uniform" + } + } + ], + "name": "minecraft:chorus_flower" + }, + { + "type": "minecraft:item", + "weight": 2, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2.0, + "max": 6.0, + "type": "minecraft:uniform" + } + } + ], + "name": "minecraft:emerald" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 10.0, + "type": "minecraft:uniform" + } + } + ], + "name": "minecraft:beetroot_seeds" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:saddle" + }, + { + "type": "minecraft:item", + "name": "minecraft:iron_horse_armor" + }, + { + "type": "minecraft:item", + "name": "minecraft:golden_horse_armor" + }, + { + "type": "minecraft:item", + "name": "minecraft:diamond_horse_armor" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:diamond_sword" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:diamond_boots" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:diamond_chestplate" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:diamond_leggings" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:diamond_helmet" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:diamond_pickaxe" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:diamond_shovel" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:iron_sword" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:iron_boots" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:iron_chestplate" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:iron_leggings" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:iron_helmet" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:iron_pickaxe" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 20.0, + "max": 39.0, + "type": "minecraft:uniform" + }, + "treasure": true + } + ], + "name": "minecraft:iron_shovel" + } + ] + } + ] +} diff --git a/data/minecraft/loot_tables/entities/blaze.json b/data/minecraft/loot_tables/entities/blaze.json new file mode 100644 index 0000000..c9897f2 --- /dev/null +++ b/data/minecraft/loot_tables/entities/blaze.json @@ -0,0 +1,67 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:blaze_rod" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:nether_wart" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + } + ] +} diff --git a/data/minecraft/loot_tables/entities/creeper.json b/data/minecraft/loot_tables/entities/creeper.json new file mode 100644 index 0000000..7f13fbd --- /dev/null +++ b/data/minecraft/loot_tables/entities/creeper.json @@ -0,0 +1,81 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:gunpowder" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:gravel" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + }, + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:tag", + "name": "minecraft:creeper_drop_music_discs", + "expand": true + } + ], + "conditions": [ + { + "condition": "minecraft:entity_properties", + "predicate": { + "type": "#minecraft:skeletons" + }, + "entity": "killer" + } + ] + } + ] +} diff --git a/data/minecraft/loot_tables/entities/evoker.json b/data/minecraft/loot_tables/entities/evoker.json new file mode 100644 index 0000000..dc31f05 --- /dev/null +++ b/data/minecraft/loot_tables/entities/evoker.json @@ -0,0 +1,45 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:totem_of_undying" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:diamond" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + } + ] +} diff --git a/data/minecraft/loot_tables/entities/husk.json b/data/minecraft/loot_tables/entities/husk.json new file mode 100644 index 0000000..bb6d7e8 --- /dev/null +++ b/data/minecraft/loot_tables/entities/husk.json @@ -0,0 +1,54 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:sand" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:iron_ingot" + }, + { + "type": "minecraft:item", + "name": "minecraft:dead_bush" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + }, + { + "condition": "minecraft:random_chance_with_looting", + "chance": 0.025, + "looting_multiplier": 0.01 + } + ] + } + ] +} diff --git a/data/minecraft/loot_tables/entities/magma_cube.json b/data/minecraft/loot_tables/entities/magma_cube.json new file mode 100644 index 0000000..7429c83 --- /dev/null +++ b/data/minecraft/loot_tables/entities/magma_cube.json @@ -0,0 +1,50 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": -2.0, + "max": 1.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:magma_cream" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:ancient_debris" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + }, + { + "condition": "minecraft:random_chance_with_looting", + "chance": 0.015, + "looting_multiplier": 0.01 + } + ] + } + ] +} diff --git a/data/minecraft/loot_tables/entities/shulker.json b/data/minecraft/loot_tables/entities/shulker.json new file mode 100644 index 0000000..767a395 --- /dev/null +++ b/data/minecraft/loot_tables/entities/shulker.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:shulker_shell" + } + ] + } + ] +} diff --git a/data/minecraft/loot_tables/entities/witch.json b/data/minecraft/loot_tables/entities/witch.json new file mode 100644 index 0000000..30f206b --- /dev/null +++ b/data/minecraft/loot_tables/entities/witch.json @@ -0,0 +1,183 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": { + "min": 1.0, + "max": 3.0, + "type": "minecraft:uniform" + }, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:glowstone_dust" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:sugar" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:redstone" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:spider_eye" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:glass_bottle" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:gunpowder" + }, + { + "type": "minecraft:item", + "weight": 2, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:brown_mushroom" + } + ] + } + ] +} diff --git a/data/minecraft/loot_tables/entities/zombie.json b/data/minecraft/loot_tables/entities/zombie.json new file mode 100644 index 0000000..0dcb8ec --- /dev/null +++ b/data/minecraft/loot_tables/entities/zombie.json @@ -0,0 +1,89 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:rotten_flesh" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:iron_ingot" + }, + { + "type": "minecraft:item", + "name": "minecraft:carrot" + }, + { + "type": "minecraft:item", + "name": "minecraft:potato" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + }, + { + "condition": "minecraft:random_chance_with_looting", + "chance": 0.025, + "looting_multiplier": 0.01 + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:clay_ball" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + } + ] +} diff --git a/data/minecraft/loot_tables/entities/zombified_piglin.json b/data/minecraft/loot_tables/entities/zombified_piglin.json new file mode 100644 index 0000000..4b37ef3 --- /dev/null +++ b/data/minecraft/loot_tables/entities/zombified_piglin.json @@ -0,0 +1,107 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:rotten_flesh" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:netherrack" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:gold_nugget" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + }, + { + "condition": "minecraft:random_chance_with_looting", + "chance": 0.025, + "looting_multiplier": 0.01 + } + ] + } + ] +} diff --git a/data/minecraft/tags/functions/load.json b/data/minecraft/tags/functions/load.json new file mode 100644 index 0000000..ce6186a --- /dev/null +++ b/data/minecraft/tags/functions/load.json @@ -0,0 +1,5 @@ +{ + "values": [ + "bktsb:init" + ] +} diff --git a/data/minecraft/tags/functions/tick.json b/data/minecraft/tags/functions/tick.json new file mode 100644 index 0000000..a2b774c --- /dev/null +++ b/data/minecraft/tags/functions/tick.json @@ -0,0 +1,7 @@ +{ + "values": [ + "bktsb:tradertrades", + "bktsb:booklistener", + "bktsb:structgen/helpers/amethyst/ray_tick" + ] +} diff --git a/features.txt b/features.txt new file mode 100644 index 0000000..59b1358 --- /dev/null +++ b/features.txt @@ -0,0 +1,66 @@ +* tweaked loot tables + + zombie -> clay ball (player kill) + magma cube -> ancient debris (player kill) + blaze -> netherwart (player kill) + husk -> dead bush (player kill) + husk -> sand (any kill) -x-> rotten flesh + creeper -> gravel (player kill) + zombiepig -> netherrack (player kill) + evoker -> diamond (player kill) + fishing -> horsearmor + witch -> brown mushroom + end city chest -> chorus flower + +* extra wandering trader trades + +3 extra trades are added to each wandering trader. + +randomly pick one of these (16 uses each): + 3 emerald -> cocoa beans + 1 emerald block -> 16 cobweb + 5 emerald -> sweetberries + 5 emerald -> glowlichen + netherrack + 3 emerald blocks -> nylium + +one of these (8 uses each): + 3 emerald -> sunflower + 3 emerald -> lilac + 3 emerald -> rosebush + 3 emerald -> peony + 64 stone + 1 charcoal -> lavabucket + +... and one of these (1 use each except first one): + ~~30 emeralds -> shulker spawn egg~~ + ~~30 shulker shells -> end city ship book~~ + 30 emeralds -> geodes book + 30 goldenapples -> dungeon book + 30 ender chests -> end city ship book + 30 diamonds -> buried treasure book + 30 netherrite ingots -> bastion book + 30 obsidian -> fortress book + +finally, the almighty... + 30 emerald blocks -> cycle wandering trader trades + +* extra crafting recipes + + Notch apple + redsand + ores (coal, diamond, emerald, lapis, redst, copper, quartz; gold, iron, nethergold) + endstone + gildedblackst + soul soil + calcite + deepslate + tuff + coralblock + +* structure books + for items/blocks only obtainable from generated structures + * end city ship (elytra) + * bastion treasure room (magma cube spawner, piglin banner, pigstep) + * netherfortress junction (blaze spawner) + * buried treasure (heart of the sea) + * amethyst geodes + * dungeons (mob spawner) diff --git a/items.txt b/items.txt new file mode 100644 index 0000000..c1a81ad --- /dev/null +++ b/items.txt @@ -0,0 +1,177 @@ +Legend + +category +i : infinite +ii: infinite after initial acquirement, slow initial acquirement +iu: infinite after initial acquirement, no initial acquirement +r : unreliable renewable in vanilla +u : non renewable in vanilla +c : crafted only + +method of obtaining ("uncrafting" methods omitted) +* : mechanics added by this pack +# : unavailable in vanilla skyblock +##: unavailable in vanilla skyblock before initial acquirement +$ : unreliable / slow + +beetroot seeds ii farming##, wt trades$, endcity loot*, other chest loot# +blaze rod i blaze +bone i skeleton & variants, chest loot#, fishing +clay ball r clay#, villager gift$, zombie* +coal i ore#, chest loot#, wither skeleton +char coal i wood +cocoa beans iu farming##, wt trades$* +diamond u ore#, ??? +dragon's breath i dragon +emerald i ore#, trading, chest loot#, vindicator, evoker +ender pearl i enderman, trading, bartering +feather i chicken, parrot, chest loot#, cat gift +flint i gravel#, trading, chest loot# +ghast tear i ghast +glowst dust i glowstone, witch +gunpowder i creeper, ghast, witch, wt trades$, chest loot# +heartofthesea u chest loot#, treasure in a book* +honeycomb i beehive +inksac i squid, fishing +lapis i ore#, villager gift$, trading, chest loot# +leather i cow &c, fishing, bartering, chest loot# +magamacream i magama cube, crafted +melon seeds ii melon slice##, wg#, chest loot#, wt trades +nautilus shell i fishing, drowned, wt trades +quartz i ore#, chest loot#, bartering +netherstar i wither +wart ii farming##, chest loot#, blazedrop* +netheritescrap u crafted, chest loot# +phantommemb i phantom +prismarineshrd i guardian +prismarinecrys i guardian, chest loot(*) +pumpkinseeds ii pumpkin##, wg#, chest loot#, wt trades +rabbithide i rabbit, cat gift +rabbitfoot i rabbit, cat gift +redstdust i ore#, wg#, witch, trading, villager gift, chest loot# +scute i turtle +shulkershell u shulker +slimeball i slime, panda sneeze +stick i crafted, leaves, fishing, witch, deadbush, chest loot# +string i spider, cave spider, strider, cat, fishing, cat gift, bartering, chest loot#, wg# +sugar i crafted, witch +wheat i farming, chest loot# +wheatseeds i farming, grass, chest loot#, wt trades$, wg# + +blaze powder c -> blaze rod +book c -> paper, leather; chest loot# +bowl c -> planks; fishing +brick c -> clayball; trading +netherbrick c -> netherrack; bartering +ecrystal c -> ghasttear, glass, eyeofender +eyeofender c -> blaze powder, epearl +fspidereye c -> bmushroom, sugar, spidereye +fireworkstar c -> - +gmelonslice c -> melonslice, goldngt +gold c -> ore#; drowned, zombiepig, goldngt, chest loot# +goldngt c -> gold, ore#; zombiepig, chest loot# +iron c -> ore#; iron golem, zombie, chest loot# +netherrite c -> netheritescrap, gold; +paper c -> reed; chest loot#, villager gift$ +popped cfruit c -> chorusfruit + +apple i leaves, trading, chest loot# +gapple c -> apple, gold; chest loot# +napple u chest loot#; crafting* +beetroot i farming +beetrootsoup c +bread c +carrot i farming +gcarrot c crafting, trading +chorus fruit iu farming +cookie c +dried kelp c +honeybottle c +melonslice i melonseeds +mushroom stew c +potato i farming +bakedpotato c +poisonouspot i farming +pufferfish i +pumpkinpie c +rabbitstew c +beef i +steak c +chicken i +cookedchicken c +cod i +cookedcod c +mutton i +cookedmutton c +porkchop i +cookedpork c +rabbit i +cookedrabbit c +salmon i +cookedsalmon c +rotflesh i +spidereye i +suspiciousstew c +sweetberries iu wg#, chest loot#, wt trades* +tropicalfish i + +dyes i + +tools c +axe +fishingrod +flint&steel +hoe +pick +shears +shovel +potion +shield +milkbucket + +info c +clock +compass +map +book&quill + +weapons c +arrow +sparrow +tiparrow +bow +xbow +egg i farming +snowball i snowlayer +sword +trident i drowned + +armor c +boots +chestplate +helmet +horsearmor u/c chest loot#, ?* +leggings + +boat c +elytra u wg#, endcityinabook* +minecart c + +armorstand c +bannerpattern u/c u: snout, thing +bonemeal i +bottleoenc i +bucket c +lava u bastioninabook*, trades*, dripping +totem i + +=======================1.17======================= +amthystshrd iu wg#, geodeinabook* +axolotl i +bundle - +coppering i drowned, smelting +glowberries i cavevines +glowinksac i +snowbucket i +raw* u ores +spyglass c diff --git a/mobs.txt b/mobs.txt new file mode 100644 index 0000000..1219b06 --- /dev/null +++ b/mobs.txt @@ -0,0 +1,73 @@ +i infinite +u non-infinite +n unobtainable in vanilla skyblock + +inf: +bat +cat +chicken +cod +cow +donkey +fox +horse +mooshroom +mule +ocelot +parrot +pig +puffer +rabbit +salmon +sheep +skeletonhorse +snowgolem +squid +strider +tropicalfish +turtle +villager (conversion) +wtrader +bee +dolphin +enderman +irongolem +llama +piglin +panda +polarbear +spider +wolf +zombiepig +blaze +creeper +drowned +endermite +evoker +ghast +guardian +hoglin +husk +magmacube +phantom +pillager +ravager +skeleton +slime +stray +vex +vindicator +witch +witherskele +zoglin +zombie +zombievillager +edragon +wither + +unobtainable in skyblock +cavespider +elderguardian +piglinbrute (bastioninabook*) +shulker (endshipinabook*), renewable after initial obtaining +silverfish (mod generation*) diff --git a/pack.mcmeta b/pack.mcmeta new file mode 100644 index 0000000..e48f174 --- /dev/null +++ b/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 7, + "description": "BearKidsTeam Skyblock 1.17" + } +} diff --git a/version.txt b/version.txt new file mode 100644 index 0000000..1623eee --- /dev/null +++ b/version.txt @@ -0,0 +1,2 @@ +revision 7 +2021-07-24 -- cgit v1.2.3