From 91e03de96b040df244dc63ffa7b6f7d08312beac Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 10 Nov 2021 02:41:49 +0100 Subject: [PATCH] Blocks of Cogs - Slightly tweaked cogwheel models - Added Encased Cogwheels and Encased Large Cogwheels --- src/generated/resources/.cache/cache | 50 ++-- .../andesite_encased_cogwheel.json | 17 ++ .../andesite_encased_large_cogwheel.json | 17 ++ .../blockstates/brass_encased_cogwheel.json | 17 ++ .../brass_encased_large_cogwheel.json | 17 ++ .../resources/assets/create/lang/en_ud.json | 4 + .../resources/assets/create/lang/en_us.json | 4 + .../assets/create/lang/unfinished/de_de.json | 6 +- .../assets/create/lang/unfinished/es_es.json | 6 +- .../assets/create/lang/unfinished/fr_fr.json | 6 +- .../assets/create/lang/unfinished/it_it.json | 6 +- .../assets/create/lang/unfinished/ja_jp.json | 6 +- .../assets/create/lang/unfinished/ko_kr.json | 6 +- .../assets/create/lang/unfinished/nl_nl.json | 6 +- .../assets/create/lang/unfinished/pl_pl.json | 6 +- .../assets/create/lang/unfinished/pt_br.json | 6 +- .../assets/create/lang/unfinished/ru_ru.json | 6 +- .../assets/create/lang/unfinished/zh_cn.json | 6 +- .../assets/create/lang/unfinished/zh_tw.json | 6 +- .../block/andesite_encased_cogwheel.json | 8 + .../andesite_encased_large_cogwheel.json | 8 + .../models/block/brass_encased_cogwheel.json | 8 + .../block/brass_encased_large_cogwheel.json | 8 + .../item/andesite_encased_cogwheel.json | 8 + .../item/andesite_encased_large_cogwheel.json | 8 + .../models/item/brass_encased_cogwheel.json | 8 + .../item/brass_encased_large_cogwheel.json | 8 + .../data/create/advancements/aesthetics.json | 4 +- .../blocks/andesite_encased_cogwheel.json | 21 ++ .../andesite_encased_large_cogwheel.json | 21 ++ .../blocks/brass_encased_cogwheel.json | 21 ++ .../blocks/brass_encased_large_cogwheel.json | 21 ++ .../minecraft/tags/blocks/mineable/axe.json | 4 + .../tags/blocks/mineable/pickaxe.json | 4 + .../com/simibubi/create/AllBlockPartials.java | 3 +- .../java/com/simibubi/create/AllBlocks.java | 33 +++ .../com/simibubi/create/AllSpriteShifts.java | 12 +- .../com/simibubi/create/AllTileEntities.java | 35 ++- .../contraptions/base/KineticTileEntity.java | 2 +- .../base/ShaftlessCogInstance.java | 48 +++- .../base/ShaftlessLargeCogInstance.java | 20 ++ .../base/SingleRotatingInstance.java | 13 +- .../components/mixer/MixerInstance.java | 11 +- .../relays/elementary/AbstractShaftBlock.java | 2 +- .../BracketedKineticTileEntity.java | 25 ++ .../relays/elementary/CogWheelBlock.java | 37 +++ .../relays/elementary/CogwheelBlockItem.java | 119 +++++---- .../elementary/SimpleKineticTileEntity.java | 9 - .../relays/encased/EncasedCogCTBehaviour.java | 90 +++++++ .../relays/encased/EncasedCogwheelBlock.java | 124 +++++++++ .../relays/encased/EncasedShaftBlock.java | 18 +- .../encased/EncasedShaftTileEntity.java | 15 -- ...dShaftRenderer.java => ShaftRenderer.java} | 4 +- .../relays/encased/ShaftlessCogRenderer.java | 38 +++ .../foundation/data/BuilderTransformers.java | 53 +++- .../foundation/render/PartialBufferer.java | 28 +- .../assets/create/models/block/cogwheel.json | 50 ++-- .../models/block/cogwheel_shaftless.json | 48 ++-- .../models/block/encased_cogwheel/block.json | 55 ++++ .../models/block/encased_cogwheel/item.json | 153 +++++++++++ .../block/encased_large_cogwheel/block.json | 35 +++ .../block/encased_large_cogwheel/item.json | 249 ++++++++++++++++++ .../create/models/block/large_cogwheel.json | 194 +++++++------- .../block/large_cogwheel_shaftless.json | 213 +++++++++++++++ .../block/andesite_encased_cogwheel_side.png | Bin 0 -> 464 bytes ...desite_encased_cogwheel_side_connected.png | Bin 0 -> 899 bytes .../block/brass_encased_cogwheel_side.png | Bin 0 -> 341 bytes .../brass_encased_cogwheel_side_connected.png | Bin 0 -> 469 bytes .../assets/create/textures/block/cogwheel.png | Bin 310 -> 381 bytes .../create/textures/block/cogwheel_axis.png | Bin 0 -> 229 bytes .../create/textures/block/large_cogwheel.png | Bin 435 -> 519 bytes 71 files changed, 1793 insertions(+), 301 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/andesite_encased_cogwheel.json create mode 100644 src/generated/resources/assets/create/blockstates/andesite_encased_large_cogwheel.json create mode 100644 src/generated/resources/assets/create/blockstates/brass_encased_cogwheel.json create mode 100644 src/generated/resources/assets/create/blockstates/brass_encased_large_cogwheel.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_encased_cogwheel.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_encased_large_cogwheel.json create mode 100644 src/generated/resources/assets/create/models/block/brass_encased_cogwheel.json create mode 100644 src/generated/resources/assets/create/models/block/brass_encased_large_cogwheel.json create mode 100644 src/generated/resources/assets/create/models/item/andesite_encased_cogwheel.json create mode 100644 src/generated/resources/assets/create/models/item/andesite_encased_large_cogwheel.json create mode 100644 src/generated/resources/assets/create/models/item/brass_encased_cogwheel.json create mode 100644 src/generated/resources/assets/create/models/item/brass_encased_large_cogwheel.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/andesite_encased_cogwheel.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/andesite_encased_large_cogwheel.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/brass_encased_cogwheel.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/brass_encased_large_cogwheel.json create mode 100644 src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessLargeCogInstance.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileEntity.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogCTBehaviour.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogwheelBlock.java delete mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftTileEntity.java rename src/main/java/com/simibubi/create/content/contraptions/relays/encased/{EncasedShaftRenderer.java => ShaftRenderer.java} (77%) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftlessCogRenderer.java create mode 100644 src/main/resources/assets/create/models/block/encased_cogwheel/block.json create mode 100644 src/main/resources/assets/create/models/block/encased_cogwheel/item.json create mode 100644 src/main/resources/assets/create/models/block/encased_large_cogwheel/block.json create mode 100644 src/main/resources/assets/create/models/block/encased_large_cogwheel/item.json create mode 100644 src/main/resources/assets/create/models/block/large_cogwheel_shaftless.json create mode 100644 src/main/resources/assets/create/textures/block/andesite_encased_cogwheel_side.png create mode 100644 src/main/resources/assets/create/textures/block/andesite_encased_cogwheel_side_connected.png create mode 100644 src/main/resources/assets/create/textures/block/brass_encased_cogwheel_side.png create mode 100644 src/main/resources/assets/create/textures/block/brass_encased_cogwheel_side_connected.png create mode 100644 src/main/resources/assets/create/textures/block/cogwheel_axis.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 044091c4d..1ea4a24c7 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -13,6 +13,8 @@ da63a8be3191d6d72afef6c79e3aea3f607631f9 assets/create/blockstates/andesite_bric 97adf53a7cb99d7652fb39adc957e9e34cbaca47 assets/create/blockstates/andesite_cobblestone_slab.json 96b5284693da168ab8e0809d86515b5f1a7e763f assets/create/blockstates/andesite_cobblestone_stairs.json a92c395c57209141d4cf78ad62facbaf3878a120 assets/create/blockstates/andesite_cobblestone_wall.json +b657c1b88620a6baf98a70f43d74e8b67edfa0e5 assets/create/blockstates/andesite_encased_cogwheel.json +fa2c7368f738ada9bd0e05c3c61b096e6dce61cc assets/create/blockstates/andesite_encased_large_cogwheel.json 9639b901ffdd2ecccab5575c5c9e6c7b5c901e02 assets/create/blockstates/andesite_encased_shaft.json ca9a629472625abf741f02b94ce4578292fb14a7 assets/create/blockstates/andesite_funnel.json 398922758a6219544e5b85c91c9cf8a543b437e5 assets/create/blockstates/andesite_pillar.json @@ -35,6 +37,8 @@ dea175335c5db0abe758cd208dc984c22506a176 assets/create/blockstates/blue_toolbox. ee1299a15fca849eb42bf81507f85a54c167bbfe assets/create/blockstates/brass_belt_funnel.json 8b1dd00adcc7e74c5a9feed069e2610b15a338cb assets/create/blockstates/brass_block.json b8dd6e505943e06706d0718ece620ab3cf943650 assets/create/blockstates/brass_casing.json +5ae1af0842f3c5954cb40f232f642268d4fd6f08 assets/create/blockstates/brass_encased_cogwheel.json +9d74bfe4e343fec771197b4d575cccdbc7ec0fba assets/create/blockstates/brass_encased_large_cogwheel.json 288bad07593a8a2c8efaf44bba0ffb0011d36cd3 assets/create/blockstates/brass_encased_shaft.json adfbd6cc5e44a0f431180aedbe65a19428299d8e assets/create/blockstates/brass_funnel.json 672eedcd3520c6d39603449165a23be9c612c620 assets/create/blockstates/brass_tunnel.json @@ -439,20 +443,20 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -1e39bdca154552acc83fe98a110c02fd06638c01 assets/create/lang/en_ud.json -d9e8e6dc6859a714ecc72ef798db566a46cda77c assets/create/lang/en_us.json -7e200ff83aafe896b1fbe708ab20a726a85807e8 assets/create/lang/unfinished/de_de.json -2b125053c9de03b5faeac24e08c02aac03d3f552 assets/create/lang/unfinished/es_es.json -66f04487d7d22a80ca76881ecb36cba080f1d96e assets/create/lang/unfinished/fr_fr.json -f82aa35e79729d273a92ab1bca2130714ea54cd4 assets/create/lang/unfinished/it_it.json -1d7c7ac3b5ab8ac8add7daf2d44433d8acc7e1d1 assets/create/lang/unfinished/ja_jp.json -c815a0036f7390a4b5ae509a8c565fa23a2216ad assets/create/lang/unfinished/ko_kr.json -462b591336337b89dcf57c371a87e58dbe52083f assets/create/lang/unfinished/nl_nl.json -b5f4311465343c8b1deda440db1d4f64676560b9 assets/create/lang/unfinished/pl_pl.json -794ad4ae225ec6f999b6c7d75f488b3bcaa77528 assets/create/lang/unfinished/pt_br.json -5cf94714252bdf8ca30bcfb25d1c91ef9edc79c2 assets/create/lang/unfinished/ru_ru.json -5900ce619dbe682a52ba9bf23b1b5bae5ba7a9d0 assets/create/lang/unfinished/zh_cn.json -b1d760c5782865bf1178544b48a65d7342ec3675 assets/create/lang/unfinished/zh_tw.json +fbbed20d6dedfde8c78d5d62848d98cb510d8dd4 assets/create/lang/en_ud.json +6b44f48cf4d1533cb01ddf82a38a519536822c11 assets/create/lang/en_us.json +c5a66fe2d67dc993ca9141eed8dba846736d8196 assets/create/lang/unfinished/de_de.json +d7bb5f4cfb4823339cd724fdde5c90e19dd7d27c assets/create/lang/unfinished/es_es.json +2937455238cf3938868cb29f214d8cc6fde3a177 assets/create/lang/unfinished/fr_fr.json +b634af1f37a60ac3399b38088859ddc455003eab assets/create/lang/unfinished/it_it.json +d6d614579c94e24471798058b51a827e4afb01b7 assets/create/lang/unfinished/ja_jp.json +f582da6fd78221a03c40978a799e29239ada6660 assets/create/lang/unfinished/ko_kr.json +25ca96301989075b16728c647397b46342a5ac28 assets/create/lang/unfinished/nl_nl.json +b757c697a8ffb16e6ef88c787a031ad2291ede4b assets/create/lang/unfinished/pl_pl.json +0c765991101a752eed7f80ab68e662df82e209b5 assets/create/lang/unfinished/pt_br.json +f3b9816718a30fea39ed34c133dd2c55e5a3b00b assets/create/lang/unfinished/ru_ru.json +59f45830446bb9e544b43f76a33ca7304d9aceed assets/create/lang/unfinished/zh_cn.json +dedec8adbbf24bd0152725441ec397e615fd1fc1 assets/create/lang/unfinished/zh_tw.json 487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json 3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json @@ -496,6 +500,8 @@ ce05c7fe01f1d491359f4db7914d9dfe44146c90 assets/create/models/block/andesite_bri ea94d40df307d5792934bc532fc2d24d50efe756 assets/create/models/block/andesite_cobblestone_wall_post.json aa5b45c6c657436bd38621344f6728d44ea974ad assets/create/models/block/andesite_cobblestone_wall_side.json 7c0e71f479aeef7bf02f0fb76c4333fa2227b83e assets/create/models/block/andesite_cobblestone_wall_side_tall.json +a239719fd2b985b95e686bbd76acf04a6a08b714 assets/create/models/block/andesite_encased_cogwheel.json +d401506fda2771ac5696d65b747a5a570a003ad3 assets/create/models/block/andesite_encased_large_cogwheel.json 8d4e4a7c6ad6d45c7aa7ca3105a025511571ff26 assets/create/models/block/andesite_funnel_horizontal_pull.json 9841d6a09a09bf4d5d6a39bdc4904d86b3a825f8 assets/create/models/block/andesite_funnel_horizontal_pull_powered.json 86d5df6e365d9b2e9682f0839f61058360828ba2 assets/create/models/block/andesite_funnel_horizontal_push.json @@ -548,6 +554,8 @@ dfc6250e28e12ff193a45891978ec50c406fc0c2 assets/create/models/block/brass_belt_f 97410a12b7c1461f88fb633f26ff566a0636b627 assets/create/models/block/brass_belt_funnel__retracted.json 5adb8b446817eee3a31971d708320c7104d6bbd8 assets/create/models/block/brass_block.json 2e67c147d7c69aabd9ab9f7aa80f60671d5a03aa assets/create/models/block/brass_casing.json +8cb0039684377c27a7fe20bdcacf24f871221478 assets/create/models/block/brass_encased_cogwheel.json +7ab46e52da9ef474f38e5b9eefbed9ba9dc53b78 assets/create/models/block/brass_encased_large_cogwheel.json f7fd1f49857eca94e4135e65c85127510d666e4f assets/create/models/block/brass_funnel_horizontal_pull.json 45a23298ad03fd3b5dc2757dcd7edc18b8cce222 assets/create/models/block/brass_funnel_horizontal_pull_powered.json a9fc7210d44b47202438668f11b31099e82c9ebd assets/create/models/block/brass_funnel_horizontal_push.json @@ -1284,6 +1292,8 @@ d283f86cd05ed378efd82ce46cf49bc83783069b assets/create/models/item/andesite_bric 1ceb0e49f2c46f1d5414d5fd6edfc2bdd3afa6f7 assets/create/models/item/andesite_cobblestone_slab.json b0f664dd6de3d0ee9afcb6223fbcd53b97fa0d65 assets/create/models/item/andesite_cobblestone_stairs.json 8861d656eb6f61320b4d80eb079105705c762079 assets/create/models/item/andesite_cobblestone_wall.json +c8c65b126c2ff1284acedc69a2470a551431bd24 assets/create/models/item/andesite_encased_cogwheel.json +03122ac6e0823ebea9844f4d87fb73440f9e35c4 assets/create/models/item/andesite_encased_large_cogwheel.json bc6e7469744604e578200ea87690e4dd3b25e447 assets/create/models/item/andesite_encased_shaft.json a3866ea9f44e80b64989f2b5f8a9f344da959c87 assets/create/models/item/andesite_funnel.json 75b8b00c2418b9660d35a7fabd0774925cf1c02f assets/create/models/item/andesite_pillar.json @@ -1304,6 +1314,8 @@ c637be1586260cf91e6da57c71c33f4515008227 assets/create/models/item/blue_toolbox. bec96ebf3369d3cffa9bb1b8bf9f2a5cd5d0ef96 assets/create/models/item/blue_valve_handle.json 17d340c3678bd24cb085ba49490b2b4cb341a9e7 assets/create/models/item/brass_block.json f5a18f4279c2e845a5967b1c2f9e807c2bb77afb assets/create/models/item/brass_casing.json +099179a466a2f370dd2c4fea0d841517fa3a558b assets/create/models/item/brass_encased_cogwheel.json +6e60b5939747835b2247cbc4907d633b017abc79 assets/create/models/item/brass_encased_large_cogwheel.json c723011e09203821b6b59cff9de22454c5e4395a assets/create/models/item/brass_encased_shaft.json 12781f22d9b91df903d38bc55c4fe9f75dba8867 assets/create/models/item/brass_funnel.json 965f3f992fde899719506fd584f3fbbbf69af93c assets/create/models/item/brass_hand.json @@ -1741,7 +1753,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json 58880e397902f8ca5b3b59ed4423e626109ddc4c assets/create/sounds.json -5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json +0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json 613e64b44bed959da899fdd54c1cacb227fb33f2 data/create/advancements/andesite_alloy.json 81885c6bfb85792c88aaa7c9b70f58832945d31f data/create/advancements/andesite_casing.json 83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json @@ -2491,6 +2503,8 @@ f2a65149c02a3077f7fb594cc05917e1a5ee9144 data/create/loot_tables/blocks/andesite bd00f2d80d80e0ca0e2af43ba969648175c309b0 data/create/loot_tables/blocks/andesite_cobblestone_slab.json 854e348e18862bbd177f373288b9ffce8f0b1316 data/create/loot_tables/blocks/andesite_cobblestone_stairs.json cc954daff893576280abb6c243f1c1a5ddd1c1b0 data/create/loot_tables/blocks/andesite_cobblestone_wall.json +5c65653d6b806650bbef5330778eb4b4f92c1cdd data/create/loot_tables/blocks/andesite_encased_cogwheel.json +7935444e5cef99d58c2dc26d72f234732b6b5632 data/create/loot_tables/blocks/andesite_encased_large_cogwheel.json 185094cb127cd72a31173a53fdd80592747d3b32 data/create/loot_tables/blocks/andesite_encased_shaft.json d9ca3622cca3b9515133257610aa3b8f6941cd61 data/create/loot_tables/blocks/andesite_funnel.json 8917bac21dba4040013731f142a51a012411469b data/create/loot_tables/blocks/andesite_pillar.json @@ -2513,6 +2527,8 @@ f6e1a4c33cd44d25b9af9509177cce8f735fb910 data/create/loot_tables/blocks/blue_val 092f12d362fab918511350de65f74e5b49f40aa8 data/create/loot_tables/blocks/brass_belt_funnel.json 55930a4ba12c077c616f46fc6aa152d16f0ec889 data/create/loot_tables/blocks/brass_block.json 6be71963a401c7bf1cf4431d33ca42f9d29ff543 data/create/loot_tables/blocks/brass_casing.json +5c65653d6b806650bbef5330778eb4b4f92c1cdd data/create/loot_tables/blocks/brass_encased_cogwheel.json +7935444e5cef99d58c2dc26d72f234732b6b5632 data/create/loot_tables/blocks/brass_encased_large_cogwheel.json 185094cb127cd72a31173a53fdd80592747d3b32 data/create/loot_tables/blocks/brass_encased_shaft.json 092f12d362fab918511350de65f74e5b49f40aa8 data/create/loot_tables/blocks/brass_funnel.json 8b1598dc5d4894d1543d94d2118d229505942b90 data/create/loot_tables/blocks/brass_tunnel.json @@ -3861,8 +3877,8 @@ f6c8f34ceb475546dba5cc6ff288863ea795d20b data/forge/tags/items/storage_blocks/co 2072c51afc5bbc6c9d64fd086803193d8a3c40de data/minecraft/tags/blocks/base_stone_overworld.json 508730d3822c54d355329bf6a33d58071653afad data/minecraft/tags/blocks/beacon_base_blocks.json 69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json -f47cf9ce96ca87d559a38e718c633a9eb68b18e8 data/minecraft/tags/blocks/mineable/axe.json -f0ba598ef6119fdb403b50139ac9b4bc08360483 data/minecraft/tags/blocks/mineable/pickaxe.json +492323734dfc7824d751b0b4afeaaa65ed205d65 data/minecraft/tags/blocks/mineable/axe.json +cc2a55f4113093544d519f3618469acae5d671b3 data/minecraft/tags/blocks/mineable/pickaxe.json f937a7166c62cd33927297d47f1c338c507c6989 data/minecraft/tags/blocks/needs_iron_tool.json 6bcabbc1c0479caa80a0ebc676bb34ce0052efb0 data/minecraft/tags/blocks/rails.json 29e6f7e3d4be9a9b0af1fca5d32fa55e29905ce2 data/minecraft/tags/blocks/slabs.json diff --git a/src/generated/resources/assets/create/blockstates/andesite_encased_cogwheel.json b/src/generated/resources/assets/create/blockstates/andesite_encased_cogwheel.json new file mode 100644 index 000000000..c683c8b3b --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/andesite_encased_cogwheel.json @@ -0,0 +1,17 @@ +{ + "variants": { + "axis=x": { + "model": "create:block/andesite_encased_cogwheel", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "create:block/andesite_encased_cogwheel" + }, + "axis=z": { + "model": "create:block/andesite_encased_cogwheel", + "x": 90, + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_encased_large_cogwheel.json b/src/generated/resources/assets/create/blockstates/andesite_encased_large_cogwheel.json new file mode 100644 index 000000000..502b93d53 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/andesite_encased_large_cogwheel.json @@ -0,0 +1,17 @@ +{ + "variants": { + "axis=x": { + "model": "create:block/andesite_encased_large_cogwheel", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "create:block/andesite_encased_large_cogwheel" + }, + "axis=z": { + "model": "create:block/andesite_encased_large_cogwheel", + "x": 90, + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brass_encased_cogwheel.json b/src/generated/resources/assets/create/blockstates/brass_encased_cogwheel.json new file mode 100644 index 000000000..eb460611b --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/brass_encased_cogwheel.json @@ -0,0 +1,17 @@ +{ + "variants": { + "axis=x": { + "model": "create:block/brass_encased_cogwheel", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "create:block/brass_encased_cogwheel" + }, + "axis=z": { + "model": "create:block/brass_encased_cogwheel", + "x": 90, + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brass_encased_large_cogwheel.json b/src/generated/resources/assets/create/blockstates/brass_encased_large_cogwheel.json new file mode 100644 index 000000000..d294204a4 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/brass_encased_large_cogwheel.json @@ -0,0 +1,17 @@ +{ + "variants": { + "axis=x": { + "model": "create:block/brass_encased_large_cogwheel", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "create:block/brass_encased_large_cogwheel" + }, + "axis=z": { + "model": "create:block/brass_encased_large_cogwheel", + "x": 90, + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index 3db600512..bb1cf6853 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -14,6 +14,8 @@ "block.create.andesite_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", + "block.create.andesite_encased_cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186 p\u01DDs\u0250\u0254u\u018E \u01DD\u0287\u0131s\u01DDpu\u2C6F", + "block.create.andesite_encased_large_cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186 \u01DDb\u0279\u0250\uA780 p\u01DDs\u0250\u0254u\u018E \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_encased_shaft": "\u0287\u025F\u0250\u0265S p\u01DDs\u0250\u0254u\u018E \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_funnel": "\u05DF\u01DDuun\u2132 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0131s\u01DDpu\u2C6F", @@ -36,6 +38,8 @@ "block.create.brass_belt_funnel": "\u05DF\u01DDuun\u2132 \u0287\u05DF\u01DD\u15FA ss\u0250\u0279\u15FA", "block.create.brass_block": "ss\u0250\u0279\u15FA \u025Fo \u029E\u0254o\u05DF\u15FA", "block.create.brass_casing": "bu\u0131s\u0250\u0186 ss\u0250\u0279\u15FA", + "block.create.brass_encased_cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186 p\u01DDs\u0250\u0254u\u018E ss\u0250\u0279\u15FA", + "block.create.brass_encased_large_cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186 \u01DDb\u0279\u0250\uA780 p\u01DDs\u0250\u0254u\u018E ss\u0250\u0279\u15FA", "block.create.brass_encased_shaft": "\u0287\u025F\u0250\u0265S p\u01DDs\u0250\u0254u\u018E ss\u0250\u0279\u15FA", "block.create.brass_funnel": "\u05DF\u01DDuun\u2132 ss\u0250\u0279\u15FA", "block.create.brass_tunnel": "\u05DF\u01DDuun\u27D8 ss\u0250\u0279\u15FA", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index d9525a087..ea516eddf 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -17,6 +17,8 @@ "block.create.andesite_cobblestone_slab": "Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "Andesite Cobblestone Wall", + "block.create.andesite_encased_cogwheel": "Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "Andesite Encased Shaft", "block.create.andesite_funnel": "Andesite Funnel", "block.create.andesite_pillar": "Andesite Pillar", @@ -39,6 +41,8 @@ "block.create.brass_belt_funnel": "Brass Belt Funnel", "block.create.brass_block": "Block of Brass", "block.create.brass_casing": "Brass Casing", + "block.create.brass_encased_cogwheel": "Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "Brass Encased Shaft", "block.create.brass_funnel": "Brass Funnel", "block.create.brass_tunnel": "Brass Tunnel", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index ff15504d5..6f50401e0 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1162", + "_": "Missing Localizations: 1166", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "Andesitbruchsteinstufe", "block.create.andesite_cobblestone_stairs": "Andesitbruchsteintreppe", "block.create.andesite_cobblestone_wall": "Andesitbruchsteinmauer", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "Andesitummantelte Welle", "block.create.andesite_funnel": "Andesit Trichter", "block.create.andesite_pillar": "Andesitsäule", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "Riementrichter aus Messing", "block.create.brass_block": "Messing Block", "block.create.brass_casing": "Messingrahmen", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "Messingummantelte Welle", "block.create.brass_funnel": "Messingtrichter", "block.create.brass_tunnel": "Messingtunnel", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_es.json b/src/generated/resources/assets/create/lang/unfinished/es_es.json index 991fcf4e4..04808ac15 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_es.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_es.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 40", + "_": "Missing Localizations: 44", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "Losa de adoquín de andesita", "block.create.andesite_cobblestone_stairs": "Escaleras de adoquines de andesita", "block.create.andesite_cobblestone_wall": "Muro de adoquines de andesita", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "Eje revestido de andesita", "block.create.andesite_funnel": "Embudo de andesita", "block.create.andesite_pillar": "Poste de andesita", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "Embudo de cinta de latón", "block.create.brass_block": "Bloque de latón", "block.create.brass_casing": "Revestidor de latón", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "Eje revestido de latón", "block.create.brass_funnel": "Embudo de latón", "block.create.brass_tunnel": "Túnel de latón", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index 4a68b5ab6..efcebf00c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1413", + "_": "Missing Localizations: 1417", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "Dalles en pierres d'andésite", "block.create.andesite_cobblestone_stairs": "Escaliers en pierres d'andésite", "block.create.andesite_cobblestone_wall": "Mur en pierres d'andésite", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "Rotor dans un revêtement en andésite", "block.create.andesite_funnel": "Entonnoir en andésite", "block.create.andesite_pillar": "Pilier en andésite", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "Entonnoir en laiton pour tapis roulant", "block.create.brass_block": "Bloc de laiton", "block.create.brass_casing": "Revêtement en laiton", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "Rotor dans un revêtement en laiton", "block.create.brass_funnel": "Entonnoir en laiton", "block.create.brass_tunnel": "Tunnel en laiton", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index 946f5f8cf..32775e151 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 942", + "_": "Missing Localizations: 946", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "Lastra di pietrisco di andesite", "block.create.andesite_cobblestone_stairs": "Scalini di pietrisco di andesite", "block.create.andesite_cobblestone_wall": "Muretto di pietrisco di andesite", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "Albero incassato di andesite", "block.create.andesite_funnel": "Imbuto di andesite", "block.create.andesite_pillar": "Pilastro di andesite", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "Imbuto per nastro di ottone", "block.create.brass_block": "Blocco di ottone", "block.create.brass_casing": "Involucro di ottone", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "Albero incassato di ottone", "block.create.brass_funnel": "Imbuto di ottone", "block.create.brass_tunnel": "Tunnel di ottone", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index 4f4095613..a374547a4 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 49", + "_": "Missing Localizations: 53", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "安山岩の丸石のハーフブロック", "block.create.andesite_cobblestone_stairs": "安山岩の丸石の階段", "block.create.andesite_cobblestone_wall": "安山岩の丸石の塀", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "安山岩のケース入りシャフト", "block.create.andesite_funnel": "安山岩ファンネル", "block.create.andesite_pillar": "安山岩の柱", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "真鍮のベルトファンネル", "block.create.brass_block": "真鍮ブロック", "block.create.brass_casing": "真鍮ケーシング", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "真鍮のケース入りシャフト", "block.create.brass_funnel": "真鍮ファンネル", "block.create.brass_tunnel": "真鍮トンネル", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index 033835960..acc8fcdb5 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 64", + "_": "Missing Localizations: 68", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "안산암 조약돌 반 블록", "block.create.andesite_cobblestone_stairs": "안산암 조약돌 계단", "block.create.andesite_cobblestone_wall": "안산암 조약돌 담장", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "안산암 케이스를 씌운 축", "block.create.andesite_funnel": "안산암 퍼널", "block.create.andesite_pillar": "안산암 기둥", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "황동 퍼널", "block.create.brass_block": "황동 블록", "block.create.brass_casing": "황동 케이스", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "황동 케이스를 씌운 축", "block.create.brass_funnel": "황동 퍼널", "block.create.brass_tunnel": "황동 터널", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 9b0646fa1..538768827 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1792", + "_": "Missing Localizations: 1796", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "UNLOCALIZED: Block of Brass", "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", diff --git a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json index 981a503b5..e52e1dff1 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json +++ b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 40", + "_": "Missing Localizations: 44", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "Andezytowa brukowa płyta", "block.create.andesite_cobblestone_stairs": "Andezytowe brukowe schody", "block.create.andesite_cobblestone_wall": "Andezytowy brukowy murek", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "Andezytowy izolowany wał", "block.create.andesite_funnel": "Andezytowy lejek", "block.create.andesite_pillar": "Andezytowy filar", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "Mosiężny lejek taśmowy", "block.create.brass_block": "Blok mosiądzu", "block.create.brass_casing": "Mosiężna obudowa", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "Mosiężny izolowany wał", "block.create.brass_funnel": "Mosiężny lejek", "block.create.brass_tunnel": "Mosiężny tunel", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 7187e1bbd..f7cc3c0d5 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1640", + "_": "Missing Localizations: 1644", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", "block.create.andesite_funnel": "Funil de Andesito", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "Funil de Esteira de Latão", "block.create.brass_block": "Bloco de Latão", "block.create.brass_casing": "Revestimento de Latão", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "Eixo Revestido com Latão", "block.create.brass_funnel": "Funil de Latão", "block.create.brass_tunnel": "Tunel de Latão", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index 32c14f3c6..551c1bf18 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 45", + "_": "Missing Localizations: 49", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "Андезит-булыжниковая плита", "block.create.andesite_cobblestone_stairs": "Андезит-булыжниковые ступени", "block.create.andesite_cobblestone_wall": "Андезит-булыжниковая стена", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "Вал в андезитовом корпусе", "block.create.andesite_funnel": "Андезитовая воронка", "block.create.andesite_pillar": "Андезитовая колонна", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "Латунная конвейерная воронка", "block.create.brass_block": "Латунный блок", "block.create.brass_casing": "Латунный корпус", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "Вал в латунном корпусе", "block.create.brass_funnel": "Латунная воронка", "block.create.brass_tunnel": "Латунный туннель", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 3b10f4b2b..a4e164bc7 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 44", + "_": "Missing Localizations: 48", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "安山岩圆石台阶", "block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯", "block.create.andesite_cobblestone_wall": "安山岩圆石墙", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "安山传动杆箱", "block.create.andesite_funnel": "安山岩漏斗", "block.create.andesite_pillar": "竖纹安山岩", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "黄铜传送带漏斗", "block.create.brass_block": "黄铜块", "block.create.brass_casing": "黄铜机壳", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "黄铜传动杆箱", "block.create.brass_funnel": "黄铜漏斗", "block.create.brass_tunnel": "黄铜隧道", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json index 4ea2e9bf2..c0e162c02 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 59", + "_": "Missing Localizations: 63", "_": "->------------------------] Game Elements [------------------------<-", @@ -18,6 +18,8 @@ "block.create.andesite_cobblestone_slab": "碎安山岩半磚", "block.create.andesite_cobblestone_stairs": "碎安山岩樓梯", "block.create.andesite_cobblestone_wall": "碎安山岩牆", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", "block.create.andesite_encased_shaft": "安山傳動軸箱", "block.create.andesite_funnel": "安山岩漏斗", "block.create.andesite_pillar": "豎紋安山岩", @@ -40,6 +42,8 @@ "block.create.brass_belt_funnel": "黃銅輸送帶漏斗", "block.create.brass_block": "黃銅磚", "block.create.brass_casing": "黃銅機殼", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", "block.create.brass_encased_shaft": "黃銅傳動軸箱", "block.create.brass_funnel": "黃銅漏斗", "block.create.brass_tunnel": "黃銅物品隧道", diff --git a/src/generated/resources/assets/create/models/block/andesite_encased_cogwheel.json b/src/generated/resources/assets/create/models/block/andesite_encased_cogwheel.json new file mode 100644 index 000000000..16bb11d3b --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_encased_cogwheel.json @@ -0,0 +1,8 @@ +{ + "parent": "create:block/encased_cogwheel/block", + "textures": { + "casing": "create:block/andesite_casing", + "1": "minecraft:block/stripped_dark_oak_log_top", + "side": "create:block/andesite_encased_cogwheel_side" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_encased_large_cogwheel.json b/src/generated/resources/assets/create/models/block/andesite_encased_large_cogwheel.json new file mode 100644 index 000000000..43a02f630 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_encased_large_cogwheel.json @@ -0,0 +1,8 @@ +{ + "parent": "create:block/encased_large_cogwheel/block", + "textures": { + "casing": "create:block/andesite_casing", + "1": "minecraft:block/stripped_dark_oak_log_top", + "side": "create:block/andesite_encased_cogwheel_side_connected" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_encased_cogwheel.json b/src/generated/resources/assets/create/models/block/brass_encased_cogwheel.json new file mode 100644 index 000000000..ac524fa20 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_encased_cogwheel.json @@ -0,0 +1,8 @@ +{ + "parent": "create:block/encased_cogwheel/block", + "textures": { + "casing": "create:block/brass_casing", + "1": "minecraft:block/stripped_dark_oak_log_top", + "side": "create:block/brass_encased_cogwheel_side" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_encased_large_cogwheel.json b/src/generated/resources/assets/create/models/block/brass_encased_large_cogwheel.json new file mode 100644 index 000000000..b3a3f5ea7 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_encased_large_cogwheel.json @@ -0,0 +1,8 @@ +{ + "parent": "create:block/encased_large_cogwheel/block", + "textures": { + "casing": "create:block/brass_casing", + "1": "minecraft:block/stripped_dark_oak_log_top", + "side": "create:block/brass_encased_cogwheel_side_connected" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_encased_cogwheel.json b/src/generated/resources/assets/create/models/item/andesite_encased_cogwheel.json new file mode 100644 index 000000000..7c8aaf164 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/andesite_encased_cogwheel.json @@ -0,0 +1,8 @@ +{ + "parent": "create:block/encased_cogwheel/item", + "textures": { + "casing": "create:block/andesite_casing", + "1": "minecraft:block/stripped_dark_oak_log_top", + "side": "create:block/andesite_encased_cogwheel_side" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_encased_large_cogwheel.json b/src/generated/resources/assets/create/models/item/andesite_encased_large_cogwheel.json new file mode 100644 index 000000000..2b4457878 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/andesite_encased_large_cogwheel.json @@ -0,0 +1,8 @@ +{ + "parent": "create:block/encased_large_cogwheel/item", + "textures": { + "casing": "create:block/andesite_casing", + "1": "minecraft:block/stripped_dark_oak_log_top", + "side": "create:block/andesite_encased_cogwheel_side_connected" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_encased_cogwheel.json b/src/generated/resources/assets/create/models/item/brass_encased_cogwheel.json new file mode 100644 index 000000000..ca72d6475 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/brass_encased_cogwheel.json @@ -0,0 +1,8 @@ +{ + "parent": "create:block/encased_cogwheel/item", + "textures": { + "casing": "create:block/brass_casing", + "1": "minecraft:block/stripped_dark_oak_log_top", + "side": "create:block/brass_encased_cogwheel_side" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_encased_large_cogwheel.json b/src/generated/resources/assets/create/models/item/brass_encased_large_cogwheel.json new file mode 100644 index 000000000..0f81deda2 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/brass_encased_large_cogwheel.json @@ -0,0 +1,8 @@ +{ + "parent": "create:block/encased_large_cogwheel/item", + "textures": { + "casing": "create:block/brass_casing", + "1": "minecraft:block/stripped_dark_oak_log_top", + "side": "create:block/brass_encased_cogwheel_side_connected" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/aesthetics.json b/src/generated/resources/data/create/advancements/aesthetics.json index 59a86f429..d723cbe38 100644 --- a/src/generated/resources/data/create/advancements/aesthetics.json +++ b/src/generated/resources/data/create/advancements/aesthetics.json @@ -28,8 +28,8 @@ "trigger": "create:bracket_apply", "conditions": { "accepted_entries": [ - "create:large_cogwheel", - "create:cogwheel" + "create:cogwheel", + "create:large_cogwheel" ] } }, diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_encased_cogwheel.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_encased_cogwheel.json new file mode 100644 index 000000000..ae87d6dab --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/andesite_encased_cogwheel.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "create:cogwheel" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "functions": [] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_encased_large_cogwheel.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_encased_large_cogwheel.json new file mode 100644 index 000000000..a5ed24978 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/andesite_encased_large_cogwheel.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "create:large_cogwheel" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "functions": [] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/brass_encased_cogwheel.json b/src/generated/resources/data/create/loot_tables/blocks/brass_encased_cogwheel.json new file mode 100644 index 000000000..ae87d6dab --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/brass_encased_cogwheel.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "create:cogwheel" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "functions": [] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/brass_encased_large_cogwheel.json b/src/generated/resources/data/create/loot_tables/blocks/brass_encased_large_cogwheel.json new file mode 100644 index 000000000..a5ed24978 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/brass_encased_large_cogwheel.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "create:large_cogwheel" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "functions": [] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json index 34fd57e8b..d39200c53 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json @@ -6,6 +6,10 @@ "create:large_cogwheel", "create:andesite_encased_shaft", "create:brass_encased_shaft", + "create:andesite_encased_cogwheel", + "create:brass_encased_cogwheel", + "create:andesite_encased_large_cogwheel", + "create:brass_encased_large_cogwheel", "create:gearbox", "create:clutch", "create:gearshift", diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json index 1c1d73e95..9589418b2 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -8,6 +8,10 @@ "create:large_cogwheel", "create:andesite_encased_shaft", "create:brass_encased_shaft", + "create:andesite_encased_cogwheel", + "create:brass_encased_cogwheel", + "create:andesite_encased_large_cogwheel", + "create:brass_encased_large_cogwheel", "create:gearbox", "create:clutch", "create:gearshift", diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index d271870be..cccc00d34 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -17,7 +17,8 @@ public class AllBlockPartials { public static final PartialModel SCHEMATICANNON_CONNECTOR = get("schematicannon/connector"), SCHEMATICANNON_PIPE = get("schematicannon/pipe"), - SHAFTLESS_COGWHEEL = get("cogwheel_shaftless"), SHAFT_HALF = get("shaft_half"), + SHAFTLESS_COGWHEEL = get("cogwheel_shaftless"), SHAFTLESS_LARGE_COGWHEEL = get("large_cogwheel_shaftless"), + SHAFT_HALF = get("shaft_half"), BELT_PULLEY = get("belt_pulley"), BELT_START = get("belt/start"), BELT_MIDDLE = get("belt/middle"), BELT_END = get("belt/end"), BELT_START_BOTTOM = get("belt/start_bottom"), diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 4c0e7a314..814489d72 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -111,6 +111,8 @@ import com.simibubi.create.content.contraptions.relays.encased.ClutchBlock; import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltBlock; import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltGenerator; import com.simibubi.create.content.contraptions.relays.encased.EncasedCTBehaviour; +import com.simibubi.create.content.contraptions.relays.encased.EncasedCogCTBehaviour; +import com.simibubi.create.content.contraptions.relays.encased.EncasedCogwheelBlock; import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; import com.simibubi.create.content.contraptions.relays.encased.GearshiftBlock; import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock; @@ -172,6 +174,7 @@ import com.simibubi.create.foundation.data.ModelGen; import com.simibubi.create.foundation.data.SharedProperties; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.utility.ColorHandlers; +import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.DyeHelper; import com.simibubi.create.foundation.worldgen.OxidizingBlock; import com.tterrag.registrate.providers.RegistrateRecipeProvider; @@ -296,6 +299,36 @@ public class AllBlocks { .transform(axeOrPickaxe()) .register(); + public static final BlockEntry ANDESITE_ENCASED_COGWHEEL = + REGISTRATE.block("andesite_encased_cogwheel", p -> EncasedCogwheelBlock.andesite(false, p)) + .transform(BuilderTransformers.encasedCogwheel("andesite", AllSpriteShifts.ANDESITE_CASING)) + .onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(AllSpriteShifts.ANDESITE_CASING, + Couple.create(AllSpriteShifts.ANDESITE_ENCASED_COGWHEEL_SIDE, + AllSpriteShifts.ANDESITE_ENCASED_COGWHEEL_OTHERSIDE)))) + .transform(axeOrPickaxe()) + .register(); + + public static final BlockEntry BRASS_ENCASED_COGWHEEL = + REGISTRATE.block("brass_encased_cogwheel", p -> EncasedCogwheelBlock.brass(false, p)) + .transform(BuilderTransformers.encasedCogwheel("brass", AllSpriteShifts.BRASS_CASING)) + .onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(AllSpriteShifts.BRASS_CASING, + Couple.create(AllSpriteShifts.BRASS_ENCASED_COGWHEEL_SIDE, + AllSpriteShifts.BRASS_ENCASED_COGWHEEL_OTHERSIDE)))) + .transform(axeOrPickaxe()) + .register(); + + public static final BlockEntry ANDESITE_ENCASED_LARGE_COGWHEEL = + REGISTRATE.block("andesite_encased_large_cogwheel", p -> EncasedCogwheelBlock.andesite(true, p)) + .transform(BuilderTransformers.encasedLargeCogwheel("andesite", AllSpriteShifts.ANDESITE_CASING)) + .transform(axeOrPickaxe()) + .register(); + + public static final BlockEntry BRASS_ENCASED_LARGE_COGWHEEL = + REGISTRATE.block("brass_encased_large_cogwheel", p -> EncasedCogwheelBlock.brass(true, p)) + .transform(BuilderTransformers.encasedLargeCogwheel("brass", AllSpriteShifts.BRASS_CASING)) + .transform(axeOrPickaxe()) + .register(); + public static final BlockEntry GEARBOX = REGISTRATE.block("gearbox", GearboxBlock::new) .initialProperties(SharedProperties::stone) .properties(BlockBehaviour.Properties::noOcclusion) diff --git a/src/main/java/com/simibubi/create/AllSpriteShifts.java b/src/main/java/com/simibubi/create/AllSpriteShifts.java index 94191e773..b4c393dba 100644 --- a/src/main/java/com/simibubi/create/AllSpriteShifts.java +++ b/src/main/java/com/simibubi/create/AllSpriteShifts.java @@ -38,7 +38,11 @@ public class AllSpriteShifts { public static final CTSpriteShiftEntry CRAFTER_FRONT = getCT(CTType.OMNIDIRECTIONAL, "crafter_top", "brass_casing"), CRAFTER_SIDE = getCT(CTType.VERTICAL, "crafter_side"), - CRAFTER_OTHERSIDE = getCT(CTType.HORIZONTAL, "crafter_side"); + CRAFTER_OTHERSIDE = getCT(CTType.HORIZONTAL, "crafter_side"), + ANDESITE_ENCASED_COGWHEEL_SIDE = getCT(CTType.VERTICAL, "andesite_encased_cogwheel_side"), + ANDESITE_ENCASED_COGWHEEL_OTHERSIDE = getCT(CTType.HORIZONTAL, "andesite_encased_cogwheel_side"), + BRASS_ENCASED_COGWHEEL_SIDE = getCT(CTType.VERTICAL, "brass_encased_cogwheel_side"), + BRASS_ENCASED_COGWHEEL_OTHERSIDE = getCT(CTType.HORIZONTAL, "brass_encased_cogwheel_side"); public static final CTSpriteShiftEntry ANDESITE_CASING = omni("andesite_casing"), BRASS_CASING = omni("brass_casing"), COPPER_CASING = omni("copper_casing"), @@ -78,10 +82,8 @@ public class AllSpriteShifts { // private static void populateMaps() { - WoodType[] supportedWoodTypes = new WoodType[] { - WoodType.OAK, WoodType.SPRUCE, WoodType.BIRCH, WoodType.ACACIA, WoodType.JUNGLE, WoodType.DARK_OAK, - WoodType.CRIMSON, WoodType.WARPED - }; + WoodType[] supportedWoodTypes = new WoodType[] { WoodType.OAK, WoodType.SPRUCE, WoodType.BIRCH, WoodType.ACACIA, + WoodType.JUNGLE, WoodType.DARK_OAK, WoodType.CRIMSON, WoodType.WARPED }; Arrays.stream(supportedWoodTypes) .forEach(woodType -> WOODEN_WINDOWS.put(woodType, vertical("palettes/" + woodType.name() + "_window"))); diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 9e052e48c..9df1b57b9 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -3,7 +3,9 @@ package com.simibubi.create; import com.simibubi.create.content.contraptions.base.CutoutRotatingInstance; import com.simibubi.create.content.contraptions.base.HalfShaftInstance; import com.simibubi.create.content.contraptions.base.HorizontalHalfShaftInstance; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.content.contraptions.base.ShaftlessCogInstance; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; import com.simibubi.create.content.contraptions.components.actors.DrillInstance; import com.simibubi.create.content.contraptions.components.actors.DrillRenderer; @@ -101,12 +103,13 @@ import com.simibubi.create.content.contraptions.relays.advanced.sequencer.Sequen import com.simibubi.create.content.contraptions.relays.belt.BeltInstance; import com.simibubi.create.content.contraptions.relays.belt.BeltRenderer; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; +import com.simibubi.create.content.contraptions.relays.elementary.BracketedKineticTileEntity; import com.simibubi.create.content.contraptions.relays.elementary.SimpleKineticTileEntity; import com.simibubi.create.content.contraptions.relays.encased.AdjustablePulleyTileEntity; import com.simibubi.create.content.contraptions.relays.encased.ClutchTileEntity; -import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftRenderer; -import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftTileEntity; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; +import com.simibubi.create.content.contraptions.relays.encased.ShaftRenderer; +import com.simibubi.create.content.contraptions.relays.encased.ShaftlessCogRenderer; import com.simibubi.create.content.contraptions.relays.encased.SplitShaftInstance; import com.simibubi.create.content.contraptions.relays.encased.SplitShaftRenderer; import com.simibubi.create.content.contraptions.relays.gauge.GaugeInstance; @@ -138,10 +141,10 @@ import com.simibubi.create.content.logistics.block.depot.DepotTileEntity; import com.simibubi.create.content.logistics.block.depot.EjectorInstance; import com.simibubi.create.content.logistics.block.depot.EjectorRenderer; import com.simibubi.create.content.logistics.block.depot.EjectorTileEntity; -import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterTileEntity; import com.simibubi.create.content.logistics.block.diodes.BrassDiodeInstance; import com.simibubi.create.content.logistics.block.diodes.BrassDiodeRenderer; import com.simibubi.create.content.logistics.block.diodes.PulseExtenderTileEntity; +import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterTileEntity; import com.simibubi.create.content.logistics.block.funnel.FunnelInstance; import com.simibubi.create.content.logistics.block.funnel.FunnelRenderer; import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; @@ -183,8 +186,8 @@ public class AllTileEntities { .register(); // Kinetics - public static final TileEntityEntry SIMPLE_KINETIC = Create.registrate() - .tileEntity("simple_kinetic", SimpleKineticTileEntity::new) + public static final TileEntityEntry BRACKETED_KINETIC = Create.registrate() + .tileEntity("simple_kinetic", BracketedKineticTileEntity::new) .instance(() -> SingleRotatingInstance::new) .validBlocks(AllBlocks.SHAFT, AllBlocks.COGWHEEL, AllBlocks.LARGE_COGWHEEL) .renderer(() -> KineticTileEntityRenderer::new) @@ -204,18 +207,32 @@ public class AllTileEntities { .renderer(() -> GearboxRenderer::new) .register(); - public static final TileEntityEntry ENCASED_SHAFT = Create.registrate() - .tileEntity("encased_shaft", EncasedShaftTileEntity::new) + public static final TileEntityEntry ENCASED_SHAFT = Create.registrate() + .tileEntity("encased_shaft", KineticTileEntity::new) .instance(() -> ShaftInstance::new) .validBlocks(AllBlocks.ANDESITE_ENCASED_SHAFT, AllBlocks.BRASS_ENCASED_SHAFT, AllBlocks.ENCASED_CHAIN_DRIVE) - .renderer(() -> EncasedShaftRenderer::new) + .renderer(() -> ShaftRenderer::new) + .register(); + + public static final TileEntityEntry ENCASED_COGWHEEL = Create.registrate() + .tileEntity("encased_cogwheel", SimpleKineticTileEntity::new) + .instance(() -> ShaftlessCogInstance::small) + .validBlocks(AllBlocks.ANDESITE_ENCASED_COGWHEEL, AllBlocks.BRASS_ENCASED_COGWHEEL) + .renderer(() -> ShaftlessCogRenderer::small) + .register(); + + public static final TileEntityEntry ENCASED_LARGE_COGWHEEL = Create.registrate() + .tileEntity("encased_large_cogwheel", SimpleKineticTileEntity::new) + .instance(() -> ShaftlessCogInstance::large) + .validBlocks(AllBlocks.ANDESITE_ENCASED_LARGE_COGWHEEL, AllBlocks.BRASS_ENCASED_LARGE_COGWHEEL) + .renderer(() -> ShaftlessCogRenderer::large) .register(); public static final TileEntityEntry ADJUSTABLE_PULLEY = Create.registrate() .tileEntity("adjustable_pulley", AdjustablePulleyTileEntity::new) .instance(() -> ShaftInstance::new) .validBlocks(AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT) - .renderer(() -> EncasedShaftRenderer::new) + .renderer(() -> ShaftRenderer::new) .register(); public static final TileEntityEntry ENCASED_FAN = Create.registrate() diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java index e6ac2d7f7..d006469e6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java @@ -48,7 +48,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; -public abstract class KineticTileEntity extends SmartTileEntity +public class KineticTileEntity extends SmartTileEntity implements IHaveGoggleInformation, IHaveHoveringInformation, IInstanceRendered { public @Nullable Long network; diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java index 4cbb1ebca..748843051 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java @@ -2,19 +2,49 @@ package com.simibubi.create.content.contraptions.base; import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.MaterialManager; +import com.jozufozu.flywheel.core.PartialModel; +import com.jozufozu.flywheel.util.transform.MatrixTransformStack; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Vector3f; import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.render.AllMaterialSpecs; + +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; public class ShaftlessCogInstance extends SingleRotatingInstance { - public ShaftlessCogInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } + private boolean large; - @Override - protected Instancer getModel() { - return materialManager.defaultSolid() - .material(AllMaterialSpecs.ROTATING) - .getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, tile.getBlockState()); + public static ShaftlessCogInstance small(MaterialManager modelManager, KineticTileEntity tile) { + return new ShaftlessCogInstance(modelManager, tile, false); } + + public static ShaftlessCogInstance large(MaterialManager modelManager, KineticTileEntity tile) { + return new ShaftlessCogInstance(modelManager, tile, true); + } + + public ShaftlessCogInstance(MaterialManager modelManager, KineticTileEntity tile, boolean large) { + super(modelManager, tile); + this.large = large; + } + + @Override + protected Instancer getModel() { + BlockState referenceState = tile.getBlockState(); + Direction facing = + Direction.fromAxisAndDirection(referenceState.getValue(BlockStateProperties.AXIS), AxisDirection.POSITIVE); + PartialModel partial = large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL; + + return getRotatingMaterial().getModel(partial, referenceState, facing, () -> { + PoseStack poseStack = new PoseStack(); + new MatrixTransformStack(poseStack).centre() + .rotateToFace(facing) + .multiply(Vector3f.XN.rotationDegrees(90)) + .unCentre(); + return poseStack; + }); + } + } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessLargeCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessLargeCogInstance.java new file mode 100644 index 000000000..2d722039c --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessLargeCogInstance.java @@ -0,0 +1,20 @@ +package com.simibubi.create.content.contraptions.base; + +import com.jozufozu.flywheel.backend.instancing.Instancer; +import com.jozufozu.flywheel.backend.material.MaterialManager; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.foundation.render.AllMaterialSpecs; + +public class ShaftlessLargeCogInstance extends SingleRotatingInstance { + + public ShaftlessLargeCogInstance(MaterialManager modelManager, KineticTileEntity tile) { + super(modelManager, tile); + } + + @Override + protected Instancer getModel() { + return materialManager.defaultSolid() + .material(AllMaterialSpecs.ROTATING) + .getModel(AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL, tile.getBlockState()); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/SingleRotatingInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/SingleRotatingInstance.java index c25f168f1..7e90d602d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/SingleRotatingInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/SingleRotatingInstance.java @@ -7,12 +7,15 @@ import net.minecraft.world.level.block.state.BlockState; public class SingleRotatingInstance extends KineticTileInstance { - protected final RotatingData rotatingModel; - + protected RotatingData rotatingModel; + public SingleRotatingInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - - rotatingModel = setup(getModel().createInstance()); + super(modelManager, tile); + } + + @Override + public void init() { + rotatingModel = setup(getModel().createInstance()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java index 96b958b95..7ad3b6b36 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java @@ -1,11 +1,13 @@ package com.simibubi.create.content.contraptions.components.mixer; import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; +import com.jozufozu.flywheel.backend.instancing.Instancer; import com.jozufozu.flywheel.backend.material.MaterialManager; import com.jozufozu.flywheel.core.materials.oriented.OrientedData; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.content.contraptions.base.ShaftlessCogInstance; +import com.simibubi.create.foundation.render.AllMaterialSpecs; import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.core.Direction; @@ -17,7 +19,7 @@ public class MixerInstance extends ShaftlessCogInstance implements IDynamicInsta private final MechanicalMixerTileEntity mixer; public MixerInstance(MaterialManager dispatcher, MechanicalMixerTileEntity tile) { - super(dispatcher, tile); + super(dispatcher, tile, false); this.mixer = tile; mixerHead = getRotatingMaterial().getModel(AllBlockPartials.MECHANICAL_MIXER_HEAD, blockState) @@ -35,6 +37,13 @@ public class MixerInstance extends ShaftlessCogInstance implements IDynamicInsta transformPole(renderedHeadOffset); transformHead(renderedHeadOffset); } + + @Override + protected Instancer getModel() { + return materialManager.defaultSolid() + .material(AllMaterialSpecs.ROTATING) + .getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, tile.getBlockState()); + } @Override public void beginFrame() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/AbstractShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/AbstractShaftBlock.java index 6717b0086..0d07955e6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/AbstractShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/AbstractShaftBlock.java @@ -123,7 +123,7 @@ public abstract class AbstractShaftBlock extends RotatedPillarKineticBlock @Override public BlockEntityType getTileEntityType() { - return AllTileEntities.SIMPLE_KINETIC.get(); + return AllTileEntities.BRACKETED_KINETIC.get(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileEntity.java new file mode 100644 index 000000000..bf06260ee --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticTileEntity.java @@ -0,0 +1,25 @@ +package com.simibubi.create.content.contraptions.relays.elementary; + +import java.util.List; + +import com.simibubi.create.foundation.advancement.AllTriggers; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public class BracketedKineticTileEntity extends SimpleKineticTileEntity { + + public BracketedKineticTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + } + + @Override + public void addBehaviours(List behaviours) { + behaviours.add(new BracketedTileEntityBehaviour(this, state -> state.getBlock() instanceof AbstractShaftBlock) + .withTrigger(state -> AllTriggers.BRACKET_APPLY_TRIGGER.constructTriggerFor(state.getBlock()))); + super.addBehaviours(behaviours); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java index a3b4a40d6..f5705857c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java @@ -5,13 +5,19 @@ import javax.annotation.ParametersAreNonnullByDefault; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.base.IRotate; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock; +import com.simibubi.create.content.contraptions.relays.encased.EncasedCogwheelBlock; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -20,12 +26,14 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CogWheelBlock extends AbstractShaftBlock implements ICogWheel { + boolean isLarge; protected CogWheelBlock(boolean large, Properties properties) { @@ -61,6 +69,35 @@ public class CogWheelBlock extends AbstractShaftBlock implements ICogWheel { return isValidCogwheelPosition(ICogWheel.isLargeCog(state), worldIn, pos, state.getValue(AXIS)); } + @Override + public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, + BlockHitResult ray) { + if (player.isShiftKeyDown() || !player.mayBuild()) + return InteractionResult.PASS; + + ItemStack heldItem = player.getItemInHand(hand); + EncasedCogwheelBlock[] encasedBlocks = isLarge + ? new EncasedCogwheelBlock[] { AllBlocks.ANDESITE_ENCASED_LARGE_COGWHEEL.get(), + AllBlocks.BRASS_ENCASED_LARGE_COGWHEEL.get() } + : new EncasedCogwheelBlock[] { AllBlocks.ANDESITE_ENCASED_COGWHEEL.get(), + AllBlocks.BRASS_ENCASED_COGWHEEL.get() }; + + for (EncasedCogwheelBlock encasedCog : encasedBlocks) { + if (!encasedCog.getCasing() + .isIn(heldItem)) + continue; + + if (world.isClientSide) + return InteractionResult.SUCCESS; + + KineticTileEntity.switchToBlockState(world, pos, encasedCog.defaultBlockState() + .setValue(AXIS, state.getValue(AXIS))); + return InteractionResult.SUCCESS; + } + + return InteractionResult.PASS; + } + public static boolean isValidCogwheelPosition(boolean large, LevelReader worldIn, BlockPos pos, Axis cogAxis) { for (Direction facing : Iterate.directions) { if (facing.getAxis() == cogAxis) diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java index a5b86d03f..3a164a5c2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java @@ -8,6 +8,8 @@ import java.util.function.Predicate; import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; +import com.simibubi.create.content.contraptions.base.IRotate; +import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.placement.IPlacementHelper; @@ -41,7 +43,8 @@ public class CogwheelBlockItem extends BlockItem { large = block.isLarge; placementHelperId = PlacementHelpers.register(large ? new LargeCogHelper() : new SmallCogHelper()); - integratedCogHelperId = PlacementHelpers.register(large ? new IntegratedLargeCogHelper() : new IntegratedSmallCogHelper()); + integratedCogHelperId = + PlacementHelpers.register(large ? new IntegratedLargeCogHelper() : new IntegratedSmallCogHelper()); } @Override @@ -54,14 +57,16 @@ public class CogwheelBlockItem extends BlockItem { Player player = context.getPlayer(); BlockHitResult ray = new BlockHitResult(context.getClickLocation(), context.getClickedFace(), pos, true); if (helper.matchesState(state) && player != null && !player.isShiftKeyDown()) { - return helper.getOffset(player, world, state, pos, ray).placeInWorld(world, this, player, context.getHand(), ray); + return helper.getOffset(player, world, state, pos, ray) + .placeInWorld(world, this, player, context.getHand(), ray); } if (integratedCogHelperId != -1) { helper = PlacementHelpers.get(integratedCogHelperId); if (helper.matchesState(state) && player != null && !player.isShiftKeyDown()) { - return helper.getOffset(player, world, state, pos, ray).placeInWorld(world, this, player, context.getHand(), ray); + return helper.getOffset(player, world, state, pos, ray) + .placeInWorld(world, this, player, context.getHand(), ray); } } @@ -93,7 +98,7 @@ public class CogwheelBlockItem extends BlockItem { for (int offset1 : Iterate.positiveAndNegative) { for (int offset2 : Iterate.positiveAndNegative) { BlockPos connectedPos = pos.relative(d1, offset1) - .relative(d2, offset2); + .relative(d2, offset2); BlockState blockState = world.getBlockState(connectedPos); if (!(blockState.getBlock() instanceof CogWheelBlock)) continue; @@ -117,26 +122,27 @@ public class CogwheelBlockItem extends BlockItem { } @Override - public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, BlockHitResult ray) { + public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, + BlockHitResult ray) { if (hitOnShaft(state, ray)) return PlacementOffset.fail(); - if (!((CogWheelBlock) state.getBlock()).isLarge) { - List directions = - IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), state.getValue(AXIS)); + if (!ICogWheel.isLargeCog(state)) { + Axis axis = ((IRotate) state.getBlock()).getRotationAxis(state); + List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), axis); for (Direction dir : directions) { BlockPos newPos = pos.relative(dir); - if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, state.getValue(AXIS))) + if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, axis)) continue; if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) + .getMaterial() + .isReplaceable()) continue; - return PlacementOffset.success(newPos, s -> s.setValue(AXIS, state.getValue(AXIS))); + return PlacementOffset.success(newPos, s -> s.setValue(AXIS, axis)); } @@ -156,25 +162,26 @@ public class CogwheelBlockItem extends BlockItem { } @Override - public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, BlockHitResult ray) { + public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, + BlockHitResult ray) { if (hitOnShaft(state, ray)) return PlacementOffset.fail(); - if (((CogWheelBlock) state.getBlock()).isLarge) { - Direction side = IPlacementHelper.orderedByDistanceOnlyAxis(pos, ray.getLocation(), state.getValue(AXIS)) - .get(0); - List directions = - IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), state.getValue(AXIS)); + if (ICogWheel.isLargeCog(state)) { + Axis axis = ((IRotate) state.getBlock()).getRotationAxis(state); + Direction side = IPlacementHelper.orderedByDistanceOnlyAxis(pos, ray.getLocation(), axis) + .get(0); + List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), axis); for (Direction dir : directions) { BlockPos newPos = pos.relative(dir) - .relative(side); + .relative(side); if (!CogWheelBlock.isValidCogwheelPosition(true, world, newPos, dir.getAxis())) continue; if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) + .getMaterial() + .isReplaceable()) continue; return PlacementOffset.success(newPos, s -> s.setValue(AXIS, dir.getAxis())); @@ -192,41 +199,43 @@ public class CogwheelBlockItem extends BlockItem { @Override public Predicate getStatePredicate() { - return s -> s.getBlock() instanceof CogWheelBlock; + return s -> ICogWheel.isSmallCog(s) || ICogWheel.isLargeCog(s); } @Override - public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, BlockHitResult ray) { + public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, + BlockHitResult ray) { // diagonal gears of different size - Direction closest = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), state.getValue(AXIS)) - .get(0); - List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), - state.getValue(AXIS), d -> d.getAxis() != closest.getAxis()); + Axis axis = ((IRotate) state.getBlock()).getRotationAxis(state); + Direction closest = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), axis) + .get(0); + List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), axis, + d -> d.getAxis() != closest.getAxis()); for (Direction dir : directions) { BlockPos newPos = pos.relative(dir) - .relative(closest); + .relative(closest); if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) + .getMaterial() + .isReplaceable()) continue; - if (!CogWheelBlock.isValidCogwheelPosition(ICogWheel.isLargeCog(state), world, newPos, state.getValue(AXIS))) + if (!CogWheelBlock.isValidCogwheelPosition(ICogWheel.isLargeCog(state), world, newPos, axis)) continue; - return PlacementOffset.success(newPos, s -> s.setValue(AXIS, state.getValue(AXIS))); + return PlacementOffset.success(newPos, s -> s.setValue(AXIS, axis)); } return PlacementOffset.fail(); } protected boolean hitOnShaft(BlockState state, BlockHitResult ray) { - return AllShapes.SIX_VOXEL_POLE.get(state.getValue(AXIS)) - .bounds() - .inflate(0.001) - .contains(ray.getLocation() - .subtract(ray.getLocation() - .align(Iterate.axisSet))); + return AllShapes.SIX_VOXEL_POLE.get(((IRotate) state.getBlock()).getRotationAxis(state)) + .bounds() + .inflate(0.001) + .contains(ray.getLocation() + .subtract(ray.getLocation() + .align(Iterate.axisSet))); } } @@ -244,16 +253,19 @@ public class CogwheelBlockItem extends BlockItem { } @Override - public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, BlockHitResult ray) { + public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, + BlockHitResult ray) { Direction face = ray.getDirection(); Axis newAxis; if (state.hasProperty(HorizontalKineticBlock.HORIZONTAL_FACING)) newAxis = state.getValue(HorizontalKineticBlock.HORIZONTAL_FACING) - .getAxis(); + .getAxis(); else if (state.hasProperty(DirectionalKineticBlock.FACING)) newAxis = state.getValue(DirectionalKineticBlock.FACING) - .getAxis(); + .getAxis(); + else if (state.hasProperty(RotatedPillarKineticBlock.AXIS)) + newAxis = state.getValue(RotatedPillarKineticBlock.AXIS); else newAxis = Axis.Y; @@ -261,15 +273,15 @@ public class CogwheelBlockItem extends BlockItem { return PlacementOffset.fail(); List directions = - IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), face.getAxis(), newAxis); + IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), face.getAxis(), newAxis); for (Direction d : directions) { BlockPos newPos = pos.relative(face) - .relative(d); + .relative(d); if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) + .getMaterial() + .isReplaceable()) continue; if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, newAxis)) @@ -297,16 +309,19 @@ public class CogwheelBlockItem extends BlockItem { } @Override - public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, BlockHitResult ray) { + public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, + BlockHitResult ray) { Direction face = ray.getDirection(); Axis newAxis; if (state.hasProperty(HorizontalKineticBlock.HORIZONTAL_FACING)) newAxis = state.getValue(HorizontalKineticBlock.HORIZONTAL_FACING) - .getAxis(); + .getAxis(); else if (state.hasProperty(DirectionalKineticBlock.FACING)) newAxis = state.getValue(DirectionalKineticBlock.FACING) - .getAxis(); + .getAxis(); + else if (state.hasProperty(RotatedPillarKineticBlock.AXIS)) + newAxis = state.getValue(RotatedPillarKineticBlock.AXIS); else newAxis = Axis.Y; @@ -319,16 +334,16 @@ public class CogwheelBlockItem extends BlockItem { BlockPos newPos = pos.relative(d); if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) + .getMaterial() + .isReplaceable()) continue; if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, newAxis)) return PlacementOffset.fail(); return PlacementOffset.success() - .at(newPos) - .withTransform(s -> s.setValue(CogWheelBlock.AXIS, newAxis)); + .at(newPos) + .withTransform(s -> s.setValue(CogWheelBlock.AXIS, newAxis)); } return PlacementOffset.fail(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/SimpleKineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/SimpleKineticTileEntity.java index d5a64ccc8..647b60bb0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/SimpleKineticTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/SimpleKineticTileEntity.java @@ -4,8 +4,6 @@ import java.util.List; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -18,13 +16,6 @@ public class SimpleKineticTileEntity extends KineticTileEntity { super(type, pos, state); } - @Override - public void addBehaviours(List behaviours) { - behaviours.add(new BracketedTileEntityBehaviour(this, state -> state.getBlock() instanceof AbstractShaftBlock) - .withTrigger(state -> AllTriggers.BRACKET_APPLY_TRIGGER.constructTriggerFor(state.getBlock()))); - super.addBehaviours(behaviours); - } - @Override public AABB makeRenderBoundingBox() { return new AABB(worldPosition).inflate(1); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogCTBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogCTBehaviour.java new file mode 100644 index 000000000..ce055f18a --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogCTBehaviour.java @@ -0,0 +1,90 @@ +package com.simibubi.create.content.contraptions.relays.encased; + +import static com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock.AXIS; + +import com.simibubi.create.content.contraptions.base.IRotate; +import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; +import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; +import com.simibubi.create.foundation.utility.Couple; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.state.BlockState; + +public class EncasedCogCTBehaviour extends EncasedCTBehaviour { + + private Couple sideShifts; + private boolean large; + + public EncasedCogCTBehaviour(CTSpriteShiftEntry shift) { + this(shift, null); + } + + public EncasedCogCTBehaviour(CTSpriteShiftEntry shift, Couple sideShifts) { + super(shift); + large = sideShifts == null; + this.sideShifts = sideShifts; + } + + @Override + public boolean connectsTo(BlockState state, BlockState other, BlockAndTintGetter reader, BlockPos pos, + BlockPos otherPos, Direction face) { + Axis axis = state.getValue(AXIS); + if (large || axis == face.getAxis()) + return super.connectsTo(state, other, reader, pos, otherPos, face); + + if (other == state) + return true; + + BlockState blockState = reader.getBlockState(otherPos.relative(face)); + if (!ICogWheel.isLargeCog(blockState)) + return false; + + return ((IRotate) blockState.getBlock()).getRotationAxis(blockState) == axis; + } + + @Override + protected boolean reverseUVs(BlockState state, Direction face) { + return state.getValue(AXIS) + .isHorizontal() + && face.getAxis() + .isHorizontal() + && face.getAxisDirection() == AxisDirection.POSITIVE; + } + + @Override + protected boolean reverseUVsVertically(BlockState state, Direction face) { + if (!large && state.getValue(AXIS) == Axis.X && face.getAxis() == Axis.Z) + return face != Direction.SOUTH; + return super.reverseUVsVertically(state, face); + } + + @Override + protected boolean reverseUVsHorizontally(BlockState state, Direction face) { + if (large) + return super.reverseUVsHorizontally(state, face); + + if (state.getValue(AXIS) + .isVertical() + && face.getAxis() + .isHorizontal()) + return true; + + if (state.getValue(AXIS) == Axis.Z && face == Direction.DOWN) + return true; + + return super.reverseUVsHorizontally(state, face); + } + + @Override + public CTSpriteShiftEntry get(BlockState state, Direction direction) { + Axis axis = state.getValue(AXIS); + if (large || axis == direction.getAxis()) + return super.get(state, direction); + return sideShifts.get(axis == Axis.X || axis == Axis.Z && direction.getAxis() == Axis.X); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogwheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogwheelBlock.java new file mode 100644 index 000000000..17729968d --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCogwheelBlock.java @@ -0,0 +1,124 @@ +package com.simibubi.create.content.contraptions.relays.encased; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.base.CasingBlock; +import com.simibubi.create.content.contraptions.base.IRotate; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; +import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; +import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; +import com.simibubi.create.content.contraptions.relays.elementary.SimpleKineticTileEntity; +import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; +import com.simibubi.create.content.schematics.ItemRequirement; +import com.simibubi.create.foundation.block.ITE; +import com.tterrag.registrate.util.entry.BlockEntry; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public class EncasedCogwheelBlock extends RotatedPillarKineticBlock + implements ICogWheel, ITE, ISpecialBlockItemRequirement { + + boolean isLarge; + private BlockEntry casing; + + public static EncasedCogwheelBlock andesite(boolean large, Properties properties) { + return new EncasedCogwheelBlock(large, properties, AllBlocks.ANDESITE_CASING); + } + + public static EncasedCogwheelBlock brass(boolean large, Properties properties) { + return new EncasedCogwheelBlock(large, properties, AllBlocks.BRASS_CASING); + } + + public EncasedCogwheelBlock(boolean large, Properties properties, BlockEntry casing) { + super(properties); + isLarge = large; + this.casing = casing; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + BlockState placedOn = context.getLevel() + .getBlockState(context.getClickedPos() + .relative(context.getClickedFace() + .getOpposite())); + BlockState stateForPlacement = super.getStateForPlacement(context); + if (ICogWheel.isSmallCog(placedOn)) + stateForPlacement = + stateForPlacement.setValue(AXIS, ((IRotate) placedOn.getBlock()).getRotationAxis(placedOn)); + return stateForPlacement; + } + + public BlockEntry getCasing() { + return casing; + } + + @Override + public boolean skipRendering(BlockState pState, BlockState pAdjacentBlockState, Direction pDirection) { + return pState == pAdjacentBlockState; + } + + @Override + public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) { + if (context.getLevel().isClientSide) + return InteractionResult.SUCCESS; + context.getLevel() + .levelEvent(2001, context.getClickedPos(), Block.getId(state)); + KineticTileEntity.switchToBlockState(context.getLevel(), context.getClickedPos(), + (isLarge ? AllBlocks.LARGE_COGWHEEL : AllBlocks.COGWHEEL).getDefaultState() + .setValue(AXIS, state.getValue(AXIS))); + return InteractionResult.SUCCESS; + } + + @Override + public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) { + return false; + } + + @Override + public boolean isSmallCog() { + return !isLarge; + } + + @Override + public boolean isLargeCog() { + return isLarge; + } + + @Override + public boolean canSurvive(BlockState state, LevelReader worldIn, BlockPos pos) { + return CogWheelBlock.isValidCogwheelPosition(ICogWheel.isLargeCog(state), worldIn, pos, state.getValue(AXIS)); + } + + @Override + public Axis getRotationAxis(BlockState state) { + return state.getValue(AXIS); + } + + @Override + public ItemRequirement getRequiredItems(BlockState state, BlockEntity te) { + return ItemRequirement + .of(isLarge ? AllBlocks.LARGE_COGWHEEL.getDefaultState() : AllBlocks.COGWHEEL.getDefaultState(), te); + } + + @Override + public Class getTileEntityClass() { + return SimpleKineticTileEntity.class; + } + + @Override + public BlockEntityType getTileEntityType() { + return isLarge ? AllTileEntities.ENCASED_LARGE_COGWHEEL.get() : AllTileEntities.ENCASED_COGWHEEL.get(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java index 0643c82e0..3dc35add9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java @@ -16,7 +16,8 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -public class EncasedShaftBlock extends AbstractEncasedShaftBlock implements ITE, ISpecialBlockItemRequirement { +public class EncasedShaftBlock extends AbstractEncasedShaftBlock + implements ITE, ISpecialBlockItemRequirement { private BlockEntry casing; @@ -41,8 +42,11 @@ public class EncasedShaftBlock extends AbstractEncasedShaftBlock implements ITE< public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) { if (context.getLevel().isClientSide) return InteractionResult.SUCCESS; - context.getLevel().levelEvent(2001, context.getClickedPos(), Block.getId(state)); - KineticTileEntity.switchToBlockState(context.getLevel(), context.getClickedPos(), AllBlocks.SHAFT.getDefaultState().setValue(AXIS, state.getValue(AXIS))); + context.getLevel() + .levelEvent(2001, context.getClickedPos(), Block.getId(state)); + KineticTileEntity.switchToBlockState(context.getLevel(), context.getClickedPos(), + AllBlocks.SHAFT.getDefaultState() + .setValue(AXIS, state.getValue(AXIS))); return InteractionResult.SUCCESS; } @@ -50,14 +54,14 @@ public class EncasedShaftBlock extends AbstractEncasedShaftBlock implements ITE< public ItemRequirement getRequiredItems(BlockState state, BlockEntity te) { return ItemRequirement.of(AllBlocks.SHAFT.getDefaultState(), te); } - + @Override - public Class getTileEntityClass() { - return EncasedShaftTileEntity.class; + public Class getTileEntityClass() { + return KineticTileEntity.class; } @Override - public BlockEntityType getTileEntityType() { + public BlockEntityType getTileEntityType() { return AllTileEntities.ENCASED_SHAFT.get(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftTileEntity.java deleted file mode 100644 index 3ced52bf3..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftTileEntity.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; - -public class EncasedShaftTileEntity extends KineticTileEntity { - - public EncasedShaftTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { - super(type, pos, state); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftRenderer.java similarity index 77% rename from src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftRenderer.java rename to src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftRenderer.java index 3e0397825..b70afbf45 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftRenderer.java @@ -6,9 +6,9 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.level.block.state.BlockState; -public class EncasedShaftRenderer extends KineticTileEntityRenderer { +public class ShaftRenderer extends KineticTileEntityRenderer { - public EncasedShaftRenderer(BlockEntityRendererProvider.Context context) { + public ShaftRenderer(BlockEntityRendererProvider.Context context) { super(context); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftlessCogRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftlessCogRenderer.java new file mode 100644 index 000000000..c82b5f669 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftlessCogRenderer.java @@ -0,0 +1,38 @@ +package com.simibubi.create.content.contraptions.relays.encased; + +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.SuperByteBuffer; + +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.AxisDirection; + +public class ShaftlessCogRenderer extends KineticTileEntityRenderer { + + private boolean large; + + public static ShaftlessCogRenderer small(BlockEntityRendererProvider.Context context) { + return new ShaftlessCogRenderer(context, false); + } + + public static ShaftlessCogRenderer large(BlockEntityRendererProvider.Context context) { + return new ShaftlessCogRenderer(context, true); + } + + public ShaftlessCogRenderer(BlockEntityRendererProvider.Context context, boolean large) { + super(context); + this.large = large; + } + + @Override + protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { + return PartialBufferer.getFacingVertical( + large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL, te.getBlockState(), + Direction.fromAxisAndDirection(te.getBlockState() + .getValue(EncasedCogwheelBlock.AXIS), AxisDirection.POSITIVE)); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index 3edb9231c..5551e4ed7 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -8,6 +8,7 @@ import static com.simibubi.create.foundation.data.CreateRegistrate.connectedText import java.util.HashMap; import java.util.Map; +import java.util.function.Supplier; import javax.annotation.Nullable; @@ -19,6 +20,8 @@ import com.simibubi.create.content.contraptions.base.CasingBlock; import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock; import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonGenerator; import com.simibubi.create.content.contraptions.relays.encased.EncasedCTBehaviour; +import com.simibubi.create.content.contraptions.relays.encased.EncasedCogCTBehaviour; +import com.simibubi.create.content.contraptions.relays.encased.EncasedCogwheelBlock; import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock.Shape; @@ -36,6 +39,7 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Rarity; +import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; @@ -61,8 +65,8 @@ public class BuilderTransformers { return builder -> builder.initialProperties(SharedProperties::stone) .properties(BlockBehaviour.Properties::noOcclusion) .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(casingShift))) - .onRegister(CreateRegistrate.casingConnectivity( - (block, cc) -> cc.make(block, casingShift, (s, f) -> f.getAxis() != s.getValue(EncasedShaftBlock.AXIS)))) + .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift, + (s, f) -> f.getAxis() != s.getValue(EncasedShaftBlock.AXIS)))) .blockstate((c, p) -> axisBlock(c, p, blockState -> p.models() .getExistingFile(p.modLoc("block/encased_shaft/block_" + casing)), true)) .transform(BlockStressDefaults.setNoImpact()) @@ -72,6 +76,51 @@ public class BuilderTransformers { .build(); } + public static NonNullUnaryOperator> encasedCogwheel( + String casing, CTSpriteShiftEntry casingShift) { + return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.COGWHEEL.get()) + .blockstate((c, p) -> axisBlock(c, p, blockState -> p.models() + .withExistingParent(c.getName(), p.modLoc("block/encased_cogwheel/block")) + .texture("casing", Create.asResource("block/" + casing + "_casing")) + .texture("1", new ResourceLocation("block/stripped_dark_oak_log_top")) + .texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side")), false)) + .item() + .model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/encased_cogwheel/item")) + .texture("casing", Create.asResource("block/" + casing + "_casing")) + .texture("1", new ResourceLocation("block/stripped_dark_oak_log_top")) + .texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side"))) + .build(); + } + + public static NonNullUnaryOperator> encasedLargeCogwheel( + String casing, CTSpriteShiftEntry casingShift) { + return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.LARGE_COGWHEEL.get()) + .onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(casingShift))) + .blockstate((c, p) -> axisBlock(c, p, blockState -> p.models() + .withExistingParent(c.getName(), p.modLoc("block/encased_large_cogwheel/block")) + .texture("casing", Create.asResource("block/" + casing + "_casing")) + .texture("1", new ResourceLocation("block/stripped_dark_oak_log_top")) + .texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side_connected")), false)) + .item() + .model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/encased_large_cogwheel/item")) + .texture("casing", Create.asResource("block/" + casing + "_casing")) + .texture("1", new ResourceLocation("block/stripped_dark_oak_log_top")) + .texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side_connected"))) + .build(); + } + + private static BlockBuilder encasedCogwheelBase(BlockBuilder b, + String casing, CTSpriteShiftEntry casingShift, Supplier drop) { + return b.initialProperties(SharedProperties::stone) + .addLayer(() -> RenderType::cutoutMipped) + .properties(BlockBehaviour.Properties::noOcclusion) + .transform(BlockStressDefaults.setNoImpact()) + .loot((p, lb) -> p.dropOther(lb, drop.get())) + .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift, + (s, f) -> f.getAxis() == s.getValue(EncasedCogwheelBlock.AXIS)))); + + } + public static NonNullUnaryOperator> valveHandle( @Nullable DyeColor color) { return b -> b.initialProperties(SharedProperties::softMetal) diff --git a/src/main/java/com/simibubi/create/foundation/render/PartialBufferer.java b/src/main/java/com/simibubi/create/foundation/render/PartialBufferer.java index 2897487bc..de2e3e718 100644 --- a/src/main/java/com/simibubi/create/foundation/render/PartialBufferer.java +++ b/src/main/java/com/simibubi/create/foundation/render/PartialBufferer.java @@ -25,17 +25,35 @@ public class PartialBufferer { } public static SuperByteBuffer getFacing(PartialModel partial, BlockState referenceState, Direction facing) { - return CreateClient.BUFFER_CACHE.renderDirectionalPartial(partial, referenceState, facing, rotateToFace(facing)); + return CreateClient.BUFFER_CACHE.renderDirectionalPartial(partial, referenceState, facing, + rotateToFace(facing)); + } + + public static SuperByteBuffer getFacingVertical(PartialModel partial, BlockState referenceState, Direction facing) { + return CreateClient.BUFFER_CACHE.renderDirectionalPartial(partial, referenceState, facing, + rotateToFaceVertical(facing)); } public static Supplier rotateToFace(Direction facing) { return () -> { PoseStack stack = new PoseStack(); MatrixTransformStack.of(stack) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing)) - .unCentre(); + .centre() + .rotateY(AngleHelper.horizontalAngle(facing)) + .rotateX(AngleHelper.verticalAngle(facing)) + .unCentre(); + return stack; + }; + } + + public static Supplier rotateToFaceVertical(Direction facing) { + return () -> { + PoseStack stack = new PoseStack(); + MatrixTransformStack.of(stack) + .centre() + .rotateY(AngleHelper.horizontalAngle(facing)) + .rotateX(AngleHelper.verticalAngle(facing) + 90) + .unCentre(); return stack; }; } diff --git a/src/main/resources/assets/create/models/block/cogwheel.json b/src/main/resources/assets/create/models/block/cogwheel.json index a18d1655d..1bb7de2a4 100644 --- a/src/main/resources/assets/create/models/block/cogwheel.json +++ b/src/main/resources/assets/create/models/block/cogwheel.json @@ -3,10 +3,10 @@ "parent": "create:block/large_wheels", "texture_size": [32, 32], "textures": { - "0": "create:block/axis", + "0": "create:block/cogwheel_axis", "3": "create:block/axis_top", - "particle": "block/stripped_spruce_log", - "1_2": "create:block/cogwheel" + "1_2": "create:block/cogwheel", + "particle": "block/stripped_spruce_log_top" }, "elements": [ { @@ -28,10 +28,10 @@ "from": [-1, 6.5, 6.5], "to": [17, 9.5, 9.5], "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, + "north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, + "south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} } @@ -42,10 +42,10 @@ "to": [17, 9.5, 9.5], "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, + "north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, + "south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} } @@ -56,10 +56,10 @@ "to": [17, 9.5, 9.5], "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, + "north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, + "south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} } @@ -69,23 +69,23 @@ "from": [6.5, 6.5, -1], "to": [9.5, 9.5, 17], "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "east": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "south": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "west": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, + "north": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, + "east": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "south": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, + "west": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, "up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"}, "down": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"} } }, { "name": "GearCaseInner", - "from": [2, 7, 2], - "to": [14, 9, 14], + "from": [2, 6.55, 2], + "to": [14, 9.45, 14], "faces": { - "north": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "east": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "south": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "west": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, + "north": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, + "east": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, + "south": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, + "west": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, "up": {"uv": [4, 0, 10, 6], "texture": "#1_2"}, "down": {"uv": [4, 0, 10, 6], "texture": "#1_2"} } diff --git a/src/main/resources/assets/create/models/block/cogwheel_shaftless.json b/src/main/resources/assets/create/models/block/cogwheel_shaftless.json index 0d0f2c346..bc2820563 100644 --- a/src/main/resources/assets/create/models/block/cogwheel_shaftless.json +++ b/src/main/resources/assets/create/models/block/cogwheel_shaftless.json @@ -3,8 +3,8 @@ "parent": "create:block/large_wheels", "texture_size": [32, 32], "textures": { - "particle": "create:block/cogwheel", - "1_2": "create:block/cogwheel" + "1_2": "create:block/cogwheel", + "particle": "block/stripped_spruce_log_top" }, "elements": [ { @@ -12,10 +12,10 @@ "from": [-1, 6.5, 6.5], "to": [17, 9.5, 9.5], "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, + "north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, + "south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} } @@ -26,10 +26,10 @@ "to": [17, 9.5, 9.5], "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, + "north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, + "south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} } @@ -40,10 +40,10 @@ "to": [17, 9.5, 9.5], "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, + "north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, + "south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} } @@ -53,23 +53,23 @@ "from": [6.5, 6.5, -1], "to": [9.5, 9.5, 17], "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "east": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "south": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "west": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, + "north": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, + "east": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, + "south": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"}, + "west": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"}, "up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"}, "down": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"} } }, { "name": "GearCaseInner", - "from": [2, 7, 2], - "to": [14, 9, 14], + "from": [2, 6.55, 2], + "to": [14, 9.45, 14], "faces": { - "north": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "east": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "south": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "west": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, + "north": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, + "east": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, + "south": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, + "west": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, "up": {"uv": [4, 0, 10, 6], "texture": "#1_2"}, "down": {"uv": [4, 0, 10, 6], "texture": "#1_2"} } diff --git a/src/main/resources/assets/create/models/block/encased_cogwheel/block.json b/src/main/resources/assets/create/models/block/encased_cogwheel/block.json new file mode 100644 index 000000000..621cfb3af --- /dev/null +++ b/src/main/resources/assets/create/models/block/encased_cogwheel/block.json @@ -0,0 +1,55 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "casing": "create:block/andesite_casing", + "1": "block/stripped_spruce_log_top", + "side": "create:block/andesite_encased_cogwheel_side", + "particle": "#casing" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 6, 16], + "faces": { + "north": {"uv": [0, 10, 16, 16], "texture": "#side"}, + "east": {"uv": [0, 10, 16, 16], "texture": "#side"}, + "south": {"uv": [0, 10, 16, 16], "texture": "#side"}, + "west": {"uv": [0, 10, 16, 16], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#casing"} + } + }, + { + "from": [0, 6, 0], + "to": [16, 10, 16], + "faces": { + "north": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "north"}, + "east": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "east"}, + "south": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "south"}, + "west": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "west"} + } + }, + { + "from": [15.95, 6, 0.05], + "to": [0.05, 10, 15.95], + "faces": { + "north": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "north"}, + "east": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "west"}, + "south": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "south"}, + "west": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "east"} + } + }, + { + "from": [0, 10, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 16, 6], "texture": "#side"}, + "east": {"uv": [0, 0, 16, 6], "texture": "#side"}, + "south": {"uv": [0, 0, 16, 6], "texture": "#side"}, + "west": {"uv": [0, 0, 16, 6], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#casing"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_cogwheel/item.json b/src/main/resources/assets/create/models/block/encased_cogwheel/item.json new file mode 100644 index 000000000..283a50741 --- /dev/null +++ b/src/main/resources/assets/create/models/block/encased_cogwheel/item.json @@ -0,0 +1,153 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "casing": "create:block/andesite_casing", + "1": "block/stripped_spruce_log_top", + "side": "create:block/andesite_encased_cogwheel_side", + "1_2": "create:block/cogwheel", + "particle": "#casing" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 6, 16], + "faces": { + "north": {"uv": [0, 10, 16, 16], "texture": "#side"}, + "east": {"uv": [0, 10, 16, 16], "texture": "#side"}, + "south": {"uv": [0, 10, 16, 16], "texture": "#side"}, + "west": {"uv": [0, 10, 16, 16], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#casing"} + } + }, + { + "from": [0, 6, 0], + "to": [16, 10, 16], + "faces": { + "north": {"uv": [0, 6, 16, 10], "texture": "#side"}, + "east": {"uv": [0, 6, 16, 10], "texture": "#side"}, + "south": {"uv": [0, 6, 16, 10], "texture": "#side"}, + "west": {"uv": [0, 6, 16, 10], "texture": "#side"} + } + }, + { + "from": [15.95, 6, 0.05], + "to": [0.05, 10, 15.95], + "faces": { + "north": {"uv": [0, 6, 16, 10], "texture": "#side"}, + "east": {"uv": [0, 6, 16, 10], "texture": "#side"}, + "south": {"uv": [0, 6, 16, 10], "texture": "#side"}, + "west": {"uv": [0, 6, 16, 10], "texture": "#side"} + } + }, + { + "from": [0, 10, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 16, 6], "texture": "#side"}, + "east": {"uv": [0, 0, 16, 6], "texture": "#side"}, + "south": {"uv": [0, 0, 16, 6], "texture": "#side"}, + "west": {"uv": [0, 0, 16, 6], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#casing"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#1"} + } + }, + { + "name": "Gear", + "from": [-1, 6.025, 6.5], + "to": [17, 9.975, 9.5], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [7, 8, 16, 10], "texture": "#1_2"}, + "east": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"}, + "south": {"uv": [7, 8, 16, 10], "texture": "#1_2"}, + "west": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"}, + "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, + "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} + } + }, + { + "name": "Gear2", + "from": [-1, 6.025, 6.5], + "to": [17, 9.975, 9.5], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [7, 8, 16, 10], "texture": "#1_2"}, + "east": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"}, + "south": {"uv": [7, 8, 16, 10], "texture": "#1_2"}, + "west": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"}, + "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, + "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} + } + }, + { + "name": "Gear3", + "from": [6.5, 6.025, -1], + "to": [9.5, 9.975, 17], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"}, + "east": {"uv": [7, 8, 16, 10], "texture": "#1_2"}, + "south": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"}, + "west": {"uv": [7, 8, 16, 10], "texture": "#1_2"}, + "up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"}, + "down": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#1_2"} + } + }, + { + "name": "Gear4", + "from": [6.5, 6.025, -1], + "to": [9.5, 9.975, 17], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"}, + "east": {"uv": [7, 8, 16, 10], "texture": "#1_2"}, + "south": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"}, + "west": {"uv": [7, 8, 16, 10], "texture": "#1_2"}, + "up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"}, + "down": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"} + } + }, + { + "name": "GearCaseInner", + "from": [2, 6.5, 2], + "to": [14, 9.5, 14], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, + "east": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, + "south": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, + "west": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"}, + "up": {"uv": [4, 0, 10, 6], "texture": "#1_2"}, + "down": {"uv": [4, 0, 10, 6], "texture": "#1_2"} + } + }, + { + "name": "GearCaseOuter", + "from": [4, 6, 4], + "to": [12, 10, 12], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, + "east": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, + "south": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, + "west": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, + "up": {"uv": [0, 0, 4, 4], "texture": "#1_2"}, + "down": {"uv": [0, 0, 4, 4], "texture": "#1_2"} + } + } + ], + "groups": [ + 0, + 1, + 2, + 3, + { + "name": "cogwheel", + "origin": [8, 8, 8], + "color": 0, + "children": [4, 5, 6, 7, 8, 9] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_large_cogwheel/block.json b/src/main/resources/assets/create/models/block/encased_large_cogwheel/block.json new file mode 100644 index 000000000..5c817316e --- /dev/null +++ b/src/main/resources/assets/create/models/block/encased_large_cogwheel/block.json @@ -0,0 +1,35 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "casing": "create:block/andesite_casing", + "1": "block/stripped_spruce_log_top", + "side": "create:block/andesite_encased_cogwheel_side_connected", + "particle": "#casing" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 6, 16], + "faces": { + "north": {"uv": [8, 13, 16, 16], "texture": "#side"}, + "east": {"uv": [8, 13, 16, 16], "texture": "#side"}, + "south": {"uv": [8, 13, 16, 16], "texture": "#side"}, + "west": {"uv": [8, 13, 16, 16], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#casing"} + } + }, + { + "from": [0, 10, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [8, 8, 16, 11], "texture": "#side"}, + "east": {"uv": [8, 8, 16, 11], "texture": "#side"}, + "south": {"uv": [8, 8, 16, 11], "texture": "#side"}, + "west": {"uv": [8, 8, 16, 11], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#casing"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_large_cogwheel/item.json b/src/main/resources/assets/create/models/block/encased_large_cogwheel/item.json new file mode 100644 index 000000000..21cc17a7e --- /dev/null +++ b/src/main/resources/assets/create/models/block/encased_large_cogwheel/item.json @@ -0,0 +1,249 @@ +{ + "credit": "Made with Blockbench", + "parent": "create:block/large_wheels", + "textures": { + "casing": "create:block/andesite_casing", + "1": "block/stripped_spruce_log_top", + "side": "create:block/andesite_encased_cogwheel_side_connected", + "4": "create:block/large_cogwheel", + "particle": "#casing" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 6, 16], + "faces": { + "north": {"uv": [8, 13, 16, 16], "texture": "#side"}, + "east": {"uv": [8, 13, 16, 16], "texture": "#side"}, + "south": {"uv": [8, 13, 16, 16], "texture": "#side"}, + "west": {"uv": [8, 13, 16, 16], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#casing"} + } + }, + { + "from": [0, 10, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [8, 8, 16, 11], "texture": "#side"}, + "east": {"uv": [8, 8, 16, 11], "texture": "#side"}, + "south": {"uv": [8, 8, 16, 11], "texture": "#side"}, + "west": {"uv": [8, 8, 16, 11], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#casing"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#1"} + } + }, + { + "name": "GearCaseInnerRotated", + "from": [-2, 6.525, -2], + "to": [18, 9.475, 18], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "east": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "south": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "west": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "up": {"uv": [0, 0, 10, 10], "texture": "#4"}, + "down": {"uv": [0, 0, 10, 10], "texture": "#4"} + } + }, + { + "name": "Gear2", + "from": [-7, 6.025, 6.5], + "to": [23, 9.975, 9.5], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "east": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "west": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} + } + }, + { + "name": "Gear3", + "from": [-7, 6.025, 6.5], + "to": [23, 9.975, 9.5], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "east": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "west": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} + } + }, + { + "name": "Gear4", + "from": [6.5, 6.025, -7], + "to": [9.5, 9.975, 23], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "south": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "west": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "GearCaseInner", + "from": [-2, 6.5, -2], + "to": [18, 9.5, 18], + "faces": { + "north": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "east": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "south": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "west": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "up": {"uv": [0, 0, 10, 10], "texture": "#4"}, + "down": {"uv": [0, 0, 10, 10], "texture": "#4"} + } + }, + { + "name": "GearCaseOuter", + "from": [1, 5.975, 1], + "to": [15, 10.025, 15], + "faces": { + "north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, + "east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, + "south": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, + "west": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, + "up": {"uv": [1.5, 1.5, 8.5, 8.5], "texture": "#4"}, + "down": {"uv": [1.5, 1.5, 8.5, 8.5], "texture": "#4"} + } + }, + { + "name": "GearCaseOuter", + "from": [-1, 5.975, 1], + "to": [1, 10.025, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "south": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "west": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "up": {"uv": [12, 0, 13, 7], "rotation": 180, "texture": "#4"}, + "down": {"uv": [13, 0, 14, 7], "rotation": 180, "texture": "#4"} + } + }, + { + "name": "GearCaseOuter", + "from": [1, 5.975, -1], + "to": [15, 10.025, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "east": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "west": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "up": {"uv": [13, 0, 14, 7], "rotation": 270, "texture": "#4"}, + "down": {"uv": [12, 0, 13, 7], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "GearCaseOuter", + "from": [15, 5.975, 1], + "to": [17, 10.025, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "east": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "south": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "up": {"uv": [15, 0, 16, 7], "texture": "#4"}, + "down": {"uv": [14, 0, 15, 7], "texture": "#4"} + } + }, + { + "name": "GearCaseOuter", + "from": [1, 5.975, 15], + "to": [15, 10.025, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "south": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "west": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "up": {"uv": [14, 0, 15, 7], "rotation": 90, "texture": "#4"}, + "down": {"uv": [15, 0, 16, 7], "rotation": 270, "texture": "#4"} + } + }, + { + "name": "Gear", + "from": [6.5, 6.025, -7], + "to": [9.5, 9.975, 23], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "south": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "west": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "Gear5", + "from": [-7, 6.025, 6.5], + "to": [23, 9.975, 9.5], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "east": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "west": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} + } + }, + { + "name": "Gear6", + "from": [6.5, 6.025, -7], + "to": [9.5, 9.975, 23], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "south": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "west": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "Gear7", + "from": [-7, 6.025, 6.5], + "to": [23, 9.975, 9.5], + "faces": { + "north": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "east": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "west": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} + } + }, + { + "name": "Gear8", + "from": [6.5, 6.025, -7], + "to": [9.5, 9.975, 23], + "faces": { + "north": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "south": {"uv": [10, 9, 11.5, 11], "texture": "#4"}, + "west": {"uv": [0, 13, 15, 15], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} + } + } + ], + "groups": [ + 0, + 1, + { + "name": "large_cogwheel", + "origin": [8, 8, 8], + "color": 0, + "children": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/large_cogwheel.json b/src/main/resources/assets/create/models/block/large_cogwheel.json index c21f61a1b..9d8023293 100644 --- a/src/main/resources/assets/create/models/block/large_cogwheel.json +++ b/src/main/resources/assets/create/models/block/large_cogwheel.json @@ -3,22 +3,22 @@ "parent": "create:block/large_wheels", "texture_size": [32, 32], "textures": { - "0": "create:block/axis", + "0": "create:block/cogwheel_axis", "3": "create:block/axis_top", - "particle": "block/stripped_spruce_log", - "4": "create:block/large_cogwheel" + "4": "create:block/large_cogwheel", + "particle": "block/stripped_spruce_log" }, "elements": [ { "name": "GearCaseInnerRotated", - "from": [-2, 6.9, -2], - "to": [18, 8.9, 18], + "from": [-2, 6.625, -2], + "to": [18, 9.375, 18], "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "east": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "south": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "west": {"uv": [0, 10, 10, 11], "texture": "#4"}, + "north": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "east": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "south": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "west": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, "up": {"uv": [0, 0, 10, 10], "texture": "#4"}, "down": {"uv": [0, 0, 10, 10], "texture": "#4"} } @@ -39,63 +39,63 @@ }, { "name": "Gear2", - "from": [-7, 6.5, 6.5], - "to": [23, 9.5, 9.5], + "from": [-7, 6.525, 6.5], + "to": [23, 9.475, 9.5], "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "north": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "south": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "texture": "#4"} + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} } }, { "name": "Gear3", - "from": [-7, 6.5, 6.5], - "to": [23, 9.5, 9.5], + "from": [-7, 6.525, 6.5], + "to": [23, 9.475, 9.5], "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "north": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "south": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "texture": "#4"} + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} } }, { "name": "Gear4", - "from": [6.5, 6.5, -7], - "to": [9.5, 9.5, 23], + "from": [6.5, 6.525, -7], + "to": [9.5, 9.475, 23], "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "east": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "west": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"} + "west": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} } }, { "name": "GearCaseInner", - "from": [-2, 7, -2], - "to": [18, 9, 18], + "from": [-2, 6.6, -2], + "to": [18, 9.4, 18], "faces": { - "north": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "east": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "south": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "west": {"uv": [0, 10, 10, 11], "texture": "#4"}, + "north": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "east": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "south": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "west": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, "up": {"uv": [0, 0, 10, 10], "texture": "#4"}, "down": {"uv": [0, 0, 10, 10], "texture": "#4"} } }, { "name": "GearCaseOuter", - "from": [1, 5.5, 1], - "to": [15, 10.5, 15], + "from": [1, 5.975, 1], + "to": [15, 10.025, 15], "faces": { "north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, "east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, @@ -107,122 +107,122 @@ }, { "name": "GearCaseOuter", - "from": [-1, 5.5, 1], - "to": [1, 10.5, 15], + "from": [-1, 5.975, 1], + "to": [1, 10.025, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"}, - "east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "south": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"}, - "west": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "up": {"uv": [7, 15, 14, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [7, 15, 14, 16], "rotation": 90, "texture": "#4"} + "north": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "south": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "west": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "up": {"uv": [12, 0, 13, 7], "rotation": 180, "texture": "#4"}, + "down": {"uv": [13, 0, 14, 7], "rotation": 180, "texture": "#4"} } }, { "name": "GearCaseOuter", - "from": [15, 5.5, 1], - "to": [17, 10.5, 15], + "from": [1, 5.975, -1], + "to": [15, 10.025, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"}, - "east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "south": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"}, - "west": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "up": {"uv": [0, 15, 7, 16], "rotation": 270, "texture": "#4"}, - "down": {"uv": [0, 15, 7, 16], "rotation": 270, "texture": "#4"} + "north": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "east": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "west": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "up": {"uv": [13, 0, 14, 7], "rotation": 270, "texture": "#4"}, + "down": {"uv": [12, 0, 13, 7], "rotation": 90, "texture": "#4"} } }, { "name": "GearCaseOuter", - "from": [1, 5.5, -1], - "to": [15, 10.5, 1], + "from": [15, 5.975, 1], + "to": [17, 10.025, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "east": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"}, - "south": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "west": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"}, - "up": {"uv": [7, 14, 14, 15], "rotation": 180, "texture": "#4"}, - "down": {"uv": [0, 14, 7, 15], "texture": "#4"} + "north": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "east": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "south": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "up": {"uv": [15, 0, 16, 7], "texture": "#4"}, + "down": {"uv": [14, 0, 15, 7], "texture": "#4"} } }, { "name": "GearCaseOuter", - "from": [1, 5.5, 15], - "to": [15, 10.5, 17], + "from": [1, 5.975, 15], + "to": [15, 10.025, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "east": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"}, - "south": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "west": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"}, - "up": {"uv": [0, 14, 7, 15], "texture": "#4"}, - "down": {"uv": [7, 14, 14, 15], "rotation": 180, "texture": "#4"} + "east": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "south": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "west": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "up": {"uv": [14, 0, 15, 7], "rotation": 90, "texture": "#4"}, + "down": {"uv": [15, 0, 16, 7], "rotation": 270, "texture": "#4"} } }, { "name": "Gear", - "from": [6.5, 6.5, -7], - "to": [9.5, 9.5, 23], + "from": [6.5, 6.525, -7], + "to": [9.5, 9.475, 23], "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "east": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "west": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"} + "west": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} } }, { "name": "Gear5", - "from": [-7, 6.5, 6.5], - "to": [23, 9.5, 9.5], + "from": [-7, 6.525, 6.5], + "to": [23, 9.475, 9.5], "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "north": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "south": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "texture": "#4"} + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} } }, { "name": "Gear6", - "from": [6.5, 6.5, -7], - "to": [9.5, 9.5, 23], + "from": [6.5, 6.525, -7], + "to": [9.5, 9.475, 23], "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "east": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "west": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"} + "west": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} } }, { "name": "Gear7", - "from": [-7, 6.5, 6.5], - "to": [23, 9.5, 9.5], + "from": [-7, 6.525, 6.5], + "to": [23, 9.475, 9.5], "faces": { - "north": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "north": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "south": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "texture": "#4"} + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} } }, { "name": "Gear8", - "from": [6.5, 6.5, -7], - "to": [9.5, 9.5, 23], + "from": [6.5, 6.525, -7], + "to": [9.5, 9.475, 23], "faces": { "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "east": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "west": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"} + "west": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} } } ] diff --git a/src/main/resources/assets/create/models/block/large_cogwheel_shaftless.json b/src/main/resources/assets/create/models/block/large_cogwheel_shaftless.json new file mode 100644 index 000000000..05b5d70ee --- /dev/null +++ b/src/main/resources/assets/create/models/block/large_cogwheel_shaftless.json @@ -0,0 +1,213 @@ +{ + "credit": "Made with Blockbench", + "parent": "create:block/large_wheels", + "texture_size": [32, 32], + "textures": { + "4": "create:block/large_cogwheel", + "particle": "block/stripped_spruce_log" + }, + "elements": [ + { + "name": "GearCaseInnerRotated", + "from": [-2, 6.625, -2], + "to": [18, 9.375, 18], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "east": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "south": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "west": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "up": {"uv": [0, 0, 10, 10], "texture": "#4"}, + "down": {"uv": [0, 0, 10, 10], "texture": "#4"} + } + }, + { + "name": "Gear2", + "from": [-7, 6.525, 6.5], + "to": [23, 9.475, 9.5], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} + } + }, + { + "name": "Gear3", + "from": [-7, 6.525, 6.5], + "to": [23, 9.475, 9.5], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} + } + }, + { + "name": "Gear4", + "from": [6.5, 6.525, -7], + "to": [9.5, 9.475, 23], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "west": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "GearCaseInner", + "from": [-2, 6.6, -2], + "to": [18, 9.4, 18], + "faces": { + "north": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "east": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "south": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "west": {"uv": [0, 10, 10, 11.5], "texture": "#4"}, + "up": {"uv": [0, 0, 10, 10], "texture": "#4"}, + "down": {"uv": [0, 0, 10, 10], "texture": "#4"} + } + }, + { + "name": "GearCaseOuter", + "from": [1, 5.975, 1], + "to": [15, 10.025, 15], + "faces": { + "north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, + "east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, + "south": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, + "west": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, + "up": {"uv": [1.5, 1.5, 8.5, 8.5], "texture": "#4"}, + "down": {"uv": [1.5, 1.5, 8.5, 8.5], "texture": "#4"} + } + }, + { + "name": "GearCaseOuter", + "from": [-1, 5.975, 1], + "to": [1, 10.025, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "south": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "west": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "up": {"uv": [12, 0, 13, 7], "rotation": 180, "texture": "#4"}, + "down": {"uv": [13, 0, 14, 7], "rotation": 180, "texture": "#4"} + } + }, + { + "name": "GearCaseOuter", + "from": [1, 5.975, -1], + "to": [15, 10.025, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "east": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "west": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "up": {"uv": [13, 0, 14, 7], "rotation": 270, "texture": "#4"}, + "down": {"uv": [12, 0, 13, 7], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "GearCaseOuter", + "from": [15, 5.975, 1], + "to": [17, 10.025, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "east": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "south": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "up": {"uv": [15, 0, 16, 7], "texture": "#4"}, + "down": {"uv": [14, 0, 15, 7], "texture": "#4"} + } + }, + { + "name": "GearCaseOuter", + "from": [1, 5.975, 15], + "to": [15, 10.025, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"}, + "south": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"}, + "west": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"}, + "up": {"uv": [14, 0, 15, 7], "rotation": 90, "texture": "#4"}, + "down": {"uv": [15, 0, 16, 7], "rotation": 270, "texture": "#4"} + } + }, + { + "name": "Gear", + "from": [6.5, 6.525, -7], + "to": [9.5, 9.475, 23], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "west": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "Gear5", + "from": [-7, 6.525, 6.5], + "to": [23, 9.475, 9.5], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} + } + }, + { + "name": "Gear6", + "from": [6.5, 6.525, -7], + "to": [9.5, 9.475, 23], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "west": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "Gear7", + "from": [-7, 6.525, 6.5], + "to": [23, 9.475, 9.5], + "faces": { + "north": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "south": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "texture": "#4"} + } + }, + { + "name": "Gear8", + "from": [6.5, 6.525, -7], + "to": [9.5, 9.475, 23], + "faces": { + "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "east": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, + "west": {"uv": [0, 13, 15, 14.5], "texture": "#4"}, + "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/andesite_encased_cogwheel_side.png b/src/main/resources/assets/create/textures/block/andesite_encased_cogwheel_side.png new file mode 100644 index 0000000000000000000000000000000000000000..4185e173cd75012ed2267efa0f1df5b3c09db19c GIT binary patch literal 464 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%LiO0G|-oLS_L};Jrq-7Frl!i8%BJ?VvdZ%MmNq{#nNVx_D0}5d zJ0&+GnGkFFt_c&O?3Hr-bhCYRQav?dom7g;i({RXs-jFfQY{Mtb?h{Re9UE{TvQUh z^+K)WgKSkCbw!&JtqOwlQam*B1GQtFl>N-4f%c2P=r{wUG)sc~g8vf<7=peiv;#G9 z7I;J!GcfQS24TkI`72U@f-5~;978mML;bt?4k_@oljO5YMv33v)9T!7nZInStrr5a`v{jYqrjPE0TERYw!2x zE#C5+yZ9cPocnC!x4l)i<2(Nc@wC;#8;<@hmB=ZKo-1IzL+02D&Wnkj$4aWd*Ub&v zUuM-6^fkko!+*~QBa5!rPKQnYC@1&`8B04e7`yVy%oEx)C8&-;Ym(slMFz$$Ku0rp My85}Sb4q9e0H~b3qW}N^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/andesite_encased_cogwheel_side_connected.png b/src/main/resources/assets/create/textures/block/andesite_encased_cogwheel_side_connected.png new file mode 100644 index 0000000000000000000000000000000000000000..874778b9a96e87c25cc222fcdce3712165fe7d7a GIT binary patch literal 899 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCikH1^9%xCZ{Dw#YPpE7q@k^*VH#OwYJnZHC5JBHnq2vRhHMcv~^9G;AbWi zYAqjSuN-NoZC8$lxW$WV%eBrSs0|7;-Qfrs2%I1>}Mt&>#Q8- zq!ekdl;x|F;H4Ystn6tb<7X)wBpPGPS zjqmSsK$AHOJR*x382Ao@Fyrz36)C_7IN|By7-Hey8`NEN%Rpd?&P8^k!lb6c$q6Zw zB`l9#n6QO6FZ1%3xy%0lx4tW!w87W<^4Ay7%4!x{-_^U_RDA9QvrU(^Udr;%PgYi_ z9r>K+UU2o1#)sPd8G<_E__hV zD_7jf{LlDl5%z0x789Uh9#JFWY#tl4JH&6x(b-*|nPJ^On8wwj;U^t2>m zALV{l(w}r7dHdzitxw;#nJlrWvX5GSUB2L&yr_5StdwIjtdqY~E>Y;RvE|s1@W@j!{Tk_{SqOQv{nI(Q`>%_{iPuui&E^Tv%Qd{h4S%kR>)F9|I8quKMQ`qF;? z%U@>$(}&gXIT3#^tC(KnH|^_tn6mi)s#B|1-TIk$_~N6gpG*H_eO>P1Id}1am!J5z z{MpbyP5#@(PlxRuwCCS9znr-3lRKyVpEboimM2#Id3b$Kg+|!+%bGtIo(nWMVs+;6 z+{z`g4=+@e$<%c``mvAw?aKqKg_F1cbx1PZA$o14_rYVb&;RgS`gcA&ux^1ZFrpbe MUHx3vIVCg!0CAn5761SM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/brass_encased_cogwheel_side.png b/src/main/resources/assets/create/textures/block/brass_encased_cogwheel_side.png new file mode 100644 index 0000000000000000000000000000000000000000..917fbae451cf2fed0e058f813052172ca7c65de7 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}}0G|-oiV)qV5RJ}Qoy9d4m)A!hneM%(*KJ*kowb^vm5QK&9G|DYxRbVs zou*K*g_OUM#EdeNN%^K7DP~1J+CVdk?%XT}Qlce6e!>5-00!-wwXc8*I14-?feQH! zfiR<}hF1enu+G!PF+?Lc*RPxJhyur9OHtNu7VrP>|H`#pb@vk~>4ghf7fqRV;Jf?$ z>szNhTC;VV%gVy{$vo=)0xnm4LQ;dzc4{o%_uE#O<&2d?KYz=%@67G#F{KPlPgnCD z_~hQP=ibftodJjK1evcYiM%eq^Ki@UM~^@BZkXf0r{fv_vp)>N7Tg9UMg9MQE@AL= L^>bP0l+XkK=d*;D literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/brass_encased_cogwheel_side_connected.png b/src/main/resources/assets/create/textures/block/brass_encased_cogwheel_side_connected.png new file mode 100644 index 0000000000000000000000000000000000000000..90fbcb9818cb640850664dbe6b9a1cd722e09c67 GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCil=1AIbUD?)UeLNq#Kbr#oHTwWi2WV-jBUbl5EcGhZwRw{x9a(tfp;!fHk zcA7%L7E=C35;Mw7Cgq!Uq?i@?XamhCx^uG_NQssN`33*S0vNP!*1iHN;4JWn1S;e^ z1j3A>8eR=R!GE4Ejv*HQy_3564k_@scJE+p)-?M6Kl&{Ixk4%eJ8I(-;82k6omhpHnaiHX?J{<2Ilf3RFjVJFkA%ZqZrP4{-J?9( zO4Cw}Wt@6BGkW-p;`JCF90kx~lION>plxE5~ zGVq;HWt?T$`)ZQS#>Ph+c5lwKK4?i7=Hu<0001iRAhyaQFh2c^|Cvt|WT^O>!36=Jjo{3VR0sLy~@c{eOXxi5XF(TVEP)hgU|3+c>_7mR4I}dN?iZ|002ovPDHLkV1nk6bD;nL diff --git a/src/main/resources/assets/create/textures/block/cogwheel_axis.png b/src/main/resources/assets/create/textures/block/cogwheel_axis.png new file mode 100644 index 0000000000000000000000000000000000000000..1b4c95f88715ae6a12ccf246c38552466b274ae4 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|s0G|-o*x1;zva+0U}oXpFKio*3;0X`wF8Gd>tp$3f!mQ_(E zm667Y-g-@mRs}(N#Uc7pE-Il`@=b}B9jTT;&Bps){sK~bB|(0{|B(TM>w!BbfHIr~ z9+AaB1&2VGQB=dL0cfL-r;B5Vh5y{ijd_O+I9v|0tl0hYe|>rR1GW0etJYjPmo@vr zbLO0I7jLGy{7Tup(q#`0ujsH|+&BGKS^Vk6?2iNLt0zV^9BoWwh;dRie%UDhnXT_a zMbBaxff*vU%Pj9-zqC-H zXOetHGuy1BCNMoSN## zm2|PQb(eg(;IRBgL%*C)ps$wH@xTl68@EOY2hEY8VREzhjUQZQz)5g*U;my_(@W=Ye<6!v3?(6RtPk cy8gYqjip$2!qog)V0bfly85}Sb4q9e0Ad2sp#T5? delta 421 zcmV;W0b2ft1hWH>7=Hu<0001iRAI9>}SVo?} z0)TcH0A@(PA$SY+1Xjfc><~YG0U;r|o_C-P9@1n^m`AHaE~jp{=OBvW>mM{{Q2m9f zIonairL`~u`LQ-!5HrTJEv2kY-BM1|Th>N!G{>3?6CQ&(!Bc|KSTXSfPoBU5JZTUw P00000NkvXXu0mjfLt?7K