9 Commits
Author SHA1 Message Date
FulldroperandClaude Opus 5.5 14eaad8309 0.12.0: team-proposed mods — Central Kitchen, Create Connected, Stuff 'N Additions (+Sable compat), GeckoLib, Ars Nouveau, CreateBetterFps; Sodium Dynamic Lights removed (clashes with Ars Nouveau)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 11:03:59 +03:00
FulldroperandClaude Opus 5.5 d2d5f77990 0.11.0: remove DAP ur Homies and Player Animation Library; tutorial: energy scene works in Rhino
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 07:53:05 +03:00
FulldroperandClaude Opus 5.5 a8d0f7de24 0.10.0: Easy NPC removed (NPCs run on Custom NPCs); tutorial scene about officials
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 07:23:09 +03:00
FulldroperandClaude Opus 5.5 836428ddda 0.9.0: CustomNPCs-Unofficial
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 07:10:44 +03:00
FulldroperandClaude Opus 5.5 4a0e2884b6 Reindex after x+-autofish removal
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:54:56 +03:00
FulldroperandClaude Opus 5.5 71406c6df6 0.8.0: tutorial — miner and factory operator scenes, auctions, drills need a concession
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:54:54 +03:00
full_droper f5f8fcc367 Видалити mods/x+-autofish.pw.toml 2026-10-03 14:46:25 +01:00
FulldroperandClaude Opus 5.5 d1a9b9d1f6 0.7.0: tutorial — courier and road builder scenes, energy scene fixed (world is a property in KubeJS), credits.txt lowercase
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 07:15:28 +03:00
FulldroperandClaude Opus 5.5 42ee586e63 0.6.2: readable tutorial texts, clearer energy scene
- one short sentence per step like Create (no more paragraphs); literal _underscores_ removed —
  PonderJS shows them as is
- energy scene tells the substation story: state machines need power, meter at the input,
  your generator connects, coins every minute, no power — no pay

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 06:53:48 +03:00
21 changed files with 519 additions and 335 deletions
+1 -1
View File
@@ -73,7 +73,7 @@
#Blocks that cannot be picked up #Blocks that cannot be picked up
forbiddenTiles = ["#forge:immovable", "#forge:relocation_not_supported", "#neoforge:immovable", "#neoforge:relocation_not_supported", "minecraft:end_portal", "minecraft:piston_head", "#c:relocation_not_supported", "minecraft:end_gateway", "minecraft:tall_grass", "minecraft:large_fern", "minecraft:peony", "minecraft:rose_bush", "minecraft:lilac", "minecraft:sunflower", "minecraft:*_bed", "minecraft:*_door", "minecraft:big_dripleaf_stem", "minecraft:waterlily", "minecraft:cake", "minecraft:nether_portal", "minecraft:tall_seagrass", "animania:block_trough", "animania:block_invisiblock", "colossalchests:*", "ic2:*", "bigreactors:*", "forestry:*", "tconstruct:*", "rustic:*", "botania:*", "astralsorcery:*", "quark:colored_bed_*", "immersiveengineering:*", "embers:block_furnace", "embers:ember_bore", "embers:ember_activator", "embers:mixer", "embers:heat_coil", "embers:large_tank", "embers:crystal_cell", "embers:alchemy_pedestal", "embers:boiler", "embers:combustor", "embers:catalzyer", "embers:field_chart", "embers:inferno_forge", "storagedrawers:framingtable", "skyresources:*", "lootbags:*", "exsartagine:*", "aquamunda:tank", "opencomputers:*", "malisisdoors:*", "industrialforegoing:*", "minecolonies:*", "thaumcraft:pillar*", "thaumcraft:infernal_furnace", "thaumcraft:placeholder*", "thaumcraft:infusion_matrix", "thaumcraft:golem_builder", "thaumcraft:thaumatorium*", "magneticraft:oil_heater", "magneticraft:solar_panel", "magneticraft:steam_engine", "magneticraft:shelving_unit", "magneticraft:grinder", "magneticraft:sieve", "magneticraft:solar_tower", "magneticraft:solar_mirror", "magneticraft:container", "magneticraft:pumpjack", "magneticraft:solar_panel", "magneticraft:refinery", "magneticraft:oil_heater", "magneticraft:hydraulic_press", "magneticraft:multiblock_gap", "refinedstorage:*", "mcmultipart:*", "enderstorage:*", "betterstorage:*", "practicallogistics2:*", "wearablebackpacks:*", "rftools:screen", "rftools:creative_screen", "create:*", "magic_doorknob:*", "iceandfire:*", "ftbquests:*", "waystones:*", "contact:*", "framedblocks:*", "securitycraft:*", "forgemultipartcbe:*", "integrateddynamics:cable", "mekanismgenerators:wind_generator", "cookingforblockheads:cabinet", "cookingforblockheads:corner", "cookingforblockheads:counter", "cookingforblockheads:oven", "cookingforblockheads:toaster", "cookingforblockheads:milk_jar", "cookingforblockheads:cow_jar", "cookingforblockheads:fruit_basket", "cookingforblockheads:cooking_table", "cookingforblockheads:fridge", "cookingforblockheads:sink", "chipped:*", "irons_spellbooks:*", "create*:*", "simple_pipes:*", "libmultipart:*", "quark:tiny_potato", "ait:*", "vampirism:*", "extrastorage:*", "relics:researching_table", "sophisticatedstorage:*chest", "powah:*", "advancementtrophies:trophy", "mekanismgenerators:heat_generator", "mna:filler_block", "create_enchantment_industry:*", "graveyard:*", "immersivepetroleum:*", "tardis:interior_door", "cuffed:*", "littletiles:*", "butchersdelight:*", "irons_spellbooks:*", "extended_drawers:*", "functionalstorage:*", "sophisticatedstorage:*", "farmersdelight:*", "modern_industrialization:*_cable", "modern_industrialization:item_pipe", "modern_industrialization:*_item_pipe", "modern_industrialization:fluid_pipe", "modern_industrialization:*_fluid_pipe", "snowrealmagic:*"] forbiddenTiles = ["#forge:immovable", "#forge:relocation_not_supported", "#neoforge:immovable", "#neoforge:relocation_not_supported", "minecraft:end_portal", "minecraft:piston_head", "#c:relocation_not_supported", "minecraft:end_gateway", "minecraft:tall_grass", "minecraft:large_fern", "minecraft:peony", "minecraft:rose_bush", "minecraft:lilac", "minecraft:sunflower", "minecraft:*_bed", "minecraft:*_door", "minecraft:big_dripleaf_stem", "minecraft:waterlily", "minecraft:cake", "minecraft:nether_portal", "minecraft:tall_seagrass", "animania:block_trough", "animania:block_invisiblock", "colossalchests:*", "ic2:*", "bigreactors:*", "forestry:*", "tconstruct:*", "rustic:*", "botania:*", "astralsorcery:*", "quark:colored_bed_*", "immersiveengineering:*", "embers:block_furnace", "embers:ember_bore", "embers:ember_activator", "embers:mixer", "embers:heat_coil", "embers:large_tank", "embers:crystal_cell", "embers:alchemy_pedestal", "embers:boiler", "embers:combustor", "embers:catalzyer", "embers:field_chart", "embers:inferno_forge", "storagedrawers:framingtable", "skyresources:*", "lootbags:*", "exsartagine:*", "aquamunda:tank", "opencomputers:*", "malisisdoors:*", "industrialforegoing:*", "minecolonies:*", "thaumcraft:pillar*", "thaumcraft:infernal_furnace", "thaumcraft:placeholder*", "thaumcraft:infusion_matrix", "thaumcraft:golem_builder", "thaumcraft:thaumatorium*", "magneticraft:oil_heater", "magneticraft:solar_panel", "magneticraft:steam_engine", "magneticraft:shelving_unit", "magneticraft:grinder", "magneticraft:sieve", "magneticraft:solar_tower", "magneticraft:solar_mirror", "magneticraft:container", "magneticraft:pumpjack", "magneticraft:solar_panel", "magneticraft:refinery", "magneticraft:oil_heater", "magneticraft:hydraulic_press", "magneticraft:multiblock_gap", "refinedstorage:*", "mcmultipart:*", "enderstorage:*", "betterstorage:*", "practicallogistics2:*", "wearablebackpacks:*", "rftools:screen", "rftools:creative_screen", "create:*", "magic_doorknob:*", "iceandfire:*", "ftbquests:*", "waystones:*", "contact:*", "framedblocks:*", "securitycraft:*", "forgemultipartcbe:*", "integrateddynamics:cable", "mekanismgenerators:wind_generator", "cookingforblockheads:cabinet", "cookingforblockheads:corner", "cookingforblockheads:counter", "cookingforblockheads:oven", "cookingforblockheads:toaster", "cookingforblockheads:milk_jar", "cookingforblockheads:cow_jar", "cookingforblockheads:fruit_basket", "cookingforblockheads:cooking_table", "cookingforblockheads:fridge", "cookingforblockheads:sink", "chipped:*", "irons_spellbooks:*", "create*:*", "simple_pipes:*", "libmultipart:*", "quark:tiny_potato", "ait:*", "vampirism:*", "extrastorage:*", "relics:researching_table", "sophisticatedstorage:*chest", "powah:*", "advancementtrophies:trophy", "mekanismgenerators:heat_generator", "mna:filler_block", "create_enchantment_industry:*", "graveyard:*", "immersivepetroleum:*", "tardis:interior_door", "cuffed:*", "littletiles:*", "butchersdelight:*", "irons_spellbooks:*", "extended_drawers:*", "functionalstorage:*", "sophisticatedstorage:*", "farmersdelight:*", "modern_industrialization:*_cable", "modern_industrialization:item_pipe", "modern_industrialization:*_item_pipe", "modern_industrialization:fluid_pipe", "modern_industrialization:*_fluid_pipe", "snowrealmagic:*"]
#Entities that cannot be picked up #Entities that cannot be picked up
forbiddenEntities = ["#c:capturing_not_supported", "#c:teleporting_not_supported", "minecraft:end_crystal", "minecraft:ender_dragon", "minecraft:ghast", "minecraft:fireball", "minecraft:small_fireball", "minecraft:whither_skull", "minecraft:shulker", "minecraft:leash_knot", "minecraft:armor_stand", "minecraft:whither_skull_dangerous", "minecraft:dragon_fireball", "minecraft:item_frame", "minecraft:painting", "minecraft:shulker_bullet", "minecraft:evoker_fangs", "minecraft:glow_item_frame", "minecraft:tnt", "minecraft:trident", "minecraft:arrow", "minecraft:spectral_arrow", "minecraft:interaction", "minecraft:marker", "minecraft:block_display", "minecraft:item_display", "minecraft:text_display", "animania:hamster", "animania:ferret*", "animania:hedgehog*", "animania:cart", "animania:wagon", "mynko:*", "pixelmon:*", "mocreatures:*", "quark:totem", "vehicle:*", "securitycraft:*", "taterzens:npc", "easy_npc:*", "bodiesbodies:dead_body", "littletiles:*"] forbiddenEntities = ["#c:capturing_not_supported", "#c:teleporting_not_supported", "minecraft:end_crystal", "minecraft:ender_dragon", "minecraft:ghast", "minecraft:fireball", "minecraft:small_fireball", "minecraft:whither_skull", "minecraft:shulker", "minecraft:leash_knot", "minecraft:armor_stand", "minecraft:whither_skull_dangerous", "minecraft:dragon_fireball", "minecraft:item_frame", "minecraft:painting", "minecraft:shulker_bullet", "minecraft:evoker_fangs", "minecraft:glow_item_frame", "minecraft:tnt", "minecraft:trident", "minecraft:arrow", "minecraft:spectral_arrow", "minecraft:interaction", "minecraft:marker", "minecraft:block_display", "minecraft:item_display", "minecraft:text_display", "animania:hamster", "animania:ferret*", "animania:hedgehog*", "animania:cart", "animania:wagon", "mynko:*", "pixelmon:*", "mocreatures:*", "quark:totem", "vehicle:*", "securitycraft:*", "taterzens:npc", "easy_npc:*", "customnpcs:*", "bodiesbodies:dead_body", "littletiles:*"]
#Entities that cannot have other entities stacked on top of them #Entities that cannot have other entities stacked on top of them
forbiddenStacking = ["minecraft:horse"] forbiddenStacking = ["minecraft:horse"]
+45 -35
View File
@@ -50,7 +50,7 @@ hash = "c3cbcb17ade590daf230373d51457732bc8d9dd1039f7947b6bf564e38df1d9c"
[[files]] [[files]]
file = "config/carryon-common.toml" file = "config/carryon-common.toml"
hash = "64b3a9808f98d547bfc461f41e159cab6ef3c7525a98479e06adcbf65b027997" hash = "43f0555ad4d336822ffa04b1b77f240d327867ade9710741b23b48d236fd3885"
[[files]] [[files]]
file = "config/chat_heads.json5" file = "config/chat_heads.json5"
@@ -805,7 +805,7 @@ file = "config/yacl.json5"
hash = "121b93764159be6fb7dab523b29a844e2bb78400ce8c48f52135a097e9b0006e" hash = "121b93764159be6fb7dab523b29a844e2bb78400ce8c48f52135a097e9b0006e"
[[files]] [[files]]
file = "kubejs/assets/computercraft/textures/gui/CREDITS.txt" file = "kubejs/assets/computercraft/textures/gui/credits.txt"
hash = "19b844245d03fcdd488a7a791e287447191a74acd0f14995209339d768c5e6ce" hash = "19b844245d03fcdd488a7a791e287447191a74acd0f14995209339d768c5e6ce"
[[files]] [[files]]
@@ -814,7 +814,7 @@ hash = "db4c4a8ab49265f6e8e456f495800ea148b133b18a3242aabca30b98ab7f784f"
[[files]] [[files]]
file = "kubejs/client_scripts/createrp_ponder.js" file = "kubejs/client_scripts/createrp_ponder.js"
hash = "4a6ebdddb0249b1f59fd0d3b67649df682b81c10ff60a65a9739c0fb8c4de6ac" hash = "0460960a15e53f5599765ec2e880bb980f81b3ce241dd441e28467aa33d072d6"
[[files]] [[files]]
file = "kubejs/startup_scripts/createrp_items.js" file = "kubejs/startup_scripts/createrp_items.js"
@@ -850,6 +850,11 @@ file = "mods/architectury-api.pw.toml"
hash = "ea336d25c3e21ef168aec20e1ea470c96949ad29632646ee8e8ab0d74b4bbfc9" hash = "ea336d25c3e21ef168aec20e1ea470c96949ad29632646ee8e8ab0d74b4bbfc9"
metafile = true metafile = true
[[files]]
file = "mods/ars-nouveau.pw.toml"
hash = "9645a2d42361e38b0747c43f5e82a7f74cd4f06940cad02d6591e7c81835f733"
metafile = true
[[files]] [[files]]
file = "mods/autoreconnectrf.pw.toml" file = "mods/autoreconnectrf.pw.toml"
hash = "627eab28e2c7985ac1484eb597d84492103eeeb0f481fd3f480078e4923ab9c9" hash = "627eab28e2c7985ac1484eb597d84492103eeeb0f481fd3f480078e4923ab9c9"
@@ -945,6 +950,11 @@ file = "mods/coroutil.pw.toml"
hash = "d901f874a1e09747b8d0d072c38c426eceead1f29c8ba36680f8f0082996b152" hash = "d901f874a1e09747b8d0d072c38c426eceead1f29c8ba36680f8f0082996b152"
metafile = true metafile = true
[[files]]
file = "mods/create-aeronautics-and-connected-fluid-vessel-compatability.pw.toml"
hash = "1b8faf01f728f9057496f0dbec4222b8d174854caaf67a5c03ce5e75f8964e20"
metafile = true
[[files]] [[files]]
file = "mods/create-aeronautics.pw.toml" file = "mods/create-aeronautics.pw.toml"
hash = "6ea6284b569b13f45bfe44f9790389de4a2f7cda92c8b3bb94511b600d64c486" hash = "6ea6284b569b13f45bfe44f9790389de4a2f7cda92c8b3bb94511b600d64c486"
@@ -955,6 +965,16 @@ file = "mods/create-avionics.pw.toml"
hash = "8cccda3a227b1a929d391f33fa33ec15582db2b6164a3e36bf89ce756f5c08fd" hash = "8cccda3a227b1a929d391f33fa33ec15582db2b6164a3e36bf89ce756f5c08fd"
metafile = true metafile = true
[[files]]
file = "mods/create-central-kitchen.pw.toml"
hash = "c8b2e60b789885854508c674ba0630cdc8dc2a880302d8475cdc5ae06c44f64a"
metafile = true
[[files]]
file = "mods/create-connected.pw.toml"
hash = "6ac362d60bc8b13e03a5b6b9cdf9c7676f65d3e89e87c66f18514e7ee164cdb0"
metafile = true
[[files]] [[files]]
file = "mods/create-dragons-plus.pw.toml" file = "mods/create-dragons-plus.pw.toml"
hash = "2ba3112a833d6e23aae1e0a38a7a324f89efb8a532ea101f355dc38490840b3b" hash = "2ba3112a833d6e23aae1e0a38a7a324f89efb8a532ea101f355dc38490840b3b"
@@ -970,11 +990,26 @@ file = "mods/create-power-loader.pw.toml"
hash = "703c2d475167e08d77254c8944e2971899603cce61e4c87f870095386c725c74" hash = "703c2d475167e08d77254c8944e2971899603cce61e4c87f870095386c725c74"
metafile = true metafile = true
[[files]]
file = "mods/create-stuff-additions.pw.toml"
hash = "2244c6c580c41f432e02bc82a6f78af0b1777de42400d1e5b702208376c56c6f"
metafile = true
[[files]]
file = "mods/create-stuff-n-additions-x-sable-aeronautics-compat.pw.toml"
hash = "3124ff7b0beddb44ec981a35a149ced3e6a29f84b72a01a1d088932d61bdbdbb"
metafile = true
[[files]] [[files]]
file = "mods/create.pw.toml" file = "mods/create.pw.toml"
hash = "dcaf5f2e28db0b9a127d0167456832341045ddc9aec058c3d9fcf53f618d2404" hash = "dcaf5f2e28db0b9a127d0167456832341045ddc9aec058c3d9fcf53f618d2404"
metafile = true metafile = true
[[files]]
file = "mods/createbetterfps.pw.toml"
hash = "b6a535a801939a78f255203f7b28319773becca20cc88348f8764f4078816300"
metafile = true
[[files]] [[files]]
file = "mods/cubes-without-borders.pw.toml" file = "mods/cubes-without-borders.pw.toml"
hash = "8e5f6550359e71ecbea95705ec61fb03313550e6f481cabf48043929909aabae" hash = "8e5f6550359e71ecbea95705ec61fb03313550e6f481cabf48043929909aabae"
@@ -986,8 +1021,8 @@ hash = "36debf7653e95a855b4fedacc19027cf2e01960fc0b6d55ef2ffbffbcb455690"
metafile = true metafile = true
[[files]] [[files]]
file = "mods/dap-ur-homies.pw.toml" file = "mods/customnpcs-unofficial.pw.toml"
hash = "c82096b443ddc691eda44822604791653771b7c7da12eaac14fd9ba6bf96d647" hash = "ea6b6845387f8d990e607eaa98d027734f7d1a8823434ef901f81a5736d60aa9"
metafile = true metafile = true
[[files]] [[files]]
@@ -1000,21 +1035,6 @@ file = "mods/dynamic-fps.pw.toml"
hash = "ae6fd52d8bdcbeca5bbe6db840f22f92c1928fe0fda22017b19612b9b00a245a" hash = "ae6fd52d8bdcbeca5bbe6db840f22f92c1928fe0fda22017b19612b9b00a245a"
metafile = true metafile = true
[[files]]
file = "mods/easy-npc-config-ui.pw.toml"
hash = "6f78b2a8761dc39680d58db1f4343204be8223a8b734d16a82fdbbd89f0cea1a"
metafile = true
[[files]]
file = "mods/easy-npc-core.pw.toml"
hash = "240307bd539f88529af38d0365bff3ea2b778e41bb5cbb1ba9d88557a1d4347c"
metafile = true
[[files]]
file = "mods/easy-npc.pw.toml"
hash = "98fbf36b902f51b003016d672cef0538a7846313a30ab6b3da2d2ef30b9b4ad6"
metafile = true
[[files]] [[files]]
file = "mods/elytra-slot.pw.toml" file = "mods/elytra-slot.pw.toml"
hash = "9e2b351f3cabb1252259f5383e6f2fec3e3d90534dbecddef4ed183eba42f35a" hash = "9e2b351f3cabb1252259f5383e6f2fec3e3d90534dbecddef4ed183eba42f35a"
@@ -1090,6 +1110,11 @@ file = "mods/fzzy-config.pw.toml"
hash = "f9c118b7a66238a7f9e052705e82402e57c7a5b753d62d679b94701ede479752" hash = "f9c118b7a66238a7f9e052705e82402e57c7a5b753d62d679b94701ede479752"
metafile = true metafile = true
[[files]]
file = "mods/geckolib.pw.toml"
hash = "35779b39ddc06059ec483b33de2ecfdc3adb95c0a49e69b6701fb0024827e2f5"
metafile = true
[[files]] [[files]]
file = "mods/gravestone-mod.pw.toml" file = "mods/gravestone-mod.pw.toml"
hash = "e88253c3633274c212b2c4628a26ba03ceba6afff561eb6f9488689fad4cad06" hash = "e88253c3633274c212b2c4628a26ba03ceba6afff561eb6f9488689fad4cad06"
@@ -1240,11 +1265,6 @@ file = "mods/ping-wheel.pw.toml"
hash = "650330109d21831664d2ff597c7a90200eda69a1efaca4e9b0b6b6297ac3c364" hash = "650330109d21831664d2ff597c7a90200eda69a1efaca4e9b0b6b6297ac3c364"
metafile = true metafile = true
[[files]]
file = "mods/player-animation-library.pw.toml"
hash = "252547b364471df931005a57234082388e74eed949387ef39d17ce5fc56e190d"
metafile = true
[[files]] [[files]]
file = "mods/polytone.pw.toml" file = "mods/polytone.pw.toml"
hash = "636f08c84e9a1e1793850aa4f2390e5ece8fc25abee1d5d83679f3813e113802" hash = "636f08c84e9a1e1793850aa4f2390e5ece8fc25abee1d5d83679f3813e113802"
@@ -1295,11 +1315,6 @@ file = "mods/slice-and-dice.pw.toml"
hash = "18ca1d438084a8578f4b75f12233db58ca1deec55f117fb875afa21f2c021559" hash = "18ca1d438084a8578f4b75f12233db58ca1deec55f117fb875afa21f2c021559"
metafile = true metafile = true
[[files]]
file = "mods/sodium-dynamic-lights.pw.toml"
hash = "c1e526d3d17cb3563e596d45c7567ed1fe60c31bdc3457f7a747ef8150bd3c1b"
metafile = true
[[files]] [[files]]
file = "mods/sodium-extra.pw.toml" file = "mods/sodium-extra.pw.toml"
hash = "a1fb713df668ed21dda0602e99cb23b991c8faff841e130d7aae46258c3d6a45" hash = "a1fb713df668ed21dda0602e99cb23b991c8faff841e130d7aae46258c3d6a45"
@@ -1370,11 +1385,6 @@ file = "mods/what-are-they-up-to.pw.toml"
hash = "9ce52d07c0c3d146a2a44f8bc187138ce7a5558a4e3ab540c86234702b6de274" hash = "9ce52d07c0c3d146a2a44f8bc187138ce7a5558a4e3ab540c86234702b6de274"
metafile = true metafile = true
[[files]]
file = "mods/x+-autofish.pw.toml"
hash = "29d142218e15fbd26a4e17e1a65dab7a5a0dd81e6806130a474c1d27fa1be53d"
metafile = true
[[files]] [[files]]
file = "mods/yacl.pw.toml" file = "mods/yacl.pw.toml"
hash = "539f362e9e192cf3b2813e0dfdfc51a5e6814129c6e82a9733842529beea6242" hash = "539f362e9e192cf3b2813e0dfdfc51a5e6814129c6e82a9733842529beea6242"
+354 -206
View File
@@ -1,6 +1,7 @@
// Create RP — туторіал у стилі Create (Ponder): наведи на предмет і затисни W. // Create RP — туторіал у стилі Create (Ponder): наведи на предмет і затисни W.
// Потрібні PonderJS (мод «Ponder for KubeJS») і startup_scripts/createrp_items.js (предмет kubejs:citizen_guide). // Потрібні PonderJS (мод «Ponder for KubeJS») і startup_scripts/createrp_items.js (предмет kubejs:citizen_guide).
// Більшість сцен — на стандартній плиті 5x5 (y=0 — плита, блоки з y=1); продаж і покупки — на схематиці Create з ланцюгами. Текст: _слово_ — підсвітка, як у Create. // Більшість сцен — на стандартній плиті 5x5 (y=0 — плита, блоки з y=1); продаж і покупки — на схематиці Create з ланцюгами.
// Підписи — як у Create: одне коротке речення на крок.
const PACKAGE = 'create:cardboard_package_10x12' const PACKAGE = 'create:cardboard_package_10x12'
@@ -17,7 +18,56 @@ try {
console.warn('[createrp] Create classes unavailable for Ponder animations: ' + e) console.warn('[createrp] Create classes unavailable for Ponder animations: ' + e)
} }
// посилка з адресою їде ланцюгами від пакужаби from до пакужаби to (по вузлах CONV2 → CONV1) // один крок: підпис біля точки й пауза, поки його читають
function say(scene, ticks, text, pos, colour, keyframe) {
const t = scene.text(ticks, text, pos).placeNearTarget()
if (colour) t.colored(colour)
if (keyframe) t.attachKeyFrame()
scene.idle(ticks + 10)
}
// Create's own kinetic helper. In KubeJS `world` is a property, not a method; and Rhino rejects a
// const/let declared inside try on a second call, so there are no declarations in the try at all.
function kineticWorld(scene) {
var builder = new CreateScene(scene)
return typeof builder.world === 'function' ? builder.world() : builder.world
}
function setSpeed(scene, sel, speed) {
if (!CreateScene) return
try {
kineticWorld(scene).setKineticSpeed(sel, speed)
} catch (e) {
console.warn('[createrp] setKineticSpeed: ' + e)
}
}
// ---- мережа ланцюгів (схематика Create «Transporting packages between Frogports», 9x9) --------
const FROG_STRUCTURE = 'create:high_logistics/package_frogport'
const CONV1 = [1, 4, 7], CONV2 = [7, 4, 7]
const FROM_FROG = [5, 2, 2], TO_FROG = [2, 2, 5]
function addressedBox(address) {
const box = PackageStyles.getDefaultBox().copy()
PackageItem.addAddress(box, address)
return box
}
// посилки, що крутяться на одному вузлі ланцюга, їдуть до іншого (Create: boxTransfer)
function chainTransfer(scene, util, to, from) {
scene.world.modifyBlockEntity(util.grid.at(from[0], from[1], from[2]), ChainConveyor, be => {
var it = be.getLoopingPackages().iterator()
while (it.hasNext()) {
var p = it.next()
p.chainPosition = 0
be.addTravellingPackage(p, util.grid.at(to[0] - from[0], to[1] - from[1], to[2] - from[2]))
it.remove()
}
})
}
// посилка з адресою їде ланцюгами від пакужаби (5,2,2) до пакужаби (2,2,5)
function shipOnChains(scene, util, address) { function shipOnChains(scene, util, address) {
if (!Frogport) { if (!Frogport) {
scene.overlay.showBigLine(PonderPalette.OUTPUT, [5.5, 3, 2.5], [2.5, 3, 5.5], 140) scene.overlay.showBigLine(PonderPalette.OUTPUT, [5.5, 3, 2.5], [2.5, 3, 5.5], 140)
@@ -29,45 +79,12 @@ function shipOnChains(scene, util, address) {
scene.idle(95) scene.idle(95)
chainTransfer(scene, util, CONV1, CONV2) chainTransfer(scene, util, CONV1, CONV2)
scene.idle(45) scene.idle(45)
frogTakes(scene, util, CONV1, TO_FROG, box) scene.world.modifyBlockEntity(util.grid.at(CONV1[0], CONV1[1], CONV1[2]), ChainConveyor, be => be.getLoopingPackages().clear())
scene.idle(10) scene.world.modifyBlockEntity(util.grid.at(TO_FROG[0], TO_FROG[1], TO_FROG[2]), Frogport, be => be.startAnimation(box, false))
scene.idle(15)
} }
function setSpeed(scene, util, sel, speed) { // мережа з'являється так само, як у Create
if (CreateScene) new CreateScene(scene).world().setKineticSpeed(sel, speed)
}
// схематика Create «Transporting packages between Frogports» (9x9): ланцюги на висоті 4, дві пакужаби
const FROG_STRUCTURE = 'create:high_logistics/package_frogport'
const CONV1 = [1, 4, 7], CONV2 = [7, 4, 7]
const FROM_FROG = [5, 2, 2], TO_FROG = [2, 2, 5]
function addressedBox(address) {
const box = PackageStyles.getDefaultBox().copy()
PackageItem.addAddress(box, address)
return box
}
// посилки, що крутяться на одному ланцюговому вузлі, їдуть до іншого (Create: boxTransfer)
function chainTransfer(scene, util, to, from) {
scene.world.modifyBlockEntity(util.grid.at(from[0], from[1], from[2]), ChainConveyor, be => {
const it = be.getLoopingPackages().iterator()
while (it.hasNext()) {
const p = it.next()
p.chainPosition = 0
be.addTravellingPackage(p, util.grid.at(to[0] - from[0], to[1] - from[1], to[2] - from[2]))
it.remove()
}
})
}
// пакужаба на прийомі: знімає посилки з вузла й «ковтає» їх
function frogTakes(scene, util, conv, frog, box) {
scene.world.modifyBlockEntity(util.grid.at(conv[0], conv[1], conv[2]), ChainConveyor, be => be.getLoopingPackages().clear())
scene.world.modifyBlockEntity(util.grid.at(frog[0], frog[1], frog[2]), Frogport, be => be.startAnimation(box, false))
}
// спільна частина: мережа ланцюгів з'являється так само, як у Create
function showChainNetwork(scene, util) { function showChainNetwork(scene, util) {
scene.configureBasePlate(0, 0, 9) scene.configureBasePlate(0, 0, 9)
scene.scaleSceneView(0.75) scene.scaleSceneView(0.75)
@@ -88,6 +105,23 @@ function showChainNetwork(scene, util) {
scene.idle(20) scene.idle(20)
} }
function showRightSide(scene, util) { // пакувальник, сховище й пакужаба праворуч (5..7, z=2)
scene.world.showSection(util.select.fromTo(7, 1, 2, 5, 1, 2), Direction.DOWN)
scene.world.showSection(util.select.position(5, 1, 3), Direction.DOWN)
scene.idle(5)
scene.world.showSection(util.select.position(5, 2, 2), Direction.DOWN)
scene.idle(15)
}
function showLeftSide(scene, util) { // пакужаба з пакувальником ліворуч (2, z=5)
scene.world.showSection(util.select.position(2, 1, 5), Direction.SOUTH)
scene.world.showSection(util.select.fromTo(2, 1, 4, 0, 1, 4), Direction.DOWN)
scene.world.showSection(util.select.position(3, 1, 5), Direction.DOWN)
scene.idle(5)
scene.world.showSection(util.select.position(2, 2, 5), Direction.DOWN)
scene.idle(15)
}
// --------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------
// 1. Термінал держави // 1. Термінал держави
@@ -99,145 +133,64 @@ function terminalScene(scene, util) {
scene.world.showSection([2, 1, 2], Direction.DOWN) scene.world.showSection([2, 1, 2], Direction.DOWN)
scene.idle(15) scene.idle(15)
scene.text(80, 'Будь-який _комп\'ютер_ — це термінал держави. Відкрий його й набери _rp_.', [2.5, 1.5, 2.5])
.placeNearTarget().attachKeyFrame()
scene.showControls(60, [2.5, 2, 2.5], 'down').rightClick() scene.showControls(60, [2.5, 2, 2.5], 'down').rightClick()
scene.idle(90) say(scene, 70, 'Будь-який комп\'ютер — термінал держави', [2.5, 1.5, 2.5], null, true)
say(scene, 60, 'Набери rp і натисни Enter', [2.5, 1.5, 2.5])
scene.text(90, 'Вхід — твій _нік_ і _пароль_. Першого разу термінал попросить створити пароль. Стій поруч із комп\'ютером — здалеку не пустить.', [2.5, 1.5, 2.5]) say(scene, 70, 'Увійди: свій нік і пароль', [2.5, 1.5, 2.5], PonderPalette.BLUE, true)
.placeNearTarget().attachKeyFrame() say(scene, 70, 'Першого разу термінал попросить створити пароль', [2.5, 1.5, 2.5])
scene.idle(100) say(scene, 60, 'Стій поруч — здалеку не пустить', [2.5, 1.5, 2.5], PonderPalette.RED)
say(scene, 80, 'Тут усе: рахунок, бізнес, ціни, магазин, земля, робота, банк', [2.5, 1.5, 2.5], null, true)
scene.text(90, 'У меню: _рахунок_, _бізнес_, _ціни_, _магазин_, _земля_, _робота_, _тендери_, _банк_. Стрілки й Enter, Backspace — назад.', [2.5, 1.5, 2.5])
.placeNearTarget()
scene.idle(100)
scene.world.showSection([1, 1, 3, 3, 2, 3], Direction.DOWN) scene.world.showSection([1, 1, 3, 3, 2, 3], Direction.DOWN)
scene.idle(15) scene.idle(15)
scene.text(90, 'Комп\'ютер з _монітором_ — табло цін держави: програма _prices metal_ (або stone, wood, farm, food, create…).', [2, 2.5, 3]) say(scene, 70, 'Додай монітор — і набери prices metal', [2, 2.5, 3], PonderPalette.BLUE, true)
.colored(PonderPalette.BLUE).placeNearTarget().attachKeyFrame() say(scene, 60, 'Вийде табло цін держави', [2, 2.5, 3])
scene.idle(100)
} }
// --------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------
// 2. Продаж державі (схематика Create з ланцюгами) // 2. Продаж державі
function sellScene(scene, util) { function sellScene(scene, util) {
showChainNetwork(scene, util) showChainNetwork(scene, util)
scene.text(90, 'Бізнеси й держава з\'єднані _мережею ланцюгів_. Посилка сама знаходить пакужабу з потрібною адресою.', [4, 4.5, 7]) say(scene, 70, 'Держава купує все, що ти добуваєш і виробляєш', [4, 4.5, 4], null, true)
.placeNearTarget().attachKeyFrame() say(scene, 70, 'Товар їде до неї посилками по ланцюгах', [4, 4.5, 7])
scene.idle(100)
// бізнес: сховище, пакувальник з табличкою, пакужаба на ланцюгу showRightSide(scene, util)
scene.world.showSection(util.select.fromTo(7, 1, 2, 5, 1, 2), Direction.DOWN)
scene.world.showSection(util.select.position(5, 1, 3), Direction.DOWN)
scene.idle(5)
scene.world.showSection(util.select.position(4, 1, 2), Direction.EAST) scene.world.showSection(util.select.position(4, 1, 2), Direction.EAST)
scene.world.showSection(util.select.position(5, 2, 2), Direction.DOWN) scene.idle(10)
scene.idle(15) say(scene, 70, 'Твій бізнес: сховище, пакувальник і пакужаба', [5.5, 2.5, 2.5], null, true)
scene.text(110, 'Твій бізнес: сховище → _пакувальник_ → _пакужаба_ на ланцюгу. Табличка на пакувальнику — адреса продажу _gov-…_ (термінал → Бізнес → Адреса продажу).', [4.5, 1.5, 2.5]) say(scene, 80, 'На пакувальник — табличка з адресою gov-…', [4.5, 1.5, 2.5], PonderPalette.BLUE)
.placeNearTarget().attachKeyFrame() say(scene, 70, 'Адресу дає термінал: Бізнес → Адреса продажу', [4.5, 1.5, 2.5])
scene.idle(120)
// держава: пакужаба з фільтром gov-* і приймач під нею showLeftSide(scene, util)
scene.world.showSection(util.select.position(2, 1, 5), Direction.SOUTH) say(scene, 80, 'Це державна пакужаба — вона приймає всі адреси gov-…', [2.5, 2.5, 5.5], PonderPalette.BLUE, true)
scene.world.showSection(util.select.fromTo(2, 1, 4, 0, 1, 4), Direction.DOWN)
scene.idle(5)
scene.world.showSection(util.select.position(2, 2, 5), Direction.DOWN)
scene.idle(15)
scene.text(100, '_Державна пакужаба_ приймає посилки на всі адреси gov-… Під нею — державний приймач.', [2.5, 2.5, 5.5])
.colored(PonderPalette.BLUE).placeNearTarget().attachKeyFrame()
scene.idle(110)
scene.text(70, 'Посилка з адресою gov-… їде ланцюгами…', [6.78, 4.37, 3.5]).placeNearTarget() scene.text(60, 'Посилка їде ланцюгами…', [6.78, 4.37, 3.5]).placeNearTarget()
shipOnChains(scene, util, 'gov-a1b2c3') shipOnChains(scene, util, 'gov-a1b2c3')
scene.text(110, '…до держави. Гроші — на _рахунок бізнесу_. Товару забагато — ціна падає, дефіцит — росте. Ціни — на табло й у терміналі.', [2.5, 2.5, 5.5]) say(scene, 70, '…і гроші приходять на рахунок бізнесу', [2.5, 2.5, 5.5], PonderPalette.GREEN, true)
.colored(PonderPalette.GREEN).placeNearTarget().attachKeyFrame() say(scene, 70, 'Багато однакового товару — ціна падає', [4, 4.5, 4], PonderPalette.RED)
scene.idle(120) say(scene, 60, 'Дефіцит — ціна росте', [4, 4.5, 4], PonderPalette.GREEN)
say(scene, 60, 'Ціни дивись на табло або в терміналі', [4, 4.5, 4])
scene.text(80, 'Поїзди, ферми, ланцюги — продаж іде сам, поки ти робиш інше.', [4, 4.5, 4])
scene.idle(90)
} }
// --------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------
// 3. Покупка в держави (та сама мережа, напрямок навпаки) // 3. Покупки в держави
function buyScene(scene, util) { function buyScene(scene, util) {
showChainNetwork(scene, util) showChainNetwork(scene, util)
scene.world.showSection(util.select.fromTo(7, 1, 2, 5, 1, 2), Direction.DOWN) showRightSide(scene, util)
scene.world.showSection(util.select.position(5, 1, 3), Direction.DOWN) say(scene, 70, 'Це державний склад', [5.5, 2.5, 2.5], PonderPalette.BLUE, true)
scene.idle(5) say(scene, 80, 'Держава продає імпорт: алмази, незерит, елітри, ліцензії', [5.5, 2.5, 2.5])
scene.world.showSection(util.select.position(5, 2, 2), Direction.DOWN) say(scene, 60, 'Купуй у терміналі: Магазин держави', [4, 4.5, 4])
scene.idle(15)
scene.text(100, '_Державний склад_: пакувальник і пакужаба держави на тій самій мережі ланцюгів.', [5.5, 2.5, 2.5])
.colored(PonderPalette.BLUE).placeNearTarget().attachKeyFrame()
scene.idle(110)
scene.text(100, 'Держава продає _імпорт_ (алмази, незерит, елітри…) і _ліцензії_. Купівля — термінал → Магазин держави.', [4, 4.5, 4]) showLeftSide(scene, util)
.placeNearTarget().attachKeyFrame() say(scene, 70, 'Це твоя пакужаба, напр. «Склад Олі»', [2.5, 2.5, 5.5], null, true)
scene.idle(110) say(scene, 70, 'Цю назву впиши як адресу доставки', [2.5, 2.5, 5.5], PonderPalette.BLUE)
scene.world.showSection(util.select.position(2, 1, 5), Direction.SOUTH)
scene.world.showSection(util.select.fromTo(2, 1, 4, 0, 1, 4), Direction.DOWN)
scene.world.showSection(util.select.position(3, 1, 5), Direction.DOWN)
scene.idle(5)
scene.world.showSection(util.select.position(2, 2, 5), Direction.DOWN)
scene.idle(15)
scene.text(100, 'Твоя пакужаба з адресою, напр. _Склад Олі_. Цю назву вкажи під час покупки — термінал запам\'ятає.', [2.5, 2.5, 5.5])
.placeNearTarget().attachKeyFrame()
scene.idle(110)
shipOnChains(scene, util, 'Склад Олі') shipOnChains(scene, util, 'Склад Олі')
scene.text(100, 'Посилка приходить сама. _Пакувальник_ під твоєю пакужабою розпакує її у скриню.', [3.5, 1.5, 5.5]) say(scene, 70, 'Посилка приїжджає сама', [2.5, 2.5, 5.5], PonderPalette.GREEN, true)
.colored(PonderPalette.GREEN).placeNearTarget().attachKeyFrame() say(scene, 70, 'Пакувальник розпакує її у скриню', [3.5, 1.5, 5.5])
scene.idle(110) say(scene, 70, 'Не доїхала — гроші повернуться самі', [4, 4.5, 4], PonderPalette.RED)
scene.text(80, 'Не дійшла? Гроші _повертаються_ автоматично, а в чаті буде причина.', [4, 4.5, 4])
scene.idle(90)
}
// ---------------------------------------------------------------------------------------------
// 7. Продаж енергії державі
function energyScene(scene, util) {
scene.showBasePlate()
scene.world.setBlocks([0, 1, 2], 'create:water_wheel[facing=east]')
scene.world.setBlocks([1, 1, 2], 'create:shaft[axis=x]')
scene.world.setBlocks([2, 1, 2], 'create:stressometer[facing=south,axis_along_first=true]')
scene.world.setBlocks([3, 1, 2], 'create:shaft[axis=x]')
scene.world.setBlocks([4, 1, 2], 'create:encased_fan[facing=east]')
scene.idle(10)
scene.world.showSection([0, 1, 2], Direction.DOWN)
scene.world.showSection([1, 1, 2], Direction.DOWN)
scene.idle(10)
setSpeed(scene, util, util.select.fromTo(0, 1, 2, 1, 1, 2), 16)
scene.text(90, 'Енергію теж можна _продавати державі_. Твій генератор — колесо, вітряк, двигун — крутить вал до державної мережі.', [0.5, 1.5, 2.5])
.placeNearTarget().attachKeyFrame()
scene.idle(100)
scene.world.showSection([3, 1, 2, 4, 1, 2], Direction.DOWN)
scene.idle(10)
scene.world.showSection([2, 1, 2], Direction.DOWN)
scene.idle(10)
setSpeed(scene, util, util.select.fromTo(0, 1, 2, 4, 1, 2), 16)
scene.overlay.showOutline(PonderPalette.GREEN, 'biz', util.select.fromTo(0, 1, 2, 1, 1, 2), 100)
scene.overlay.showOutline(PonderPalette.BLUE, 'state', util.select.fromTo(3, 1, 2, 4, 1, 2), 100)
scene.text(100, 'На стику — _державний лічильник_ (стресометр). Його ставить держава і прив\'язує до твого бізнесу.', [2.5, 1.8, 2.5])
.colored(PonderPalette.BLUE).placeNearTarget().attachKeyFrame()
scene.idle(110)
scene.text(110, 'Щохвилини держава платить бізнесу за _силу_ (SU), яку забирають її машини, — до ліміту лічильника.', [3.5, 1.5, 2.5])
.colored(PonderPalette.GREEN).placeNearTarget().attachKeyFrame()
scene.idle(120)
setSpeed(scene, util, util.select.fromTo(0, 1, 2, 4, 1, 2), 0)
scene.text(90, 'Генератор зупинився — оплата зупинилась. Перевантажив мережу — теж нічого не заробиш.', [1.5, 1.5, 2.5])
.colored(PonderPalette.RED).placeNearTarget()
scene.idle(100)
setSpeed(scene, util, util.select.fromTo(0, 1, 2, 4, 1, 2), 16)
scene.text(80, 'Хочеш лічильник? Звернися до держави — вона підключить твою електростанцію.', [2.5, 2.5, 2.5])
scene.idle(90)
} }
// --------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------
@@ -249,9 +202,8 @@ function moneyScene(scene, util) {
scene.world.showSection([2, 1, 2], Direction.DOWN) scene.world.showSection([2, 1, 2], Direction.DOWN)
scene.idle(15) scene.idle(15)
scene.text(90, 'Твої гроші — на _рахунку_ в державному банку. Баланс і перекази — термінал → Рахунок.', [2.5, 1.5, 2.5]) say(scene, 70, 'Твої гроші лежать на рахунку в банку', [2.5, 1.5, 2.5], null, true)
.placeNearTarget().attachKeyFrame() say(scene, 60, 'Баланс і перекази — у терміналі', [2.5, 1.5, 2.5])
scene.idle(100)
const coins = ['numismatics:spur', 'numismatics:bevel', 'numismatics:sprocket', 'numismatics:cog'] const coins = ['numismatics:spur', 'numismatics:bevel', 'numismatics:sprocket', 'numismatics:cog']
for (let i = 0; i < coins.length; i++) { for (let i = 0; i < coins.length; i++) {
@@ -259,17 +211,13 @@ function moneyScene(scene, util) {
scene.idle(5) scene.idle(5)
} }
scene.idle(10) scene.idle(10)
scene.text(110, '_Готівка_ — монети: зняти /cash withdraw <сума>, покласти — /cash deposit з монетами в руці. Готівкою платять одне одному з рук.', [2.5, 2, 1.5]) say(scene, 70, 'Монети — це готівка', [2.5, 2, 1.5], PonderPalette.GREEN, true)
.colored(PonderPalette.GREEN).placeNearTarget().attachKeyFrame() say(scene, 70, 'Зняти: /cash withdraw <сума>', [2.5, 2, 1.5])
scene.idle(120) say(scene, 70, 'Покласти: монети в руку і /cash deposit', [2.5, 2, 1.5])
scene.text(100, '_Банк_ (термінал → Банк): стартовий та інвестиційний кредити для бізнесу, вклади під відсоток щодня.', [2.5, 1.5, 2.5]) say(scene, 70, 'Банк дає кредити бізнесу', [2.5, 1.5, 2.5], PonderPalette.BLUE, true)
.placeNearTarget().attachKeyFrame() say(scene, 60, 'А вклад щодня приносить відсоток', [2.5, 1.5, 2.5])
scene.idle(110) say(scene, 80, 'Пропустив 3 платежі по кредиту — рахунок заморожено', [2.5, 1.5, 2.5], PonderPalette.RED)
scene.text(90, 'Кредит платиться щоденними внесками. Пропустиш тричі — _дефолт_: рахунок бізнесу заморожено, тендери заборонені.', [2.5, 1.5, 2.5])
.colored(PonderPalette.RED).placeNearTarget()
scene.idle(100)
} }
// --------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------
@@ -284,78 +232,274 @@ function landScene(scene, util) {
scene.world.setBlocks([2, 1, 2], 'minecraft:iron_ore') scene.world.setBlocks([2, 1, 2], 'minecraft:iron_ore')
scene.idle(10) scene.idle(10)
scene.text(90, 'Уся незареєстрована земля _належить державі_. Будувати можна на своїх ділянках.', [2.5, 1, 2.5]) say(scene, 70, 'Нічия земля належить державі', [2.5, 1, 2.5], null, true)
.placeNearTarget().attachKeyFrame()
scene.idle(100)
scene.overlay.showOutline(PonderPalette.GREEN, 'plot', util.select.fromTo(0, 0, 0, 4, 0, 4), 120) scene.overlay.showOutline(PonderPalette.GREEN, 'plot', util.select.fromTo(0, 0, 0, 4, 0, 4), 150)
scene.world.showSection([1, 1, 1, 3, 1, 3], Direction.DOWN) scene.world.showSection([1, 1, 1, 3, 1, 3], Direction.DOWN)
scene.text(110, '_Ділянки_ орендують на ігрові дні або викуповують: термінал → Земля. Заходячи на ділянку, бачиш її назву над хотбаром.', [2.5, 1.5, 2.5]) say(scene, 70, 'Будуй на своїй ділянці', [2.5, 1.5, 2.5], PonderPalette.GREEN, true)
.colored(PonderPalette.GREEN).placeNearTarget().attachKeyFrame() say(scene, 70, 'Орендуй або купи її в терміналі: Земля', [2.5, 1.5, 2.5])
scene.idle(120) say(scene, 70, 'На ділянці над хотбаром видно її назву', [2.5, 1.5, 2.5])
say(scene, 70, 'Чужі тут не ламають, а твої працівники — можуть', [2.5, 1.5, 2.5])
scene.text(100, 'Орендована ділянка — _приват_ бізнесу: чужі не ламають, а твої працівники мають доступ.', [2.5, 1.5, 2.5]) scene.overlay.showOutline(PonderPalette.RED, 'ore', util.select.position(2, 1, 2), 150)
.placeNearTarget() say(scene, 70, 'Руду копають лише з концесією', [2.5, 1.5, 2.5], PonderPalette.RED, true)
scene.idle(110) say(scene, 70, 'Купи її в терміналі: Земля → Купити концесію', [2.5, 1.5, 2.5])
say(scene, 70, 'Бури Create теж копають лише за концесією', [2.5, 1.5, 2.5])
scene.overlay.showOutline(PonderPalette.RED, 'ore', util.select.position(2, 1, 2), 100) say(scene, 70, 'Найкращі ділянки держава продає на аукціоні', [2.5, 2.5, 2.5], PonderPalette.BLUE, true)
scene.text(100, '_Руда_ видобувається за _концесією_: купи дозвіл на руду й квоту на ділянці (термінал → Земля → Купити концесію).', [2.5, 1.5, 2.5]) say(scene, 70, 'Ставки — в терміналі: Земля → Аукціони', [2.5, 2.5, 2.5])
.colored(PonderPalette.RED).placeNearTarget().attachKeyFrame() say(scene, 80, 'За землю платиш щодня. Не платив 3 дні — ділянку забирають', [2.5, 2.5, 2.5])
scene.idle(110)
scene.text(80, 'За землю щодня — орендна плата або податок. Не заплатив 3 дні — ділянка повертається державі.', [2.5, 2.5, 2.5])
scene.idle(90)
} }
// --------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------
// 6. Робота: ринок праці і пошта // 6. Робота: ринок праці й пошта
function jobsScene(scene, util) { function jobsScene(scene, util) {
scene.showBasePlate() scene.showBasePlate()
scene.idle(10) scene.idle(10)
const post = scene.world.createEntity('minecraft:villager', [1, 1, 2.5]) scene.world.createEntity('minecraft:villager', [1, 1, 2.5])
scene.idle(10) scene.idle(10)
scene.text(90, 'Немає роботи? Термінал → Робота → _ринок праці_: допомога по безробіттю щодня, якщо ти був активний у грі.', [2.5, 2.5, 2.5]) say(scene, 70, 'Немає роботи? Стань на ринок праці', [2.5, 2.5, 2.5], null, true)
.placeNearTarget().attachKeyFrame() say(scene, 70, 'Держава щодня платить допомогу, якщо ти грав', [2.5, 2.5, 2.5])
scene.idle(100)
scene.text(90, 'Хочеш заробляти більше — стань _поштарем_. Клікни по NPC пошти.', [1, 2.5, 2.5])
.colored(PonderPalette.BLUE).placeNearTarget().attachKeyFrame()
scene.showControls(60, [1, 2.3, 2.5], 'down').rightClick() scene.showControls(60, [1, 2.3, 2.5], 'down').rightClick()
scene.idle(70) say(scene, 70, 'Хочеш більше — працюй поштарем', [1, 2.5, 2.5], PonderPalette.BLUE, true)
scene.world.createItemEntity([1.5, 2, 2.5], [0.05, 0.25, 0], PACKAGE) scene.world.createItemEntity([1.5, 2, 2.5], [0.05, 0.25, 0], PACKAGE)
scene.world.createItemEntity([1.5, 2, 2.5], [0.03, 0.3, 0.03], 'minecraft:compass') scene.world.createItemEntity([1.5, 2, 2.5], [0.03, 0.3, 0.03], 'minecraft:compass')
scene.idle(20) scene.idle(20)
scene.text(100, 'Отримаєш _посилку_ з іменем адресата й _компас_, що вказує на нього. ПКМ компасом — мітка на місці (видно лише тобі).', [2, 1.5, 2.5]) say(scene, 70, 'NPC пошти дасть посилку й компас', [2, 1.5, 2.5], null, true)
.placeNearTarget().attachKeyFrame() say(scene, 70, 'Компас веде до адресата', [2, 1.5, 2.5])
scene.idle(110) say(scene, 70, 'ПКМ компасом — мітка на місці', [2, 1.5, 2.5], PonderPalette.BLUE)
scene.world.createEntity('minecraft:villager', [4, 1, 2.5]) scene.world.createEntity('minecraft:villager', [4, 1, 2.5])
scene.overlay.showBigLine(PonderPalette.OUTPUT, [1.5, 1.2, 2.5], [4, 1.2, 2.5], 80) scene.overlay.showBigLine(PonderPalette.OUTPUT, [1.5, 1.2, 2.5], [4, 1.2, 2.5], 100)
scene.text(100, 'Адресат чекає в іншій частині світу. Принеси посилку й клікни по ньому — гроші на рахунок. Що далі, то дорожче.', [4, 2.5, 2.5]) say(scene, 70, 'Віддай посилку адресату — і отримаєш гроші', [4, 2.5, 2.5], PonderPalette.GREEN, true)
.colored(PonderPalette.GREEN).placeNearTarget().attachKeyFrame() say(scene, 60, 'Що далі везти — то більше платять', [4, 2.5, 2.5])
scene.idle(110) say(scene, 60, 'На доставку — 2 ігрові дні', [2.5, 2.5, 2.5], PonderPalette.RED)
say(scene, 80, 'Або наймися в бізнес: термінал → Бізнес', [2.5, 2.5, 2.5], null, true)
}
scene.text(80, 'На доставку — _2 ігрові дні_. Не встиг — адресат поїде, і посилка згорить.', [2.5, 2.5, 2.5]) // ---------------------------------------------------------------------------------------------
.colored(PonderPalette.RED) // 8. Вантажник
scene.idle(90)
scene.text(90, 'Або наймися до бізнесу: власник пропонує зарплату, ти приймаєш у терміналі → Бізнес → Прийняти запрошення.', [2.5, 2.5, 2.5]) function cargoScene(scene, util) {
scene.idle(100) scene.showBasePlate()
scene.world.setBlocks([0, 1, 3, 4, 1, 3], 'minecraft:rail[shape=east_west]')
scene.idle(10)
scene.world.createEntity('minecraft:villager', [1, 1, 1])
scene.idle(10)
say(scene, 70, 'Вантажник возить будматеріали на будови', [1, 2.5, 1], null, true)
scene.showControls(50, [1, 2.3, 1], 'down').rightClick()
scene.idle(20)
for (let i = 0; i < 5; i++) {
scene.world.createItemEntity([1.5, 2, 1.5], [0.04 * (i - 2), 0.25, 0.06], PACKAGE)
scene.idle(4)
}
scene.idle(10)
say(scene, 70, 'Диспетчер вантажів дасть від 4 до 8 ящиків', [1.5, 1.5, 1.5], PonderPalette.BLUE, true)
say(scene, 70, 'Ящики важкі: з ними ти ледве йдеш', [1.5, 1.5, 1.5], PonderPalette.RED)
scene.world.showSection([0, 1, 3, 4, 1, 3], Direction.DOWN)
scene.world.createEntity('minecraft:minecart', [1.5, 1, 3.5])
scene.idle(15)
say(scene, 70, 'Візьми візок, поїзд чи інший транспорт', [1.5, 1.5, 3.5], null, true)
scene.world.createEntity('minecraft:villager', [4, 1, 1])
scene.overlay.showBigLine(PonderPalette.OUTPUT, [1.5, 1.2, 3.5], [4, 1.2, 1.5], 100)
say(scene, 70, 'Компас веде до прораба на будові', [4, 2.5, 1], null, true)
say(scene, 70, 'Віддай йому всі ящики — і отримаєш гроші', [4, 2.5, 1], PonderPalette.GREEN)
say(scene, 70, 'Платять більше, ніж на пошті: за відстань і кожен ящик', [2.5, 2.5, 2.5], PonderPalette.GREEN)
say(scene, 60, 'На доставку — 3 ігрові дні', [2.5, 2.5, 2.5], PonderPalette.RED)
}
// ---------------------------------------------------------------------------------------------
// 9. Дорожник
function roadsScene(scene, util) {
const CORRIDOR = util.select.fromTo(0, 0, 1, 4, 0, 3)
scene.showBasePlate()
scene.idle(10)
scene.overlay.showOutline(PonderPalette.BLUE, 'corridor', CORRIDOR, 200)
say(scene, 70, 'Це транспортний коридор держави', [2.5, 1, 2], PonderPalette.BLUE, true)
say(scene, 70, 'Будувати й ламати тут може лише дорожник', [2.5, 1, 2], PonderPalette.RED)
scene.world.createEntity('minecraft:villager', [0.5, 1, 0.5])
scene.idle(10)
scene.showControls(50, [0.5, 2.3, 0.5], 'down').rightClick()
say(scene, 70, 'Стань дорожником: дорожній майстер або термінал → Робота', [0.5, 2.5, 0.5], null, true)
for (let x = 0; x < 5; x++) {
scene.world.setBlocks([x, 1, 2], 'minecraft:stone_bricks')
scene.world.showSection([x, 1, 2], Direction.DOWN)
if (x === 0) scene.showControls(40, [0.5, 1.5, 2.5], 'down').rightClick().withItem('minecraft:stone_bricks')
scene.idle(8)
}
scene.idle(10)
say(scene, 70, 'Кожен новий блок дороги — 0,3 ¤', [2.5, 1.5, 2.5], PonderPalette.GREEN, true)
say(scene, 70, 'Гроші — в кінці ігрового дня, до 300 блоків на день', [2.5, 1.5, 2.5])
say(scene, 70, 'Перекласти той самий блок вдруге — не оплачується', [2.5, 1.5, 2.5], PonderPalette.RED)
say(scene, 80, 'Покриття: кам\'яна цегла, гладкий камінь, андезит, плитка Create', [2.5, 1.5, 2.5])
}
// ---------------------------------------------------------------------------------------------
// 10. Шахтар
function minerScene(scene, util) {
scene.showBasePlate()
scene.world.setBlocks([1, 1, 1, 3, 2, 3], 'minecraft:stone')
scene.world.setBlocks([2, 1, 1], 'minecraft:iron_ore')
scene.world.setBlocks([1, 2, 1], 'minecraft:coal_ore')
scene.world.setBlocks([3, 1, 1], 'minecraft:copper_ore')
scene.world.setBlocks([2, 2, 1], 'minecraft:stone')
scene.idle(10)
scene.world.showSection([1, 1, 1, 3, 2, 3], Direction.DOWN)
scene.idle(15)
say(scene, 70, 'Це державна шахта', [2.5, 2.5, 1], PonderPalette.BLUE, true)
say(scene, 70, 'Копати тут можуть лише шахтарі', [2.5, 2.5, 1], PonderPalette.RED)
say(scene, 70, 'Найнятися: бригадир шахти або термінал → Робота', [2.5, 2.5, 1])
scene.showControls(40, [2.5, 1.5, 1], 'right').leftClick().withItem('minecraft:iron_pickaxe')
scene.idle(30)
scene.world.destroyBlock([2, 1, 1])
scene.idle(15)
say(scene, 70, 'Руда одразу йде державі — без дропу', [2.5, 1.5, 1], null, true)
scene.world.createItemEntity([2.5, 2, 0.8], [0, 0.2, 0], 'numismatics:spur')
say(scene, 70, 'Тобі — оплата за кожен блок', [2.5, 1.5, 1], PonderPalette.GREEN)
say(scene, 70, 'Алмази й золото дорожчі за вугілля', [2.5, 1.5, 1])
say(scene, 70, 'Гроші — в кінці ігрового дня, до 200 блоків на день', [2.5, 2.5, 2])
scene.world.setBlocks([2, 1, 1], 'minecraft:iron_ore')
scene.idle(10)
say(scene, 70, 'Викопана руда згодом виростає знову', [2.5, 1.5, 1], PonderPalette.BLUE, true)
}
// ---------------------------------------------------------------------------------------------
// 11. Оператор заводу
function operatorScene(scene, util) {
scene.showBasePlate()
scene.world.setBlocks([1, 1, 2], 'minecraft:blast_furnace')
scene.world.setBlocks([2, 1, 2], 'create:andesite_casing')
scene.world.setBlocks([3, 1, 2], 'create:mechanical_press')
scene.idle(10)
scene.world.showSection([1, 1, 2, 3, 1, 2], Direction.DOWN)
scene.idle(15)
say(scene, 70, 'Це державний завод', [2.5, 2.5, 2.5], PonderPalette.BLUE, true)
say(scene, 70, 'Оператор стежить, щоб він не зупинявся', [2.5, 2.5, 2.5])
say(scene, 70, 'Найнятися: майстер заводу або термінал → Робота', [2.5, 2.5, 2.5])
scene.overlay.showOutline(PonderPalette.RED, 'broken', util.select.position(1, 1, 2), 220)
say(scene, 70, 'Точка задиміла — щось зламалось', [1.5, 2, 2.5], PonderPalette.RED, true)
scene.showControls(50, [1.5, 2, 2.5], 'down').rightClick().withItem('minecraft:coal')
say(scene, 70, 'Немає палива — клацни з вугіллям у руці', [1.5, 2, 2.5])
scene.showControls(50, [1.5, 2, 2.5], 'down').rightClick()
say(scene, 70, 'Затор — прочисть порожньою рукою', [1.5, 2, 2.5])
scene.showControls(50, [1.5, 2, 2.5], 'down').rightClick().withItem('create:wrench')
say(scene, 70, 'Розхиталась деталь — підтягни ключем', [1.5, 2, 2.5])
scene.world.createItemEntity([1.5, 2.2, 2.5], [0, 0.2, 0], 'numismatics:spur')
say(scene, 70, 'Кожен ремонт — 2 ¤ у кінці ігрового дня', [2.5, 2.5, 2.5], PonderPalette.GREEN, true)
say(scene, 70, 'Поломки стаються, лише поки ти на зміні поруч', [2.5, 2.5, 2.5])
}
// ---------------------------------------------------------------------------------------------
// 12. Державні службовці
function officialsScene(scene, util) {
scene.showBasePlate()
scene.idle(10)
scene.world.createEntity('minecraft:villager', [2.5, 1, 2.5])
scene.idle(10)
scene.showControls(50, [2.5, 2.3, 2.5], 'down').rightClick()
say(scene, 70, 'Державні службовці відповідають на запитання', [2.5, 2.5, 2.5], null, true)
say(scene, 70, 'Клацни по службовцю й обери репліку', [2.5, 2.5, 2.5])
say(scene, 70, 'Провідник на спавні пояснить, з чого почати', [2.5, 2.5, 2.5], PonderPalette.BLUE, true)
say(scene, 70, 'Він же дасть перше завдання з підйомними', [2.5, 2.5, 2.5], PonderPalette.GREEN)
scene.world.createEntity('minecraft:villager', [0.5, 1, 0.5])
scene.world.createEntity('minecraft:villager', [4.5, 1, 0.5])
scene.world.createEntity('minecraft:villager', [0.5, 1, 4.5])
scene.world.createEntity('minecraft:villager', [4.5, 1, 4.5])
scene.idle(15)
say(scene, 70, 'Ратуша: бізнес, ділянки, аукціони', [0.5, 2.5, 0.5], null, true)
say(scene, 70, 'Міністерство: тендери й частки ринку', [4.5, 2.5, 0.5])
say(scene, 70, 'Банк: рахунок, кредити, вклад', [0.5, 2.5, 4.5])
say(scene, 70, 'Центр зайнятості: робота й допомога', [4.5, 2.5, 4.5])
say(scene, 80, 'Відповідь службовця приходить у чат', [2.5, 2.5, 2.5], PonderPalette.BLUE, true)
say(scene, 80, 'Щоб щось оформити — іди до термінала', [2.5, 2.5, 2.5])
}
// ---------------------------------------------------------------------------------------------
// 7. Продаж енергії державі: державна підстанція
function energyScene(scene, util) {
const STATE = util.select.fromTo(3, 1, 0, 4, 1, 4)
const BUSINESS = util.select.fromTo(0, 1, 2, 1, 1, 2)
const ALL = util.select.fromTo(0, 1, 0, 4, 1, 4)
scene.showBasePlate()
// генератор бізнесу → вал → лічильник → коробка передач підстанції → три вентилятори держави
scene.world.setBlocks([0, 1, 2], 'create:water_wheel[facing=east]')
scene.world.setBlocks([1, 1, 2], 'create:shaft[axis=x]')
scene.world.setBlocks([2, 1, 2], 'create:stressometer[facing=south,axis_along_first=true]')
scene.world.setBlocks([3, 1, 2], 'create:gearbox')
scene.world.setBlocks([4, 1, 2], 'create:encased_fan[facing=east]')
scene.world.setBlocks([3, 1, 1], 'create:shaft[axis=z]')
scene.world.setBlocks([3, 1, 3], 'create:shaft[axis=z]')
scene.world.setBlocks([3, 1, 0], 'create:encased_fan[facing=north]')
scene.world.setBlocks([3, 1, 4], 'create:encased_fan[facing=south]')
scene.idle(10)
scene.world.showSection(STATE, Direction.DOWN)
scene.idle(15)
scene.overlay.showOutline(PonderPalette.BLUE, 'state', STATE, 90)
say(scene, 80, 'Це державна підстанція: її машинам потрібна сила', [3.5, 2.5, 2.5], PonderPalette.BLUE, true)
scene.world.showSection([2, 1, 2], Direction.DOWN)
scene.idle(10)
say(scene, 70, 'На вході стоїть лічильник — стресометр', [2.5, 1.8, 2.5], null, true)
say(scene, 70, 'Держава закріплює його за твоїм бізнесом', [2.5, 1.8, 2.5])
scene.world.showSection(BUSINESS, Direction.EAST)
scene.idle(15)
scene.overlay.showOutline(PonderPalette.GREEN, 'biz', BUSINESS, 90)
say(scene, 70, 'Підведи вал від свого генератора', [0.5, 1.5, 2.5], PonderPalette.GREEN, true)
setSpeed(scene, ALL, 32)
scene.idle(10)
say(scene, 70, 'Машини держави закрутились', [3.5, 2.5, 2.5])
for (let i = 0; i < 3; i++) {
scene.world.createItemEntity([2.5, 2.2, 2.5], [0, 0.2, 0], 'numismatics:spur')
scene.idle(12)
}
say(scene, 70, 'Щохвилини держава платить твоєму бізнесу', [2.5, 2.5, 2.5], PonderPalette.GREEN, true)
say(scene, 70, 'Платить лише за силу, яку забирають її машини', [2.5, 2.5, 2.5])
say(scene, 70, 'Приклад: 2048 SU — приблизно 1 ¤ за хвилину', [2.5, 2.5, 2.5], PonderPalette.BLUE)
setSpeed(scene, ALL, 0)
scene.idle(10)
say(scene, 70, 'Сили не вистачає — машини стоять, грошей немає', [1.5, 1.5, 2.5], PonderPalette.RED, true)
setSpeed(scene, ALL, 32)
say(scene, 80, 'Хочеш продавати енергію — знайди підстанцію й підключись', [2.5, 2.5, 2.5], null, true)
} }
// --------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------
Ponder.tags(event => { Ponder.tags(event => {
event.createTag('kubejs:createrp', 'kubejs:citizen_guide', 'Держава Create RP', event.createTag('kubejs:createrp', 'kubejs:citizen_guide', 'Держава Create RP',
'Як жити й заробляти в державній економіці: термінал, продаж і покупки посилками, енергія, гроші, земля, робота.', 'Як жити й заробляти в державній економіці',
['kubejs:citizen_guide', 'create:package_frogport', 'computercraft:computer_advanced', 'computercraft:computer_normal', 'computercraft:monitor_advanced', 'create:stressometer']) ['kubejs:citizen_guide', 'create:package_frogport', 'computercraft:computer_advanced', 'computercraft:computer_normal', 'computercraft:monitor_advanced', 'create:stressometer'])
}) })
Ponder.registry(event => { Ponder.registry(event => {
event.create('kubejs:citizen_guide') event.create('kubejs:citizen_guide')
.scene('guide_officials', 'Державні службовці', officialsScene)
.scene('guide_terminal', 'Термінал держави', terminalScene) .scene('guide_terminal', 'Термінал держави', terminalScene)
.scene('guide_sell', 'Продаж державі', FROG_STRUCTURE, sellScene) .scene('guide_sell', 'Продаж державі', FROG_STRUCTURE, sellScene)
.scene('guide_buy', 'Покупки в держави', FROG_STRUCTURE, buyScene) .scene('guide_buy', 'Покупки в держави', FROG_STRUCTURE, buyScene)
@@ -363,6 +507,10 @@ Ponder.registry(event => {
.scene('guide_money', 'Гроші й банк', moneyScene) .scene('guide_money', 'Гроші й банк', moneyScene)
.scene('guide_land', 'Земля й надра', landScene) .scene('guide_land', 'Земля й надра', landScene)
.scene('guide_jobs', 'Робота: ринок праці й пошта', jobsScene) .scene('guide_jobs', 'Робота: ринок праці й пошта', jobsScene)
.scene('guide_cargo', 'Робота: вантажник', cargoScene)
.scene('guide_roads', 'Робота: дорожник', roadsScene)
.scene('guide_miner', 'Робота: шахтар', minerScene)
.scene('guide_operator', 'Робота: оператор заводу', operatorScene)
event.create('create:package_frogport') event.create('create:package_frogport')
.scene('frogport_sell', 'Create RP: продаж державі', FROG_STRUCTURE, sellScene) .scene('frogport_sell', 'Create RP: продаж державі', FROG_STRUCTURE, sellScene)
+13
View File
@@ -0,0 +1,13 @@
name = "Ars Nouveau"
filename = "ars_nouveau-1.21.1-5.13.3.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/TKB6INcv/versions/yWDnir1o/ars_nouveau-1.21.1-5.13.3.jar"
hash-format = "sha512"
hash = "30f188cfc932bd58c95740488732df7e92d98e7345e271b1a223e41a43fc3dd52284d0ff07fc3e8a95e914082f899394eff3a0f37c174d317e6e37fb68b083df"
[update]
[update.modrinth]
mod-id = "TKB6INcv"
version = "yWDnir1o"
@@ -0,0 +1,13 @@
name = "Create Aeronautics and Connected Fluid Vessel Compatability"
filename = "aeroconnectedfluidvessel-1.0.0.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/59EBKVqI/versions/IAyRzWB7/aeroconnectedfluidvessel-1.0.0.jar"
hash-format = "sha512"
hash = "c3e509644350e7028d5c6be057925f793cea5a16086d8896d21fc2fabe20a851286ee40dbf02503466fc5c8a17fb01b445e28f7dea006a22f6e8b1dd495b9ae7"
[update]
[update.modrinth]
mod-id = "59EBKVqI"
version = "IAyRzWB7"
+13
View File
@@ -0,0 +1,13 @@
name = "Create: Central Kitchen"
filename = "create-central-kitchen-2.4.0.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/btq68HMO/versions/TUJIHmUh/create-central-kitchen-2.4.0.jar"
hash-format = "sha512"
hash = "adcdb5a85b2dd727fa2b0563aa9e73d26b58ee3ae57192e049f0c2a1e4a878dc9d07fe20589f6e52e6f4be2ba1bb5ab3a64f5fcf5f1f9a42b9518e7c2380fd23"
[update]
[update.modrinth]
mod-id = "btq68HMO"
version = "TUJIHmUh"
+13
View File
@@ -0,0 +1,13 @@
name = "Create: Connected"
filename = "create_connected-1.3.3-mc1.21.1.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/Vg5TIO6d/versions/Xe7EqzfQ/create_connected-1.3.3-mc1.21.1.jar"
hash-format = "sha512"
hash = "485675693980a266611669857fa9cd348e2a29140b87bf0a8ab3e13c3591422cceaa36b7a2eb90084d35ec1868c8eec9f924383bb4dada2dddcb72e9f09361b0"
[update]
[update.modrinth]
mod-id = "Vg5TIO6d"
version = "Xe7EqzfQ"
+13
View File
@@ -0,0 +1,13 @@
name = "Create Stuff 'N Additions"
filename = "create-stuff-additions1.21.1_v2.1.4b.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/aq9qUUQG/versions/gMWQ1LX9/create-stuff-additions1.21.1_v2.1.4b.jar"
hash-format = "sha512"
hash = "75cd8a0a2f898b3599cb267c26c02691e53f8ca8f6c6c4f16d1a82db8fea4494988f163559cc3a8b471683d5b52353ba065def8846a7ff2073bddf42e68b5e7d"
[update]
[update.modrinth]
mod-id = "aq9qUUQG"
version = "gMWQ1LX9"
@@ -0,0 +1,13 @@
name = "Create Stuff 'N Additions x Sable & Aeronautics Compat"
filename = "SableStuffAdditionsCompat v1.0.3-1.21.1.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/gsAqDfOu/versions/oOYLBz7M/SableStuffAdditionsCompat%20v1.0.3-1.21.1.jar"
hash-format = "sha512"
hash = "f3ab35c1dc840bb42f05ba7d4170169e8db141f67e6e5a5e0b33b0e692c5b86c96ba0593443436bd254598596a27c1643fad39e476329bcc676e768a9ca9ce18"
[update]
[update.modrinth]
mod-id = "gsAqDfOu"
version = "oOYLBz7M"
+13
View File
@@ -0,0 +1,13 @@
name = "CreateBetterFps"
filename = "createbetterfps-1.21.1-1.1.5.jar"
side = "client"
[download]
url = "https://cdn.modrinth.com/data/lMYIHZNH/versions/dxmPYimo/createbetterfps-1.21.1-1.1.5.jar"
hash-format = "sha512"
hash = "d98deec79eefb8e0c8ddda7def8a46f4c66402a213da5242f8ff029f43b844e68914fa31af3c8aed646d131ee9bfac3a63032df399b1f76cc99b5c312f32df24"
[update]
[update.modrinth]
mod-id = "lMYIHZNH"
version = "dxmPYimo"
+13
View File
@@ -0,0 +1,13 @@
name = "CustomNPCs-Unofficial"
filename = "CustomNPCs-Unofficial-NeoForge-1.21.1.20241226.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/vFAmwl6B/versions/5gdSEvLv/CustomNPCs-Unofficial-NeoForge-1.21.1.20241226.jar"
hash-format = "sha512"
hash = "b310a567d938480ed82b285da26e8b5e6925b2450fbcb4fb2ce4bc654465b4f2bee953bfcb32ac0a8e5a0b626bbe2ac13d89c10e59d3d04b8ef996465c78a8bf"
[update]
[update.modrinth]
mod-id = "vFAmwl6B"
version = "5gdSEvLv"
-13
View File
@@ -1,13 +0,0 @@
name = "DAP ur Homies!"
filename = "DAP ur HOMIE (Bully ur Homie).jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/V3QHTHDA/versions/W02uSI93/DAP%20ur%20HOMIE%20%28Bully%20ur%20Homie%29.jar"
hash-format = "sha512"
hash = "e4e519e7d8f67e7e5e3ac506224e2e51258e788fdd374d508132bf867dd11025e756d548ceb103ed90caaac6f668886174fff84314fb3e8c011821c3978d86e5"
[update]
[update.modrinth]
mod-id = "V3QHTHDA"
version = "W02uSI93"
-13
View File
@@ -1,13 +0,0 @@
name = "Easy NPC: Config UI"
filename = "easy_npc_config_ui-neoforge-1.21.1-7.14.0.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/uTGjf7vA/versions/am2FLyOh/easy_npc_config_ui-neoforge-1.21.1-7.14.0.jar"
hash-format = "sha512"
hash = "b5f6dcab0c1c228d399cd9c74cf3e5be8102d2e77e9b4017087896389662f893aca403063781168e780897bb63a74ed5b06ca9b183cda6014c05aab44407b6a1"
[update]
[update.modrinth]
mod-id = "uTGjf7vA"
version = "am2FLyOh"
-13
View File
@@ -1,13 +0,0 @@
name = "Easy NPC: Core"
filename = "easy_npc-neoforge-1.21.1-7.14.0.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/Epm6R3P2/versions/wpGE79aG/easy_npc-neoforge-1.21.1-7.14.0.jar"
hash-format = "sha512"
hash = "073f0bf6ef9e4ace88c4d51ca591906a40adf1098f07893858080265e775e5db8467bd6041b82e67787f9384b08e65a2451b8d932ab9533cb4023c43cb5198e9"
[update]
[update.modrinth]
mod-id = "Epm6R3P2"
version = "wpGE79aG"
-13
View File
@@ -1,13 +0,0 @@
name = "Easy NPC"
filename = "easy_npc_bundle-neoforge-1.21.1-7.14.0.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/CgGEe1h3/versions/rgleNqSl/easy_npc_bundle-neoforge-1.21.1-7.14.0.jar"
hash-format = "sha512"
hash = "7ebe0ebfed3157fe624896105bbad01c3d1c56ae768e995f5b7002609e2f8e60deba9d2ffc14f574517cf0fcef4493ca321946ad07d00e58815df4aecbec3ac1"
[update]
[update.modrinth]
mod-id = "CgGEe1h3"
version = "rgleNqSl"
+13
View File
@@ -0,0 +1,13 @@
name = "Geckolib"
filename = "geckolib-neoforge-1.21.1-4.9.3.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/8BmcQJ2H/versions/Grwn5rUB/geckolib-neoforge-1.21.1-4.9.3.jar"
hash-format = "sha512"
hash = "8dfa5f8c57224a5e34e5098367ea9819ca6dc9c11357cd3062c16da3455c8bd1a483098af7383debc4b9ce8e4d7ab3fdc799b415644eb829da83eb72a7335dfd"
[update]
[update.modrinth]
mod-id = "8BmcQJ2H"
version = "Grwn5rUB"
-13
View File
@@ -1,13 +0,0 @@
name = "Player Animation Library"
filename = "PlayerAnimationLibNeoforge-1.1.4+mc.1.21.1.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/ha1mEyJS/versions/X11AqKQb/PlayerAnimationLibNeoforge-1.1.4%2Bmc.1.21.1.jar"
hash-format = "sha512"
hash = "d3a07aef209ee113a1df14ef74a9f9adecd4f98d506f7ef801e68ff3557864847bf8e2f46e329e54c2223b4160e4976a5e10f39d2aec4087b9110788b6ff3be8"
[update]
[update.modrinth]
mod-id = "ha1mEyJS"
version = "X11AqKQb"
-13
View File
@@ -1,13 +0,0 @@
name = "Sodium Dynamic Lights"
filename = "sodiumdynamiclights-neoforge-1.0.10-1.21.1.jar"
side = "client"
[download]
url = "https://cdn.modrinth.com/data/PxQSWIcD/versions/XI0WLXdn/sodiumdynamiclights-neoforge-1.0.10-1.21.1.jar"
hash-format = "sha512"
hash = "ec19a81cf2dfde255990a457d8f6d7375df53cb94190dce71c4bfe5d5263f4862027ce4aa0af20cb11d56c7c031d5e149b3bdf95bec6343e5bd4552450b14c0a"
[update]
[update.modrinth]
mod-id = "PxQSWIcD"
version = "XI0WLXdn"
-13
View File
@@ -1,13 +0,0 @@
name = "XPlus Autofish (Fabric / Forge / NeoForge)"
filename = "xplus-autofish-1.3.3-neoforged-mc1.21.1.jar"
side = "client"
[download]
url = "https://cdn.modrinth.com/data/2H1rLgy4/versions/nC2iqgow/xplus-autofish-1.3.3-neoforged-mc1.21.1.jar"
hash-format = "sha512"
hash = "e1680e37749e0229972be0feede3d88141c59e04f6bdc66a61238aad950134e132b366f70361a0cf703e132a8bb2b15dc5befa5989caded852e67a2b829ae6f0"
[update]
[update.modrinth]
mod-id = "2H1rLgy4"
version = "nC2iqgow"
+2 -2
View File
@@ -1,12 +1,12 @@
name = "Create RP" name = "Create RP"
author = "Pinecraft-CreateRP" author = "Pinecraft-CreateRP"
version = "0.6.1" version = "0.12.0"
pack-format = "packwiz:1.1.0" pack-format = "packwiz:1.1.0"
[index] [index]
file = "index.toml" file = "index.toml"
hash-format = "sha256" hash-format = "sha256"
hash = "2a8313cb0a107c64dc9c434c0f331fdc545223c9d9293fb7fc57b85ca54256fa" hash = "609cd59a13986968d0b0d47881b6a0b4129c17ac17b1c7c62c26ae7b9634a026"
[versions] [versions]
minecraft = "1.21.1" minecraft = "1.21.1"